diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2018-06-25 19:50:35 +0900 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2018-11-04 09:21:48 +0000 |
commit | 0eb63b9fe061428d139bf3e250dbf045b02fecdc (patch) | |
tree | ae7473004efbc11a6461e716df291daec628d398 | |
parent | 702d4bec01aceb5dd0d23f91e567341af9195754 (diff) | |
download | libgit2-0eb63b9fe061428d139bf3e250dbf045b02fecdc.tar.gz |
apply tests: separate common patch hunks
Move the commonly-used patch hunks into a single constant location.
This allows us to avoid re-declaring them in each test, and allows
us to compose them to build a larger patch file that includes all
the hunks.
-rw-r--r-- | tests/apply/workdir.c | 132 |
1 files changed, 59 insertions, 73 deletions
diff --git a/tests/apply/workdir.c b/tests/apply/workdir.c index c30d207cf..1287d27f0 100644 --- a/tests/apply/workdir.c +++ b/tests/apply/workdir.c @@ -5,9 +5,62 @@ static git_repository *repo; #define TEST_REPO_PATH "merge-recursive" +#define DIFF_MODIFY_TWO_FILES \ + "diff --git a/asparagus.txt b/asparagus.txt\n" \ + "index f516580..ffb36e5 100644\n" \ + "--- a/asparagus.txt\n" \ + "+++ b/asparagus.txt\n" \ + "@@ -1 +1 @@\n" \ + "-ASPARAGUS SOUP!\n" \ + "+ASPARAGUS SOUP.\n" \ + "diff --git a/veal.txt b/veal.txt\n" \ + "index 94d2c01..a7b0665 100644\n" \ + "--- a/veal.txt\n" \ + "+++ b/veal.txt\n" \ + "@@ -1 +1 @@\n" \ + "-VEAL SOUP!\n" \ + "+VEAL SOUP.\n" \ + "@@ -7 +7 @@ occasionally, then put into it a shin of veal, let it boil two hours\n" \ + "-longer. take out the slices of ham, and skim off the grease if any\n" \ + "+longer; take out the slices of ham, and skim off the grease if any\n" + +#define DIFF_DELETE_FILE \ + "diff --git a/gravy.txt b/gravy.txt\n" \ + "deleted file mode 100644\n" \ + "index c4e6cca..0000000\n" \ + "--- a/gravy.txt\n" \ + "+++ /dev/null\n" \ + "@@ -1,8 +0,0 @@\n" \ + "-GRAVY SOUP.\n" \ + "-\n" \ + "-Get eight pounds of coarse lean beef--wash it clean and lay it in your\n" \ + "-pot, put in the same ingredients as for the shin soup, with the same\n" \ + "-quantity of water, and follow the process directed for that. Strain the\n" \ + "-soup through a sieve, and serve it up clear, with nothing more than\n" \ + "-toasted bread in it; two table-spoonsful of mushroom catsup will add a\n" \ + "-fine flavour to the soup.\n" + +#define DIFF_ADD_FILE \ + "diff --git a/newfile.txt b/newfile.txt\n" \ + "new file mode 100644\n" \ + "index 0000000..6370543\n" \ + "--- /dev/null\n" \ + "+++ b/newfile.txt\n" \ + "@@ -0,0 +1,2 @@\n" \ + "+This is a new file!\n" \ + "+Added by a patch.\n" + void test_apply_workdir__initialize(void) { + git_oid oid; + git_commit *commit; + repo = cl_git_sandbox_init(TEST_REPO_PATH); + + git_oid_fromstr(&oid, "539bd011c4822c560c1d17cab095006b7a10f707"); + cl_git_pass(git_commit_lookup(&commit, repo, &oid)); + cl_git_pass(git_reset(repo, (git_object *)commit, GIT_RESET_HARD, NULL)); + git_commit_free(commit); } void test_apply_workdir__cleanup(void) @@ -130,7 +183,6 @@ void test_apply_workdir__generated_diff(void) cl_git_pass(git_diff_tree_to_tree(&diff, repo, a_tree, b_tree, &opts)); - cl_git_pass(git_reset(repo, (git_object *)a_commit, GIT_RESET_HARD, NULL)); cl_git_pass(git_apply(repo, diff, NULL)); validate_index_unchanged(repo); @@ -145,29 +197,8 @@ void test_apply_workdir__generated_diff(void) void test_apply_workdir__parsed_diff(void) { - git_oid oid; - git_commit *commit; git_diff *diff; - const char *diff_file = - "diff --git a/asparagus.txt b/asparagus.txt\n" - "index f516580..ffb36e5 100644\n" - "--- a/asparagus.txt\n" - "+++ b/asparagus.txt\n" - "@@ -1 +1 @@\n" - "-ASPARAGUS SOUP!\n" - "+ASPARAGUS SOUP.\n" - "diff --git a/veal.txt b/veal.txt\n" - "index 94d2c01..a7b0665 100644\n" - "--- a/veal.txt\n" - "+++ b/veal.txt\n" - "@@ -1 +1 @@\n" - "-VEAL SOUP!\n" - "+VEAL SOUP.\n" - "@@ -7 +7 @@ occasionally, then put into it a shin of veal, let it boil two hours\n" - "-longer. take out the slices of ham, and skim off the grease if any\n" - "+longer; take out the slices of ham, and skim off the grease if any\n"; - struct merge_index_entry workdir_expected[] = { { 0100644, "ffb36e513f5fdf8a6ba850a20142676a2ac4807d", 0, "asparagus.txt" }, { 0100644, "68f6182f4c85d39e1309d97c7e456156dc9c0096", 0, "beef.txt" }, @@ -179,43 +210,20 @@ void test_apply_workdir__parsed_diff(void) size_t workdir_expected_cnt = sizeof(workdir_expected) / sizeof(struct merge_index_entry); - git_oid_fromstr(&oid, "539bd011c4822c560c1d17cab095006b7a10f707"); - cl_git_pass(git_commit_lookup(&commit, repo, &oid)); - - cl_git_pass(git_diff_from_buffer(&diff, diff_file, strlen(diff_file))); - - cl_git_pass(git_reset(repo, (git_object *)commit, GIT_RESET_HARD, NULL)); + cl_git_pass(git_diff_from_buffer(&diff, + DIFF_MODIFY_TWO_FILES, strlen(DIFF_MODIFY_TWO_FILES))); cl_git_pass(git_apply(repo, diff, NULL)); validate_index_unchanged(repo); validate_apply_workdir(repo, workdir_expected, workdir_expected_cnt); git_diff_free(diff); - git_commit_free(commit); } void test_apply_workdir__removes_file(void) { - git_oid oid; - git_commit *commit; git_diff *diff; - const char *diff_file = - "diff --git a/gravy.txt b/gravy.txt\n" - "deleted file mode 100644\n" - "index c4e6cca..0000000\n" - "--- a/gravy.txt\n" - "+++ /dev/null\n" - "@@ -1,8 +0,0 @@\n" - "-GRAVY SOUP.\n" - "-\n" - "-Get eight pounds of coarse lean beef--wash it clean and lay it in your\n" - "-pot, put in the same ingredients as for the shin soup, with the same\n" - "-quantity of water, and follow the process directed for that. Strain the\n" - "-soup through a sieve, and serve it up clear, with nothing more than\n" - "-toasted bread in it; two table-spoonsful of mushroom catsup will add a\n" - "-fine flavour to the soup.\n"; - struct merge_index_entry workdir_expected[] = { { 0100644, "f51658077d85f2264fa179b4d0848268cb3475c3", 0, "asparagus.txt" }, { 0100644, "68f6182f4c85d39e1309d97c7e456156dc9c0096", 0, "beef.txt" }, @@ -226,37 +234,20 @@ void test_apply_workdir__removes_file(void) size_t workdir_expected_cnt = sizeof(workdir_expected) / sizeof(struct merge_index_entry); - git_oid_fromstr(&oid, "539bd011c4822c560c1d17cab095006b7a10f707"); - cl_git_pass(git_commit_lookup(&commit, repo, &oid)); - - cl_git_pass(git_diff_from_buffer(&diff, diff_file, strlen(diff_file))); - - cl_git_pass(git_reset(repo, (git_object *)commit, GIT_RESET_HARD, NULL)); + cl_git_pass(git_diff_from_buffer(&diff, DIFF_DELETE_FILE, + strlen(DIFF_DELETE_FILE))); cl_git_pass(git_apply(repo, diff, NULL)); validate_index_unchanged(repo); validate_apply_workdir(repo, workdir_expected, workdir_expected_cnt); git_diff_free(diff); - git_commit_free(commit); } void test_apply_workdir__adds_file(void) { - git_oid oid; - git_commit *commit; git_diff *diff; - const char *diff_file = - "diff --git a/newfile.txt b/newfile.txt\n" - "new file mode 100644\n" - "index 0000000..6370543\n" - "--- /dev/null\n" - "+++ b/newfile.txt\n" - "@@ -0,0 +1,2 @@\n" - "+This is a new file!\n" - "+Added by a patch.\n"; - struct merge_index_entry workdir_expected[] = { { 0100644, "f51658077d85f2264fa179b4d0848268cb3475c3", 0, "asparagus.txt" }, { 0100644, "68f6182f4c85d39e1309d97c7e456156dc9c0096", 0, "beef.txt" }, @@ -269,17 +260,12 @@ void test_apply_workdir__adds_file(void) size_t workdir_expected_cnt = sizeof(workdir_expected) / sizeof(struct merge_index_entry); - git_oid_fromstr(&oid, "539bd011c4822c560c1d17cab095006b7a10f707"); - cl_git_pass(git_commit_lookup(&commit, repo, &oid)); - - cl_git_pass(git_diff_from_buffer(&diff, diff_file, strlen(diff_file))); - - cl_git_pass(git_reset(repo, (git_object *)commit, GIT_RESET_HARD, NULL)); + cl_git_pass(git_diff_from_buffer(&diff, + DIFF_ADD_FILE, strlen(DIFF_ADD_FILE))); cl_git_pass(git_apply(repo, diff, NULL)); validate_index_unchanged(repo); validate_apply_workdir(repo, workdir_expected, workdir_expected_cnt); git_diff_free(diff); - git_commit_free(commit); } |