Merge remote-tracking branch 'origin/feat/rsync-info' into dev
This commit is contained in:
@@ -741,6 +741,51 @@ class TestProgress:
|
||||
assert "Done." in output
|
||||
|
||||
|
||||
class TestInfo:
|
||||
def test_info_copy_reports_transfers(self, shared_server):
|
||||
clean_dir(DEST_DIR)
|
||||
result, _ = run_client(
|
||||
SOURCE_DIR, DEST_DIR,
|
||||
flags=["--info=copy"],
|
||||
port=shared_server.port,
|
||||
)
|
||||
assert result.returncode == 0, f"Info sync failed: {(result.stderr or result.stdout)[:200]}"
|
||||
output = result.stdout + result.stderr
|
||||
assert "[INFO]" in output and "Transferring" in output
|
||||
|
||||
def test_info_stats_reports_multithreaded_transfer(self, shared_server):
|
||||
clean_dir(DEST_DIR)
|
||||
result, _ = run_client(
|
||||
SOURCE_DIR, DEST_DIR,
|
||||
flags=["-m", "--info=stats"],
|
||||
port=shared_server.port,
|
||||
)
|
||||
assert result.returncode == 0, f"Info stats sync failed: {(result.stderr or result.stdout)[:200]}"
|
||||
output = result.stdout + result.stderr
|
||||
assert "[INFO]" in output and "Transfer summary:" in output
|
||||
|
||||
def test_info_rejects_unknown_flag(self):
|
||||
result, _ = run_client(
|
||||
SOURCE_DIR, DEST_DIR,
|
||||
flags=["--info=unknown"],
|
||||
)
|
||||
assert result.returncode != 0
|
||||
assert "unsupported --info flag" in result.stderr
|
||||
|
||||
@pytest.mark.parametrize("flags", [
|
||||
["--info=none", "--verbose"],
|
||||
["--verbose", "--info=none"],
|
||||
])
|
||||
def test_info_none_suppresses_verbose_info(self, shared_server, flags):
|
||||
clean_dir(DEST_DIR)
|
||||
result, _ = run_client(SOURCE_DIR, DEST_DIR, flags=flags, port=shared_server.port)
|
||||
assert result.returncode == 0, f"Info sync failed: {(result.stderr or result.stdout)[:200]}"
|
||||
output = result.stdout + result.stderr
|
||||
assert "[INFO]" not in output
|
||||
assert "Transferring" not in output
|
||||
assert "Transfer summary:" not in output
|
||||
|
||||
|
||||
class TestBandwidthLimit:
|
||||
def test_bwlimit_runs(self, shared_server):
|
||||
clean_dir(DEST_DIR)
|
||||
|
||||
+46
-2
@@ -561,7 +561,6 @@ static void test_parse_args_rejects_unimplemented_options() {
|
||||
"-i",
|
||||
"--itemize-changes",
|
||||
"--out-format",
|
||||
"--info",
|
||||
"--list-only",
|
||||
"--append",
|
||||
"--append-verify",
|
||||
@@ -646,6 +645,48 @@ static void test_parse_args_update() {
|
||||
config_delete(cfg);
|
||||
}
|
||||
|
||||
static void test_parse_args_info_flags() {
|
||||
Config* cfg = config_create();
|
||||
char* argv[] = {"fastsync", "--info=copy,skip", "/src", "/dst"};
|
||||
int positional_args[2];
|
||||
int positional_count = 0;
|
||||
|
||||
EXPECT_EQ_INT(parse_args(cfg, 4, argv, positional_args, &positional_count), 0);
|
||||
EXPECT_EQ_INT(cfg->info_level, LOG_INFO_COPY | LOG_INFO_SKIP);
|
||||
EXPECT_EQ_INT(get_log_info_flags(), LOG_INFO_COPY | LOG_INFO_SKIP);
|
||||
config_delete(cfg);
|
||||
}
|
||||
|
||||
static void test_parse_args_info_verbose_order() {
|
||||
char* argv_info_first[] = {"fastsync", "--info=none", "--verbose", "/src", "/dst"};
|
||||
char* argv_verbose_first[] = {"fastsync", "--verbose", "--info=none", "/src", "/dst"};
|
||||
int positional_args[2];
|
||||
int positional_count = 0;
|
||||
|
||||
Config* cfg = config_create();
|
||||
EXPECT_EQ_INT(parse_args(cfg, 5, argv_info_first, positional_args, &positional_count), 0);
|
||||
EXPECT_EQ_INT(cfg->info_level, 0);
|
||||
EXPECT_EQ_INT(get_log_info_flags(), 0);
|
||||
config_delete(cfg);
|
||||
|
||||
cfg = config_create();
|
||||
positional_count = 0;
|
||||
EXPECT_EQ_INT(parse_args(cfg, 5, argv_verbose_first, positional_args, &positional_count), 0);
|
||||
EXPECT_EQ_INT(cfg->info_level, 0);
|
||||
EXPECT_EQ_INT(get_log_info_flags(), 0);
|
||||
config_delete(cfg);
|
||||
}
|
||||
|
||||
static void test_parse_args_rejects_invalid_info_flag() {
|
||||
Config* cfg = config_create();
|
||||
char* argv[] = {"fastsync", "--info=copy,unknown", "/src", "/dst"};
|
||||
int positional_args[2];
|
||||
int positional_count = 0;
|
||||
|
||||
EXPECT_EQ_INT(parse_args(cfg, 4, argv, positional_args, &positional_count), -1);
|
||||
config_delete(cfg);
|
||||
}
|
||||
|
||||
/* Test parse_args with --archive flag */
|
||||
static void test_parse_args_archive() {
|
||||
Config* cfg = config_create();
|
||||
@@ -909,7 +950,7 @@ void test_client_cli() {
|
||||
test_parse_args_invalid_server_port();
|
||||
test_parse_args_invalid_compression_level();
|
||||
test_parse_args_valid_compression_level();
|
||||
test_parse_args_debug_flags();
|
||||
test_parse_args_debug_flags();
|
||||
test_parse_args_debug_help();
|
||||
test_parse_args_debug_flags_validation();
|
||||
test_parse_args_modify_window();
|
||||
@@ -924,6 +965,9 @@ test_parse_args_debug_flags();
|
||||
test_parse_args_quiet();
|
||||
test_parse_args_human_readable();
|
||||
test_parse_args_update();
|
||||
test_parse_args_info_flags();
|
||||
test_parse_args_info_verbose_order();
|
||||
test_parse_args_rejects_invalid_info_flag();
|
||||
test_parse_args_archive();
|
||||
test_parse_args_fsync();
|
||||
test_parse_args_existing();
|
||||
|
||||
Reference in New Issue
Block a user