feat(codecs): per-codec level defaults, RSYNC_*_LIST auto, zlibx reclassify
- rsync 3.4.1 per-codec defaults (zstd 3, zlib/zlibx 6, lz4 level ignored) and per-codec clamping; explicit --zl still wins - auto resolves via whitespace-separated RSYNC_COMPRESS_LIST / RSYNC_CHECKSUM_LIST (first supported wins; all-unknown exits 4) - zlibx reclassified: FastSync's zlib stream already excludes matched data, so its tree/stdout/exit match zlib - --compress/-z and --compress-choice flip to parity (113/12/32)
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
#include <threads.h>
|
||||
@@ -578,7 +579,43 @@ static void test_getdelim_bounded() {
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
static int test_env_resolver(const char* name) {
|
||||
if (strcasecmp(name, "alpha") == 0)
|
||||
return 10;
|
||||
if (strcasecmp(name, "beta") == 0)
|
||||
return 20;
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void test_env_choice_first_parsing() {
|
||||
const char* var = "FASTSYNC_TEST_CHOICE_LIST";
|
||||
bool specified = true;
|
||||
unsetenv(var);
|
||||
EXPECT_EQ_INT(env_choice_first(var, test_env_resolver, &specified), -1);
|
||||
EXPECT_FALSE(specified);
|
||||
|
||||
/* Unknown entries are skipped, case-insensitive, first supported wins. */
|
||||
setenv(var, "bogus BETA alpha", 1);
|
||||
EXPECT_EQ_INT(env_choice_first(var, test_env_resolver, &specified), 20);
|
||||
EXPECT_TRUE(specified);
|
||||
|
||||
/* The client half ends at '&'. */
|
||||
setenv(var, "alpha & beta", 1);
|
||||
EXPECT_EQ_INT(env_choice_first(var, test_env_resolver, &specified), 10);
|
||||
|
||||
/* Blank means "unspecified"; all-unknown means "specified but no match". */
|
||||
setenv(var, " ", 1);
|
||||
EXPECT_EQ_INT(env_choice_first(var, test_env_resolver, &specified), -1);
|
||||
EXPECT_FALSE(specified);
|
||||
setenv(var, "nope,alpha", 1);
|
||||
EXPECT_EQ_INT(env_choice_first(var, test_env_resolver, &specified), -1);
|
||||
EXPECT_TRUE(specified);
|
||||
|
||||
unsetenv(var);
|
||||
}
|
||||
|
||||
void test_shared_utils() {
|
||||
test_env_choice_first_parsing();
|
||||
test_path_index_bounded();
|
||||
test_path_index_semantics();
|
||||
test_getdelim_bounded();
|
||||
|
||||
Reference in New Issue
Block a user