Remove unimplemented CLI options
CI / lint (pull_request) Failing after 3s
CI / build-and-test (pull_request) Has been skipped
CI / sanitizers (address) (pull_request) Has been skipped
CI / sanitizers (undefined) (pull_request) Has been skipped
CI / fuzz-build (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / valgrind (pull_request) Has been skipped
CI / lint (pull_request) Failing after 3s
CI / build-and-test (pull_request) Has been skipped
CI / sanitizers (address) (pull_request) Has been skipped
CI / sanitizers (undefined) (pull_request) Has been skipped
CI / fuzz-build (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / valgrind (pull_request) Has been skipped
This commit is contained in:
@@ -207,6 +207,34 @@ static void test_parse_args_unknown_option() {
|
||||
config_delete(cfg);
|
||||
}
|
||||
|
||||
/* Parsed-but-unimplemented options must fail instead of being silently accepted. */
|
||||
static void test_parse_args_rejects_unimplemented_options() {
|
||||
static const char* const options[] = {
|
||||
"-q", "--quiet", "--silent", "--queue-size",
|
||||
"-H", "--hard-links", "-A", "--acls",
|
||||
"-X", "--xattrs", "-D", "--devices",
|
||||
"-i", "--itemize-changes", "--out-format", "--info",
|
||||
"--debug", "--list-only", "-h", "--human-readable",
|
||||
"-u", "--update", "--append", "--append-verify",
|
||||
"--delete-excluded", "--delete-after", "--max-delete", "--filter",
|
||||
"--files-from", "--cvs-exclude", "--prune-empty-dirs", "-R",
|
||||
"--relative", "-e", "--rsh", "--rsync-path",
|
||||
"--temp-dir", "--compare-dest", "--copy-dest", "--link-dest",
|
||||
"--delete-before", "--address", "--bind-address", "--ipv6",
|
||||
"--ipv4", "--daemon", "--config", "--server",
|
||||
"--checksum", "--compress-choice"};
|
||||
|
||||
for (size_t i = 0; i < sizeof(options) / sizeof(options[0]); i++) {
|
||||
Config* cfg = config_create();
|
||||
char* argv[] = {"fastsync", (char*)options[i], "dummy", "/src", "/dst"};
|
||||
int positional_args[2];
|
||||
int positional_count = 0;
|
||||
|
||||
EXPECT_EQ_INT(parse_args(cfg, 5, 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();
|
||||
@@ -238,5 +266,6 @@ void test_client_cli() {
|
||||
test_parse_args_invalid_compression_level();
|
||||
test_parse_args_valid_compression_level();
|
||||
test_parse_args_unknown_option();
|
||||
test_parse_args_rejects_unimplemented_options();
|
||||
test_parse_args_archive();
|
||||
}
|
||||
|
||||
+12
-12
@@ -19,7 +19,7 @@ static void test_scanner_single_file() {
|
||||
create_test_file(file1, content1);
|
||||
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, NULL, 0, NULL, 0, 0, 0,
|
||||
0, false, false, false, false, false);
|
||||
0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -48,7 +48,7 @@ static void test_scanner_multiple_files() {
|
||||
create_test_file(file2, content2);
|
||||
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, NULL, 0, NULL, 0, 0, 0,
|
||||
0, false, false, false, false, false);
|
||||
0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
const Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -88,7 +88,7 @@ static void test_scanner_subdirectory() {
|
||||
create_test_file(sub_file, content);
|
||||
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)root, false, 0, NULL, 0, NULL, 0, 0,
|
||||
0, 0, false, false, false, false, false);
|
||||
0, 0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
int total_files = 0;
|
||||
@@ -112,7 +112,7 @@ static void test_scanner_empty_directory() {
|
||||
EXPECT_EQ_INT(mkdir(dir, 0755), 0);
|
||||
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, NULL, 0, NULL, 0, 0, 0,
|
||||
0, false, false, false, false, false);
|
||||
0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
const Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -136,7 +136,7 @@ static void test_scanner_exclude_pattern() {
|
||||
|
||||
char* exclude[] = {"*.tmp"};
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, exclude, 1, NULL, 0, 0,
|
||||
0, 0, false, false, false, false, false);
|
||||
0, 0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -169,7 +169,7 @@ static void test_scanner_exclude_subdirectory() {
|
||||
|
||||
char* exclude[] = {"*.tmp"};
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)root, false, 0, exclude, 1, NULL, 0,
|
||||
0, 0, 0, false, false, false, false, false);
|
||||
0, 0, 0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
int total = 0;
|
||||
@@ -207,7 +207,7 @@ static void test_scanner_include_and_exclude() {
|
||||
char* exclude[] = {"*.bak"};
|
||||
char* include[] = {"*.txt", "*.log"};
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, exclude, 1, include, 2,
|
||||
0, 0, 0, false, false, false, false, false);
|
||||
0, 0, 0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -244,7 +244,7 @@ static void test_scanner_max_size() {
|
||||
|
||||
/* max_size = 10 — only files <= 10 bytes */
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, NULL, 0, NULL, 0, 10,
|
||||
0, 0, false, false, false, false, false);
|
||||
0, 0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -272,7 +272,7 @@ static void test_scanner_min_size() {
|
||||
|
||||
/* min_size = 1 — only files >= 1 byte */
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, NULL, 0, NULL, 0, 0, 1,
|
||||
0, false, false, false, false, false);
|
||||
0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -302,7 +302,7 @@ static void test_scanner_size_range() {
|
||||
|
||||
/* Only files between 3 and 20 bytes */
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, NULL, 0, NULL, 0, 20,
|
||||
3, 0, false, false, false, false, false);
|
||||
3, 0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -338,7 +338,7 @@ static void test_scanner_mixed_patterns() {
|
||||
char* exclude[] = {"*.bak"};
|
||||
char* include[] = {"*.txt"};
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, exclude, 1, include, 1,
|
||||
10, 3, 0, false, false, false, false, false);
|
||||
10, 3, 0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
Chunk* chunk = directory_scanner_next(scanner);
|
||||
@@ -369,7 +369,7 @@ static void test_scanner_no_patterns() {
|
||||
create_test_file(f2, "second");
|
||||
|
||||
DirectoryScanner* scanner = directory_scanner_create((char*)dir, false, 0, NULL, 0, NULL, 0, 0, 0,
|
||||
0, false, false, false, false, false);
|
||||
0, false, false, false, false);
|
||||
EXPECT_NOT_NULL(scanner);
|
||||
|
||||
Chunk* chunk = directory_scanner_next(scanner);
|
||||
|
||||
Reference in New Issue
Block a user