Branch data Line data Source code
1 : : #include "sute.h"
2 : :
3 : : /**
4 : : *
5 : : * Testing symlink operations
6 : : *
7 : : * Test Scenario:
8 : : * 1. Add symlinks, create database
9 : : * 2. Remove symlinks, update database
10 : : * 3. Add symlinks, update database
11 : : *
12 : : */
13 : 2 : Return test0019(void)
14 : : {
15 : 2 : INITTEST;
16 : :
17 : 2 : const char *update_arguments = "--update --check-level=QUICK --database=database1.db tests/fixtures/diffs/diff1";
18 : :
19 : : // Preparation for the test
20 : 2 : ASSERT(SUCCESS == prepare_mutable_fixture("tests/fixtures/diffs/diff1"));
21 : :
22 : 2 : ASSERT(SUCCESS == set_environment_variable("TESTING","true"));
23 : 2 : ASSERT(SUCCESS == create_symlink("../../../../1/AAA/BCB/CCC/a.txt","tests/fixtures/diffs/diff1/path1/AAA/BCB/CCC/symlink_to_the_file_a.txt"));
24 : 2 : ASSERT(SUCCESS == create_symlink("../../../../AAA/ZAW/D/e/f","tests/fixtures/diffs/diff1/path1/AAA/ZAW/A/b/symlink_to_dir_f"));
25 : 2 : ASSERT(SUCCESS == create_symlink("/to/nowhere","tests/fixtures/diffs/diff1/path1/AAA/ZAW/A/b/broken_symlink"));
26 : :
27 : 2 : const char *arguments = "--database=database1.db tests/fixtures/diffs/diff1";
28 : :
29 : 2 : const struct argument_test_case initial_cases[] = {
30 : : {arguments,COMPLETED,"templates/0019_001.txt",STDERR_MUST_BE_EMPTY},
31 : : {0}
32 : : };
33 : :
34 : 2 : ASSERT(SUCCESS == run_and_match_templates(initial_cases,NULL,NULL));
35 : :
36 : 2 : ASSERT(SUCCESS == delete_path("tests/fixtures/diffs/diff1/path1/AAA/BCB/CCC/symlink_to_the_file_a.txt"));
37 : 2 : ASSERT(SUCCESS == delete_path("tests/fixtures/diffs/diff1/path1/AAA/ZAW/A/b/symlink_to_dir_f"));
38 : 2 : ASSERT(SUCCESS == delete_path("tests/fixtures/diffs/diff1/path1/AAA/ZAW/A/b/broken_symlink"));
39 : :
40 : 2 : const struct argument_test_case removed_symlinks_cases[] = {
41 : : {update_arguments,COMPLETED,"templates/0019_002.txt",STDERR_MUST_BE_EMPTY},
42 : : {0}
43 : : };
44 : :
45 : 2 : ASSERT(SUCCESS == run_and_match_templates(removed_symlinks_cases,NULL,NULL));
46 : :
47 : 2 : ASSERT(SUCCESS == create_symlink("../../../../1/AAA/BCB/CCC/a.txt","tests/fixtures/diffs/diff1/path1/AAA/BCB/CCC/symlink_to_the_file_a.txt"));
48 : 2 : ASSERT(SUCCESS == create_symlink("../../../../AAA/ZAW/D/e/f","tests/fixtures/diffs/diff1/path1/AAA/ZAW/A/b/symlink_to_dir_f"));
49 : 2 : ASSERT(SUCCESS == create_symlink("/to/nowhere","tests/fixtures/diffs/diff1/path1/AAA/ZAW/A/b/broken_symlink"));
50 : :
51 : 2 : const struct argument_test_case restored_symlinks_cases[] = {
52 : : {update_arguments,COMPLETED,"templates/0019_003.txt",STDERR_MUST_BE_EMPTY},
53 : : {0}
54 : : };
55 : :
56 : 2 : ASSERT(SUCCESS == run_and_match_templates(restored_symlinks_cases,NULL,NULL));
57 : :
58 : : // Clean up test results
59 : 2 : ASSERT(SUCCESS == delete_path("database1.db"));
60 : 2 : ASSERT(SUCCESS == restore_mutable_fixture("tests/fixtures/diffs/diff1"));
61 : :
62 : 2 : RETURN_STATUS;
63 : : }
|