diff options
Diffstat (limited to 'tests')
218 files changed, 1595 insertions, 244 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 08ecb396b..775f33f2d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -20,7 +20,7 @@ ENDIF() ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/clar.suite - COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress . + COMMAND ${PYTHON_EXECUTABLE} generate.py -o "${CMAKE_CURRENT_BINARY_DIR}" -f -xonline -xstress -xperf . DEPENDS ${SRC_TEST} WORKING_DIRECTORY ${CLAR_PATH} ) @@ -58,8 +58,6 @@ ELSE () ADD_TEST(libgit2_clar "${libgit2_BINARY_DIR}/libgit2_clar" -v -xclone::local::git_style_unc_paths -xclone::local::standard_unc_paths_are_written_git_style) ENDIF () -# Add a test target which runs the cred callback tests, to be -# called after setting the url and user -ADD_TEST(libgit2_clar-cred_callback "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::clone::cred_callback) -ADD_TEST(libgit2_clar-proxy_credentials_in_url "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::clone::proxy_credentials_in_url) -ADD_TEST(libgit2_clar-proxy_credentials_request "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::clone::proxy_credentials_request) +# Add additional test targets that require special setup +ADD_TEST(libgit2_clar-proxy_credentials "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::clone::proxy_credentials_in_url -sonline::clone::proxy_credentials_request) +ADD_TEST(libgit2_clar-ssh "${libgit2_BINARY_DIR}/libgit2_clar" -v -sonline::push -sonline::clone::ssh_cert -sonline::clone::ssh_with_paths) diff --git a/tests/attr/ignore.c b/tests/attr/ignore.c index d241c03b5..165e2ba09 100644 --- a/tests/attr/ignore.c +++ b/tests/attr/ignore.c @@ -61,6 +61,22 @@ void test_attr_ignore__ignore_space(void) assert_is_ignored(true, "NewFolder/NewFolder/File.txt"); } +void test_attr_ignore__ignore_dir(void) +{ + cl_git_rewritefile("attr/.gitignore", "dir/\n"); + + assert_is_ignored(true, "dir"); + assert_is_ignored(true, "dir/file"); +} + +void test_attr_ignore__ignore_dir_with_trailing_space(void) +{ + cl_git_rewritefile("attr/.gitignore", "dir/ \n"); + + assert_is_ignored(true, "dir"); + assert_is_ignored(true, "dir/file"); +} + void test_attr_ignore__ignore_root(void) { cl_git_rewritefile("attr/.gitignore", "/\n\n/NewFolder\n/NewFolder/NewFolder"); diff --git a/tests/buf/percent.c b/tests/buf/percent.c new file mode 100644 index 000000000..60534a053 --- /dev/null +++ b/tests/buf/percent.c @@ -0,0 +1,49 @@ +#include "clar_libgit2.h" +#include "buffer.h" + +static void expect_decode_pass(const char *expected, const char *encoded) +{ + git_buf in = GIT_BUF_INIT, out = GIT_BUF_INIT; + + /* + * ensure that we only read the given length of the input buffer + * by putting garbage at the end. this will ensure that we do + * not, eg, rely on nul-termination or walk off the end of the buf. + */ + cl_git_pass(git_buf_puts(&in, encoded)); + cl_git_pass(git_buf_PUTS(&in, "TRAILER")); + + cl_git_pass(git_buf_decode_percent(&out, in.ptr, strlen(encoded))); + + cl_assert_equal_s(expected, git_buf_cstr(&out)); + cl_assert_equal_i(strlen(expected), git_buf_len(&out)); + + git_buf_free(&in); + git_buf_free(&out); +} + +void test_buf_percent__decode_succeeds(void) +{ + expect_decode_pass("", ""); + expect_decode_pass(" ", "%20"); + expect_decode_pass("a", "a"); + expect_decode_pass(" a", "%20a"); + expect_decode_pass("a ", "a%20"); + expect_decode_pass("github.com", "github.com"); + expect_decode_pass("github.com", "githu%62.com"); + expect_decode_pass("github.com", "github%2ecom"); + expect_decode_pass("foo bar baz", "foo%20bar%20baz"); + expect_decode_pass("foo bar baz", "foo%20bar%20baz"); + expect_decode_pass("foo bar ", "foo%20bar%20"); +} + +void test_buf_percent__ignores_invalid(void) +{ + expect_decode_pass("githu%%.com", "githu%%.com"); + expect_decode_pass("github.co%2", "github.co%2"); + expect_decode_pass("github%2.com", "github%2.com"); + expect_decode_pass("githu%2z.com", "githu%2z.com"); + expect_decode_pass("github.co%9z", "github.co%9z"); + expect_decode_pass("github.co%2", "github.co%2"); + expect_decode_pass("github.co%", "github.co%"); +} diff --git a/tests/checkout/head.c b/tests/checkout/head.c index ded86df33..99061466f 100644 --- a/tests/checkout/head.c +++ b/tests/checkout/head.c @@ -136,3 +136,131 @@ void test_checkout_head__do_remove_tracked_subdir(void) cl_assert(!git_path_isfile("testrepo/subdir/tracked-file")); cl_assert(git_path_isfile("testrepo/subdir/untracked-file")); } + +void test_checkout_head__typechange_workdir(void) +{ + git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT; + git_object *target; + struct stat st; + + opts.checkout_strategy = GIT_CHECKOUT_FORCE; + + cl_git_pass(git_revparse_single(&target, g_repo, "HEAD")); + cl_git_pass(git_reset(g_repo, target, GIT_RESET_HARD, NULL)); + + cl_must_pass(p_chmod("testrepo/new.txt", 0755)); + cl_git_pass(git_checkout_head(g_repo, &opts)); + + cl_git_pass(p_stat("testrepo/new.txt", &st)); + cl_assert(!GIT_PERMS_IS_EXEC(st.st_mode)); + + git_object_free(target); +} + +void test_checkout_head__typechange_index_and_workdir(void) +{ + git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT; + git_object *target; + git_index *index; + struct stat st; + + opts.checkout_strategy = GIT_CHECKOUT_FORCE; + + cl_git_pass(git_revparse_single(&target, g_repo, "HEAD")); + cl_git_pass(git_reset(g_repo, target, GIT_RESET_HARD, NULL)); + + cl_must_pass(p_chmod("testrepo/new.txt", 0755)); + cl_git_pass(git_repository_index(&index, g_repo)); + cl_git_pass(git_index_add_bypath(index, "new.txt")); + cl_git_pass(git_index_write(index)); + cl_git_pass(git_checkout_head(g_repo, &opts)); + + cl_git_pass(p_stat("testrepo/new.txt", &st)); + cl_assert(!GIT_PERMS_IS_EXEC(st.st_mode)); + + git_object_free(target); + git_index_free(index); +} + +void test_checkout_head__workdir_filemode_is_simplified(void) +{ + git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT; + git_object *target, *branch; + + opts.checkout_strategy = GIT_CHECKOUT_FORCE; + + cl_git_pass(git_revparse_single(&target, g_repo, "a38d028f71eaa590febb7d716b1ca32350cf70da")); + cl_git_pass(git_reset(g_repo, target, GIT_RESET_HARD, NULL)); + + cl_must_pass(p_chmod("testrepo/branch_file.txt", 0666)); + + /* + * Checkout should not fail with a conflict; though the file mode + * on disk is literally different to the base (0666 vs 0644), Git + * ignores the actual mode and simply treats both as non-executable. + */ + cl_git_pass(git_revparse_single(&branch, g_repo, "099fabac3a9ea935598528c27f866e34089c2eff")); + + opts.checkout_strategy &= ~GIT_CHECKOUT_FORCE; + opts.checkout_strategy |= GIT_CHECKOUT_SAFE; + cl_git_pass(git_checkout_tree(g_repo, branch, NULL)); + + git_object_free(branch); + git_object_free(target); +} + +void test_checkout_head__obeys_filemode_true(void) +{ + git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT; + git_object *target, *branch; + + opts.checkout_strategy = GIT_CHECKOUT_FORCE; + + /* In this commit, `README` is executable */ + cl_git_pass(git_revparse_single(&target, g_repo, "f9ed4af42472941da45a3c")); + cl_git_pass(git_reset(g_repo, target, GIT_RESET_HARD, NULL)); + + cl_repo_set_bool(g_repo, "core.filemode", true); + cl_must_pass(p_chmod("testrepo/README", 0644)); + + /* + * Checkout will fail with a conflict; the file mode is updated in + * the checkout target, but the contents have changed in our branch. + */ + cl_git_pass(git_revparse_single(&branch, g_repo, "099fabac3a9ea935598528c27f866e34089c2eff")); + + opts.checkout_strategy &= ~GIT_CHECKOUT_FORCE; + opts.checkout_strategy |= GIT_CHECKOUT_SAFE; + cl_git_fail_with(GIT_ECONFLICT, git_checkout_tree(g_repo, branch, NULL)); + + git_object_free(branch); + git_object_free(target); +} + +void test_checkout_head__obeys_filemode_false(void) +{ + git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT; + git_object *target, *branch; + + opts.checkout_strategy = GIT_CHECKOUT_FORCE; + + /* In this commit, `README` is executable */ + cl_git_pass(git_revparse_single(&target, g_repo, "f9ed4af42472941da45a3c")); + cl_git_pass(git_reset(g_repo, target, GIT_RESET_HARD, NULL)); + + cl_repo_set_bool(g_repo, "core.filemode", false); + cl_must_pass(p_chmod("testrepo/README", 0644)); + + /* + * Checkout will fail with a conflict; the file contents are updated + * in the checkout target, but the filemode has changed in our branch. + */ + cl_git_pass(git_revparse_single(&branch, g_repo, "099fabac3a9ea935598528c27f866e34089c2eff")); + + opts.checkout_strategy &= ~GIT_CHECKOUT_FORCE; + opts.checkout_strategy |= GIT_CHECKOUT_SAFE; + cl_git_pass(git_checkout_tree(g_repo, branch, NULL)); + + git_object_free(branch); + git_object_free(target); +} diff --git a/tests/checkout/tree.c b/tests/checkout/tree.c index 56513eab7..a7e29b3db 100644 --- a/tests/checkout/tree.c +++ b/tests/checkout/tree.c @@ -1096,6 +1096,8 @@ void test_checkout_tree__filemode_preserved_in_workdir(void) cl_assert(!GIT_PERMS_IS_EXEC(read_filemode("a/b.txt"))); git_commit_free(commit); +#else + cl_skip(); #endif } diff --git a/tests/checkout/typechange.c b/tests/checkout/typechange.c index 8a5110caa..647b534b1 100644 --- a/tests/checkout/typechange.c +++ b/tests/checkout/typechange.c @@ -1,4 +1,5 @@ #include "clar_libgit2.h" +#include "diff_generate.h" #include "git2/checkout.h" #include "path.h" #include "posix.h" @@ -307,3 +308,28 @@ void test_checkout_typechange__checkout_with_conflicts(void) git_object_free(obj); } } + +void test_checkout_typechange__status_char(void) +{ + size_t i; + git_oid oid; + git_commit *commit; + git_diff *diff; + const git_diff_delta *delta; + git_diff_options diffopts = GIT_DIFF_OPTIONS_INIT; + char expected[8] = {'M', 'M', 'R', 'T', 'D', 'R', 'A', 'R'}; + + git_oid_fromstr(&oid, "9b19edf33a03a0c59cdfc113bfa5c06179bf9b1a"); + cl_git_pass(git_commit_lookup(&commit, g_repo, &oid)); + diffopts.flags |= GIT_DIFF_INCLUDE_TYPECHANGE; + cl_git_pass(git_diff__commit(&diff, g_repo, commit, &diffopts)); + cl_git_pass(git_diff_find_similar(diff, NULL)); + + for (i = 0; i < git_diff_num_deltas(diff); i++) { + delta = git_diff_get_delta(diff, i); + cl_assert_equal_i(expected[i], git_diff_status_char(delta->status)); + } + + git_diff_free(diff); + git_commit_free(commit); +} diff --git a/tests/config/read.c b/tests/config/read.c index 25a4fcaf4..a34455a0c 100644 --- a/tests/config/read.c +++ b/tests/config/read.c @@ -703,3 +703,48 @@ void test_config_read__path(void) git_buf_free(&expected_path); git_config_free(cfg); } + +void test_config_read__crlf_style_line_endings(void) +{ + git_buf buf = GIT_BUF_INIT; + git_config *cfg; + + cl_set_cleanup(&clean_test_config, NULL); + cl_git_mkfile("./testconfig", "[some]\r\n var = value\r\n"); + cl_git_pass(git_config_open_ondisk(&cfg, "./testconfig")); + cl_git_pass(git_config_get_string_buf(&buf, cfg, "some.var")); + cl_assert_equal_s(buf.ptr, "value"); + + git_config_free(cfg); + git_buf_free(&buf); +} + +void test_config_read__trailing_crlf(void) +{ + git_buf buf = GIT_BUF_INIT; + git_config *cfg; + + cl_set_cleanup(&clean_test_config, NULL); + cl_git_mkfile("./testconfig", "[some]\r\n var = value\r\n\r\n"); + cl_git_pass(git_config_open_ondisk(&cfg, "./testconfig")); + cl_git_pass(git_config_get_string_buf(&buf, cfg, "some.var")); + cl_assert_equal_s(buf.ptr, "value"); + + git_config_free(cfg); + git_buf_free(&buf); +} + +void test_config_read__bom(void) +{ + git_buf buf = GIT_BUF_INIT; + git_config *cfg; + + cl_set_cleanup(&clean_test_config, NULL); + cl_git_mkfile("./testconfig", "\xEF\xBB\xBF[some]\n var = value\n"); + cl_git_pass(git_config_open_ondisk(&cfg, "./testconfig")); + cl_git_pass(git_config_get_string_buf(&buf, cfg, "some.var")); + cl_assert_equal_s(buf.ptr, "value"); + + git_config_free(cfg); + git_buf_free(&buf); +} diff --git a/tests/diff/rename.c b/tests/diff/rename.c index c1cd25239..ddc1d5d78 100644 --- a/tests/diff/rename.c +++ b/tests/diff/rename.c @@ -16,6 +16,13 @@ void test_diff_rename__cleanup(void) cl_git_sandbox_cleanup(); } +#define INITIAL_COMMIT "31e47d8c1fa36d7f8d537b96158e3f024de0a9f2" +#define COPY_RENAME_COMMIT "2bc7f351d20b53f1c72c16c4b036e491c478c49a" +#define REWRITE_COPY_COMMIT "1c068dee5790ef1580cfc4cd670915b48d790084" +#define RENAME_MODIFICATION_COMMIT "19dd32dfb1520a64e5bbaae8dce6ef423dfa2f13" +#define REWRITE_DELETE_COMMIT "84d8efa38af7ace2b302de0adbda16b1f1cd2e1b" +#define DELETE_RENAME_COMMIT "be053a189b0bbde545e0a3f59ce00b46ad29ce0d" + /* * Renames repo has: * @@ -36,12 +43,22 @@ void test_diff_rename__cleanup(void) * ikeepsix.txt -> ikeepsix.txt (reorder sections in file) * sixserving.txt -> sixserving.txt (whitespace change - not just indent) * sevencities.txt -> songof7cities.txt (rename, small text changes) + * commit 84d8efa38af7ace2b302de0adbda16b1f1cd2e1b + * songof7cities.txt -> songof7citie.txt (major rewrite, <20% match) + * ikeepsix.txt -> (deleted) + * untimely.txt (no change) + * sixserving.txt (no change) + * commit be053a189b0bbde545e0a3f59ce00b46ad29ce0d + * ikeepsix.txt -> (deleted) + * songof7cities.txt -> ikeepsix.txt (rename, 100% match) + * untimely.txt (no change) + * sixserving.txt (no change) */ void test_diff_rename__match_oid(void) { - const char *old_sha = "31e47d8c1fa36d7f8d537b96158e3f024de0a9f2"; - const char *new_sha = "2bc7f351d20b53f1c72c16c4b036e491c478c49a"; + const char *old_sha = INITIAL_COMMIT; + const char *new_sha = COPY_RENAME_COMMIT; git_tree *old_tree, *new_tree; git_diff *diff; git_diff_options diffopts = GIT_DIFF_OPTIONS_INIT; @@ -139,8 +156,8 @@ void test_diff_rename__match_oid(void) void test_diff_rename__checks_options_version(void) { - const char *old_sha = "31e47d8c1fa36d7f8d537b96158e3f024de0a9f2"; - const char *new_sha = "2bc7f351d20b53f1c72c16c4b036e491c478c49a"; + const char *old_sha = INITIAL_COMMIT; + const char *new_sha = COPY_RENAME_COMMIT; git_tree *old_tree, *new_tree; git_diff *diff; git_diff_options diffopts = GIT_DIFF_OPTIONS_INIT; @@ -171,9 +188,9 @@ void test_diff_rename__checks_options_version(void) void test_diff_rename__not_exact_match(void) { - const char *sha0 = "2bc7f351d20b53f1c72c16c4b036e491c478c49a"; - const char *sha1 = "1c068dee5790ef1580cfc4cd670915b48d790084"; - const char *sha2 = "19dd32dfb1520a64e5bbaae8dce6ef423dfa2f13"; + const char *sha0 = COPY_RENAME_COMMIT; + const char *sha1 = REWRITE_COPY_COMMIT; + const char *sha2 = RENAME_MODIFICATION_COMMIT; git_tree *old_tree, *new_tree; git_diff *diff; git_diff_options diffopts = GIT_DIFF_OPTIONS_INIT; @@ -433,7 +450,7 @@ void test_diff_rename__test_small_files(void) void test_diff_rename__working_directory_changes(void) { - const char *sha0 = "2bc7f351d20b53f1c72c16c4b036e491c478c49a"; + const char *sha0 = COPY_RENAME_COMMIT; const char *blobsha = "66311f5cfbe7836c27510a3ba2f43e282e2c8bba"; git_oid id; git_tree *tree; @@ -592,8 +609,8 @@ void test_diff_rename__working_directory_changes(void) void test_diff_rename__patch(void) { - const char *sha0 = "2bc7f351d20b53f1c72c16c4b036e491c478c49a"; - const char *sha1 = "1c068dee5790ef1580cfc4cd670915b48d790084"; + const char *sha0 = COPY_RENAME_COMMIT; + const char *sha1 = REWRITE_COPY_COMMIT; git_tree *old_tree, *new_tree; git_diff *diff; git_diff_options diffopts = GIT_DIFF_OPTIONS_INIT; @@ -1425,9 +1442,9 @@ void test_diff_rename__can_delete_unmodified_deltas(void) void test_diff_rename__matches_config_behavior(void) { - const char *sha0 = "31e47d8c1fa36d7f8d537b96158e3f024de0a9f2"; - const char *sha1 = "2bc7f351d20b53f1c72c16c4b036e491c478c49a"; - const char *sha2 = "1c068dee5790ef1580cfc4cd670915b48d790084"; + const char *sha0 = INITIAL_COMMIT; + const char *sha1 = COPY_RENAME_COMMIT; + const char *sha2 = REWRITE_COPY_COMMIT; git_tree *tree0, *tree1, *tree2; git_config *cfg; @@ -1508,8 +1525,8 @@ void test_diff_rename__matches_config_behavior(void) void test_diff_rename__can_override_thresholds_when_obeying_config(void) { - const char *sha1 = "2bc7f351d20b53f1c72c16c4b036e491c478c49a"; - const char *sha2 = "1c068dee5790ef1580cfc4cd670915b48d790084"; + const char *sha1 = COPY_RENAME_COMMIT; + const char *sha2 = REWRITE_COPY_COMMIT; git_tree *tree1, *tree2; git_config *cfg; @@ -1563,8 +1580,8 @@ void test_diff_rename__can_override_thresholds_when_obeying_config(void) void test_diff_rename__by_config_doesnt_mess_with_whitespace_settings(void) { - const char *sha1 = "1c068dee5790ef1580cfc4cd670915b48d790084"; - const char *sha2 = "19dd32dfb1520a64e5bbaae8dce6ef423dfa2f13"; + const char *sha1 = REWRITE_COPY_COMMIT; + const char *sha2 = RENAME_MODIFICATION_COMMIT; git_tree *tree1, *tree2; git_config *cfg; @@ -1710,8 +1727,8 @@ void test_diff_rename__blank_files_not_renamed_when_not_ignoring_whitespace(void */ void test_diff_rename__identical(void) { - const char *old_sha = "31e47d8c1fa36d7f8d537b96158e3f024de0a9f2"; - const char *new_sha = "2bc7f351d20b53f1c72c16c4b036e491c478c49a"; + const char *old_sha = INITIAL_COMMIT; + const char *new_sha = COPY_RENAME_COMMIT; git_tree *old_tree, *new_tree; git_diff *diff; git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT; @@ -1748,3 +1765,216 @@ void test_diff_rename__identical(void) git_tree_free(new_tree); } +void test_diff_rename__rewrite_and_delete(void) +{ + const char *old_sha = RENAME_MODIFICATION_COMMIT; + const char *new_sha = REWRITE_DELETE_COMMIT; + git_tree *old_tree, *new_tree; + git_diff *diff; + git_diff_find_options find_opts = GIT_DIFF_FIND_OPTIONS_INIT; + git_buf diff_buf = GIT_BUF_INIT; + const char *expected = + "diff --git a/ikeepsix.txt b/ikeepsix.txt\n" + "deleted file mode 100644\n" + "index eaf4a3e..0000000\n" + "--- a/ikeepsix.txt\n" + "+++ /dev/null\n" + "@@ -1,27 +0,0 @@\n" + "-I Keep Six Honest Serving-Men\n" + "-=============================\n" + "-\n" + "-She sends'em abroad on her own affairs,\n" + "- From the second she opens her eyes—\n" + "-One million Hows, two million Wheres,\n" + "-And seven million Whys!\n" + "-\n" + "-I let them rest from nine till five,\n" + "- For I am busy then,\n" + "-As well as breakfast, lunch, and tea,\n" + "- For they are hungry men.\n" + "-But different folk have different views;\n" + "-I know a person small—\n" + "-She keeps ten million serving-men,\n" + "-Who get no rest at all!\n" + "-\n" + "- -- Rudyard Kipling\n" + "-\n" + "-I KEEP six honest serving-men\n" + "- (They taught me all I knew);\n" + "-Their names are What and Why and When\n" + "- And How and Where and Who.\n" + "-I send them over land and sea,\n" + "- I send them east and west;\n" + "-But after they have worked for me,\n" + "- I give them all a rest.\n" + "diff --git a/songof7cities.txt b/songof7cities.txt\n" + "index 4210ffd..95ceb12 100644\n" + "--- a/songof7cities.txt\n" + "+++ b/songof7cities.txt\n" + "@@ -1,45 +1,45 @@\n" + "-The Song of Seven Cities\n" + "+THE SONG OF SEVEN CITIES\n" + " ------------------------\n" + " \n" + "-I WAS Lord of Cities very sumptuously builded.\n" + "-Seven roaring Cities paid me tribute from afar.\n" + "-Ivory their outposts were--the guardrooms of them gilded,\n" + "-And garrisoned with Amazons invincible in war.\n" + "-\n" + "-All the world went softly when it walked before my Cities--\n" + "-Neither King nor Army vexed my peoples at their toil,\n" + "-Never horse nor chariot irked or overbore my Cities,\n" + "-Never Mob nor Ruler questioned whence they drew their spoil.\n" + "-\n" + "-Banded, mailed and arrogant from sunrise unto sunset;\n" + "-Singing while they sacked it, they possessed the land at large.\n" + "-Yet when men would rob them, they resisted, they made onset\n" + "-And pierced the smoke of battle with a thousand-sabred charge.\n" + "-\n" + "-So they warred and trafficked only yesterday, my Cities.\n" + "-To-day there is no mark or mound of where my Cities stood.\n" + "-For the River rose at midnight and it washed away my Cities.\n" + "-They are evened with Atlantis and the towns before the Flood.\n" + "-\n" + "-Rain on rain-gorged channels raised the water-levels round them,\n" + "-Freshet backed on freshet swelled and swept their world from sight,\n" + "-Till the emboldened floods linked arms and, flashing forward, drowned them--\n" + "-Drowned my Seven Cities and their peoples in one night!\n" + "-\n" + "-Low among the alders lie their derelict foundations,\n" + "-The beams wherein they trusted and the plinths whereon they built--\n" + "-My rulers and their treasure and their unborn populations,\n" + "-Dead, destroyed, aborted, and defiled with mud and silt!\n" + "-\n" + "-The Daughters of the Palace whom they cherished in my Cities,\n" + "-My silver-tongued Princesses, and the promise of their May--\n" + "-Their bridegrooms of the June-tide--all have perished in my Cities,\n" + "-With the harsh envenomed virgins that can neither love nor play.\n" + "-\n" + "-I was Lord of Cities--I will build anew my Cities,\n" + "-Seven, set on rocks, above the wrath of any flood.\n" + "-Nor will I rest from search till I have filled anew my Cities\n" + "-With peoples undefeated of the dark, enduring blood.\n" + "+I WAS LORD OF CITIES VERY SUMPTUOUSLY BUILDED.\n" + "+SEVEN ROARING CITIES PAID ME TRIBUTE FROM AFAR.\n" + "+IVORY THEIR OUTPOSTS WERE--THE GUARDROOMS OF THEM GILDED,\n" + "+AND GARRISONED WITH AMAZONS INVINCIBLE IN WAR.\n" + "+\n" + "+ALL THE WORLD WENT SOFTLY WHEN IT WALKED BEFORE MY CITIES--\n" + "+NEITHER KING NOR ARMY VEXED MY PEOPLES AT THEIR TOIL,\n" + "+NEVER HORSE NOR CHARIOT IRKED OR OVERBORE MY CITIES,\n" + "+NEVER MOB NOR RULER QUESTIONED WHENCE THEY DREW THEIR SPOIL.\n" + "+\n" + "+BANDED, MAILED AND ARROGANT FROM SUNRISE UNTO SUNSET;\n" + "+SINGING WHILE THEY SACKED IT, THEY POSSESSED THE LAND AT LARGE.\n" + "+YET WHEN MEN WOULD ROB THEM, THEY RESISTED, THEY MADE ONSET\n" + "+AND PIERCED THE SMOKE OF BATTLE WITH A THOUSAND-SABRED CHARGE.\n" + "+\n" + "+SO THEY WARRED AND TRAFFICKED ONLY YESTERDAY, MY CITIES.\n" + "+TO-DAY THERE IS NO MARK OR MOUND OF WHERE MY CITIES STOOD.\n" + "+FOR THE RIVER ROSE AT MIDNIGHT AND IT WASHED AWAY MY CITIES.\n" + "+THEY ARE EVENED WITH ATLANTIS AND THE TOWNS BEFORE THE FLOOD.\n" + "+\n" + "+RAIN ON RAIN-GORGED CHANNELS RAISED THE WATER-LEVELS ROUND THEM,\n" + "+FRESHET BACKED ON FRESHET SWELLED AND SWEPT THEIR WORLD FROM SIGHT,\n" + "+TILL THE EMBOLDENED FLOODS LINKED ARMS AND, FLASHING FORWARD, DROWNED THEM--\n" + "+DROWNED MY SEVEN CITIES AND THEIR PEOPLES IN ONE NIGHT!\n" + "+\n" + "+LOW AMONG THE ALDERS LIE THEIR DERELICT FOUNDATIONS,\n" + "+THE BEAMS WHEREIN THEY TRUSTED AND THE PLINTHS WHEREON THEY BUILT--\n" + "+MY RULERS AND THEIR TREASURE AND THEIR UNBORN POPULATIONS,\n" + "+DEAD, DESTROYED, ABORTED, AND DEFILED WITH MUD AND SILT!\n" + "+\n" + "+THE DAUGHTERS OF THE PALACE WHOM THEY CHERISHED IN MY CITIES,\n" + "+MY SILVER-TONGUED PRINCESSES, AND THE PROMISE OF THEIR MAY--\n" + "+THEIR BRIDEGROOMS OF THE JUNE-TIDE--ALL HAVE PERISHED IN MY CITIES,\n" + "+WITH THE HARSH ENVENOMED VIRGINS THAT CAN NEITHER LOVE NOR PLAY.\n" + "+\n" + "+I WAS LORD OF CITIES--I WILL BUILD ANEW MY CITIES,\n" + "+SEVEN, SET ON ROCKS, ABOVE THE WRATH OF ANY FLOOD.\n" + "+NOR WILL I REST FROM SEARCH TILL I HAVE FILLED ANEW MY CITIES\n" + "+WITH PEOPLES UNDEFEATED OF THE DARK, ENDURING BLOOD.\n" + " \n" + " To the sound of trumpets shall their seed restore my Cities\n" + " Wealthy and well-weaponed, that once more may I behold\n"; + + old_tree = resolve_commit_oid_to_tree(g_repo, old_sha); + new_tree = resolve_commit_oid_to_tree(g_repo, new_sha); + + find_opts.flags = GIT_DIFF_FIND_RENAMES_FROM_REWRITES; + + cl_git_pass(git_diff_tree_to_tree(&diff, g_repo, old_tree, new_tree, NULL)); + cl_git_pass(git_diff_find_similar(diff, &find_opts)); + + cl_git_pass(git_diff_to_buf(&diff_buf, diff, GIT_DIFF_FORMAT_PATCH)); + + cl_assert_equal_s(expected, diff_buf.ptr); + + git_buf_free(&diff_buf); + git_diff_free(diff); + git_tree_free(old_tree); + git_tree_free(new_tree); +} + +void test_diff_rename__delete_and_rename(void) +{ + const char *old_sha = RENAME_MODIFICATION_COMMIT; + const char *new_sha = DELETE_RENAME_COMMIT; + git_tree *old_tree, *new_tree; + git_diff *diff; + git_diff_find_options find_opts = GIT_DIFF_FIND_OPTIONS_INIT; + git_buf diff_buf = GIT_BUF_INIT; + const char *expected = + "diff --git a/sixserving.txt b/sixserving.txt\n" + "deleted file mode 100644\n" + "index f90d4fc..0000000\n" + "--- a/sixserving.txt\n" + "+++ /dev/null\n" + "@@ -1,25 +0,0 @@\n" + "-I KEEP six honest serving-men\n" + "- (They taught me all I knew);\n" + "-Their names are What and Why and When\n" + "- And How and Where and Who.\n" + "-I send them over land and sea,\n" + "- I send them east and west;\n" + "-But after they have worked for me,\n" + "- I give them all a rest.\n" + "-\n" + "-I let them rest from nine till five,\n" + "- For I am busy then,\n" + "-As well as breakfast, lunch, and tea,\n" + "- For they are hungry men.\n" + "-But different folk have different views;\n" + "-I know a person small—\n" + "-She keeps ten million serving-men,\n" + "-Who get no rest at all!\n" + "-\n" + "-She sends'em abroad on her own affairs,\n" + "- From the second she opens her eyes—\n" + "-One million Hows, two million Wheres,\n" + "-And seven million Whys!\n" + "-\n" + "- -- Rudyard Kipling\n" + "-\n" + "diff --git a/songof7cities.txt b/sixserving.txt\n" + "similarity index 100%\n" + "rename from songof7cities.txt\n" + "rename to sixserving.txt\n"; + + old_tree = resolve_commit_oid_to_tree(g_repo, old_sha); + new_tree = resolve_commit_oid_to_tree(g_repo, new_sha); + + find_opts.flags = GIT_DIFF_FIND_RENAMES_FROM_REWRITES; + + cl_git_pass(git_diff_tree_to_tree(&diff, g_repo, old_tree, new_tree, NULL)); + cl_git_pass(git_diff_find_similar(diff, &find_opts)); + + cl_git_pass(git_diff_to_buf(&diff_buf, diff, GIT_DIFF_FORMAT_PATCH)); + + cl_assert_equal_s(expected, diff_buf.ptr); + + git_buf_free(&diff_buf); + git_diff_free(diff); + git_tree_free(old_tree); + git_tree_free(new_tree); +} diff --git a/tests/diff/stats.c b/tests/diff/stats.c index 3171a4486..347d0d757 100644 --- a/tests/diff/stats.c +++ b/tests/diff/stats.c @@ -254,7 +254,7 @@ void test_diff_stats__rename_nochanges_no_find(void) git_buf_free(&buf); } -void test_diff_stats__rename_and_modifiy_no_find(void) +void test_diff_stats__rename_and_modify_no_find(void) { git_buf buf = GIT_BUF_INIT; const char *stat = diff --git a/tests/fetchhead/nonetwork.c b/tests/fetchhead/nonetwork.c index 4dabb577e..a6394600a 100644 --- a/tests/fetchhead/nonetwork.c +++ b/tests/fetchhead/nonetwork.c @@ -343,6 +343,29 @@ void test_fetchhead_nonetwork__unborn_with_upstream(void) cl_fixture_cleanup("./repowithunborn"); } +void test_fetchhead_nonetwork__fetch_into_repo_with_symrefs(void) +{ + git_repository *repo; + git_remote *remote; + git_reference *symref; + + repo = cl_git_sandbox_init("empty_standard_repo"); + + /* + * Testing for a specific constellation where the repository has at + * least one symbolic reference in its refdb. + */ + cl_git_pass(git_reference_symbolic_create(&symref, repo, "refs/heads/symref", "refs/heads/master", 0, NULL)); + + cl_git_pass(git_remote_set_url(repo, "origin", cl_fixture("testrepo.git"))); + cl_git_pass(git_remote_lookup(&remote, repo, "origin")); + cl_git_pass(git_remote_fetch(remote, NULL, NULL, NULL)); + + git_remote_free(remote); + git_reference_free(symref); + cl_git_sandbox_cleanup(); +} + void test_fetchhead_nonetwork__quote_in_branch_name(void) { cl_set_cleanup(&cleanup_repository, "./test1"); diff --git a/tests/index/filemodes.c b/tests/index/filemodes.c index 2efad5b33..2693b1312 100644 --- a/tests/index/filemodes.c +++ b/tests/index/filemodes.c @@ -256,3 +256,65 @@ void test_index_filemodes__invalid(void) git_index_free(index); } + +void test_index_filemodes__frombuffer_requires_files(void) +{ + git_index *index; + git_index_entry new_entry; + const git_index_entry *ret_entry; + const char *content = "hey there\n"; + + memset(&new_entry, 0, sizeof(new_entry)); + cl_git_pass(git_repository_index(&index, g_repo)); + + /* regular blob */ + new_entry.path = "dummy-file.txt"; + new_entry.mode = GIT_FILEMODE_BLOB; + + cl_git_pass(git_index_add_frombuffer(index, + &new_entry, content, strlen(content))); + + cl_assert((ret_entry = git_index_get_bypath(index, "dummy-file.txt", 0))); + cl_assert_equal_s("dummy-file.txt", ret_entry->path); + cl_assert_equal_i(GIT_FILEMODE_BLOB, ret_entry->mode); + + /* executable blob */ + new_entry.path = "dummy-file.txt"; + new_entry.mode = GIT_FILEMODE_BLOB_EXECUTABLE; + + cl_git_pass(git_index_add_frombuffer(index, + &new_entry, content, strlen(content))); + + cl_assert((ret_entry = git_index_get_bypath(index, "dummy-file.txt", 0))); + cl_assert_equal_s("dummy-file.txt", ret_entry->path); + cl_assert_equal_i(GIT_FILEMODE_BLOB_EXECUTABLE, ret_entry->mode); + + /* links are also acceptable */ + new_entry.path = "dummy-link.txt"; + new_entry.mode = GIT_FILEMODE_LINK; + + cl_git_pass(git_index_add_frombuffer(index, + &new_entry, content, strlen(content))); + + cl_assert((ret_entry = git_index_get_bypath(index, "dummy-link.txt", 0))); + cl_assert_equal_s("dummy-link.txt", ret_entry->path); + cl_assert_equal_i(GIT_FILEMODE_LINK, ret_entry->mode); + + /* trees are rejected */ + new_entry.path = "invalid_mode.txt"; + new_entry.mode = GIT_FILEMODE_TREE; + + cl_git_fail(git_index_add_frombuffer(index, + &new_entry, content, strlen(content))); + cl_assert_equal_p(NULL, git_index_get_bypath(index, "invalid_mode.txt", 0)); + + /* submodules are rejected */ + new_entry.path = "invalid_mode.txt"; + new_entry.mode = GIT_FILEMODE_COMMIT; + + cl_git_fail(git_index_add_frombuffer(index, + &new_entry, content, strlen(content))); + cl_assert_equal_p(NULL, git_index_get_bypath(index, "invalid_mode.txt", 0)); + + git_index_free(index); +} diff --git a/tests/iterator/iterator_helpers.c b/tests/iterator/iterator_helpers.c index ae48fcd46..68d574126 100644 --- a/tests/iterator/iterator_helpers.c +++ b/tests/iterator/iterator_helpers.c @@ -51,8 +51,7 @@ void expect_iterator_items( cl_assert(entry->mode != GIT_FILEMODE_TREE); } - if (++count >= expected_flat) - break; + cl_assert(++count <= expected_flat); } assert_at_end(i, v); diff --git a/tests/iterator/workdir.c b/tests/iterator/workdir.c index f33fd98f1..81016752c 100644 --- a/tests/iterator/workdir.c +++ b/tests/iterator/workdir.c @@ -610,6 +610,7 @@ void test_iterator_workdir__filesystem2(void) static const char *expect_base[] = { "heads/br2", "heads/dir", + "heads/executable", "heads/ident", "heads/long-file-name", "heads/master", @@ -630,7 +631,7 @@ void test_iterator_workdir__filesystem2(void) cl_git_pass(git_iterator_for_filesystem( &i, "testrepo/.git/refs", NULL)); - expect_iterator_items(i, 15, expect_base, 15, expect_base); + expect_iterator_items(i, 16, expect_base, 16, expect_base); git_iterator_free(i); } @@ -662,7 +663,7 @@ void test_iterator_workdir__filesystem_gunk(void) /* should only have 13 items, since we're not asking for trees to be * returned. the goal of this test is simply to not crash. */ - expect_iterator_items(i, 13, NULL, 13, NULL); + expect_iterator_items(i, 15, NULL, 15, NULL); git_iterator_free(i); git_buf_free(&parent); } @@ -741,6 +742,8 @@ void test_iterator_workdir__skips_fifos_and_special_files(void) cl_assert_equal_i(GIT_ITEROVER, git_iterator_advance(&e, i)); git_iterator_free(i); +#else + cl_skip(); #endif } diff --git a/tests/merge/conflict_data.h b/tests/merge/conflict_data.h index e6394a9e8..27f19c1b0 100644 --- a/tests/merge/conflict_data.h +++ b/tests/merge/conflict_data.h @@ -70,22 +70,22 @@ "This is a mighty fine recipe!\n" \ ">>>>>>> branchF-2\n" -#define CONFLICTING_RECURSIVE_H1_TO_H2_WITH_DIFF3 \ +#define CONFLICTING_RECURSIVE_H2_TO_H1_WITH_DIFF3 \ "VEAL SOUP.\n" \ "\n" \ "<<<<<<< HEAD\n" \ - "put into a pot three quarts of water, three onions cut small, one\n" \ - "||||||| merged common ancestors\n" \ - "<<<<<<< Temporary merge branch 1\n" \ - "Put into a pot three quarts of water, THREE ONIONS CUT SMALL, one\n" \ + "Put Into A Pot Three Quarts of Water, Three Onions Cut Small, One\n" \ "||||||| merged common ancestors\n" \ - "Put into a pot three quarts of water, three onions cut small, one\n" \ - "=======\n" \ + "<<<<<<<<< Temporary merge branch 1\n" \ "PUT INTO A POT three quarts of water, three onions cut small, one\n" \ - ">>>>>>> Temporary merge branch 2\n" \ + "||||||||| merged common ancestors\n" \ + "Put into a pot three quarts of water, three onions cut small, one\n" \ + "=========\n" \ + "Put into a pot three quarts of water, THREE ONIONS CUT SMALL, one\n" \ + ">>>>>>>>> Temporary merge branch 2\n" \ "=======\n" \ - "Put Into A Pot Three Quarts of Water, Three Onions Cut Small, One\n" \ - ">>>>>>> branchH-2\n" \ + "put into a pot three quarts of water, three onions cut small, one\n" \ + ">>>>>>> branchH-1\n" \ "spoonful of black pepper pounded, and two of salt, with two or three\n" \ "slices of lean ham; let it boil steadily two hours; skim it\n" \ "occasionally, then put into it a shin of veal, let it boil two hours\n" \ diff --git a/tests/merge/files.c b/tests/merge/files.c index daa73fada..6f5a1fd9c 100644 --- a/tests/merge/files.c +++ b/tests/merge/files.c @@ -377,3 +377,51 @@ void test_merge_files__handles_binaries_when_favored(void) git_merge_file_result_free(&result); } + +void test_merge_files__crlf_conflict_markers_for_crlf_files(void) +{ + git_merge_file_input ancestor = GIT_MERGE_FILE_INPUT_INIT, + ours = GIT_MERGE_FILE_INPUT_INIT, + theirs = GIT_MERGE_FILE_INPUT_INIT; + git_merge_file_options opts = GIT_MERGE_FILE_OPTIONS_INIT; + git_merge_file_result result = {0}; + + const char *expected = + "<<<<<<< file.txt\r\nThis file\r\ndoes, too.\r\n" + "=======\r\nAnd so does\r\nthis one.\r\n>>>>>>> file.txt\r\n"; + size_t expected_len = strlen(expected); + + const char *expected_diff3 = + "<<<<<<< file.txt\r\nThis file\r\ndoes, too.\r\n" + "||||||| file.txt\r\nThis file has\r\nCRLF line endings.\r\n" + "=======\r\nAnd so does\r\nthis one.\r\n>>>>>>> file.txt\r\n"; + size_t expected_diff3_len = strlen(expected_diff3); + + ancestor.ptr = "This file has\r\nCRLF line endings.\r\n"; + ancestor.size = 35; + ancestor.path = "file.txt"; + ancestor.mode = 0100644; + + ours.ptr = "This file\r\ndoes, too.\r\n"; + ours.size = 23; + ours.path = "file.txt"; + ours.mode = 0100644; + + theirs.ptr = "And so does\r\nthis one.\r\n"; + theirs.size = 24; + theirs.path = "file.txt"; + theirs.mode = 0100644; + + cl_git_pass(git_merge_file(&result, &ancestor, &ours, &theirs, &opts)); + cl_assert_equal_i(0, result.automergeable); + cl_assert_equal_i(expected_len, result.len); + cl_assert(memcmp(expected, result.ptr, expected_len) == 0); + git_merge_file_result_free(&result); + + opts.flags |= GIT_MERGE_FILE_STYLE_DIFF3; + cl_git_pass(git_merge_file(&result, &ancestor, &ours, &theirs, &opts)); + cl_assert_equal_i(0, result.automergeable); + cl_assert_equal_i(expected_diff3_len, result.len); + cl_assert(memcmp(expected_diff3, result.ptr, expected_len) == 0); + git_merge_file_result_free(&result); +} diff --git a/tests/merge/trees/recursive.c b/tests/merge/trees/recursive.c index c5b129bf8..71f5af150 100644 --- a/tests/merge/trees/recursive.c +++ b/tests/merge/trees/recursive.c @@ -312,7 +312,7 @@ void test_merge_trees_recursive__conflicting_merge_base(void) { 0100644, "4b7c5650008b2e747fe1809eeb5a1dde0e80850a", 0, "bouilli.txt" }, { 0100644, "c4e6cca3ec6ae0148ed231f97257df8c311e015f", 0, "gravy.txt" }, { 0100644, "68af1fc7407fd9addf1701a87eb1c95c7494c598", 0, "oyster.txt" }, - { 0100644, "3a66812fed1e03ea4a6a7ee28d8a57aec1ca6537", 1, "veal.txt" }, + { 0100644, "cfc01b0976122eae42a82064440bbf534eddd7a0", 1, "veal.txt" }, { 0100644, "d604c75019c282144bdbbf3fd3462ba74b240efc", 2, "veal.txt" }, { 0100644, "37a5054a9f9b4628e3924c5cb8f2147c6e2a3efc", 3, "veal.txt" }, }; @@ -339,14 +339,14 @@ void test_merge_trees_recursive__conflicting_merge_base_with_diff3(void) { 0100644, "4b7c5650008b2e747fe1809eeb5a1dde0e80850a", 0, "bouilli.txt" }, { 0100644, "c4e6cca3ec6ae0148ed231f97257df8c311e015f", 0, "gravy.txt" }, { 0100644, "68af1fc7407fd9addf1701a87eb1c95c7494c598", 0, "oyster.txt" }, - { 0100644, "cd17a91513f3aee9e44114d1ede67932dd41d2fc", 1, "veal.txt" }, - { 0100644, "d604c75019c282144bdbbf3fd3462ba74b240efc", 2, "veal.txt" }, - { 0100644, "37a5054a9f9b4628e3924c5cb8f2147c6e2a3efc", 3, "veal.txt" }, + { 0100644, "0b01d2f70a1c6b9ab60c382f3f9cdc8173da6736", 1, "veal.txt" }, + { 0100644, "37a5054a9f9b4628e3924c5cb8f2147c6e2a3efc", 2, "veal.txt" }, + { 0100644, "d604c75019c282144bdbbf3fd3462ba74b240efc", 3, "veal.txt" }, }; opts.file_flags |= GIT_MERGE_FILE_STYLE_DIFF3; - cl_git_pass(merge_commits_from_branches(&index, repo, "branchH-1", "branchH-2", &opts)); + cl_git_pass(merge_commits_from_branches(&index, repo, "branchH-2", "branchH-1", &opts)); cl_assert(merge_test_index(index, merge_index_entries, 8)); @@ -392,19 +392,67 @@ void test_merge_trees_recursive__recursionlimit(void) { 0100644, "ffb36e513f5fdf8a6ba850a20142676a2ac4807d", 0, "asparagus.txt" }, { 0100644, "68f6182f4c85d39e1309d97c7e456156dc9c0096", 0, "beef.txt" }, { 0100644, "4b7c5650008b2e747fe1809eeb5a1dde0e80850a", 0, "bouilli.txt" }, - { 0100644, "ce7e553c6feb6e5f3bd67e3c3be04182fe3094b4", 1, "gravy.txt" }, - { 0100644, "d8dd349b78f19a4ebe3357bacb8138f00bf5ed41", 2, "gravy.txt" }, - { 0100644, "e50fbbd701458757bdfe9815f58ed717c588d1b5", 3, "gravy.txt" }, + { 0100644, "c4e6cca3ec6ae0148ed231f97257df8c311e015f", 0, "gravy.txt" }, { 0100644, "68af1fc7407fd9addf1701a87eb1c95c7494c598", 0, "oyster.txt" }, - { 0100644, "a7b066537e6be7109abfe4ff97b675d4e077da20", 0, "veal.txt" }, + { 0100644, "53217e8ac3f52bccf7603b8fff0ed0f4817f9bb7", 1, "veal.txt" }, + { 0100644, "898d12687fb35be271c27c795a6b32c8b51da79e", 2, "veal.txt" }, + { 0100644, "68a2e1ee61a23a4728fe6b35580fbbbf729df370", 3, "veal.txt" }, }; opts.recursion_limit = 1; - cl_git_pass(merge_commits_from_branches(&index, repo, "branchE-1", "branchE-2", &opts)); + cl_git_pass(merge_commits_from_branches(&index, repo, "branchC-1", "branchC-2", &opts)); cl_assert(merge_test_index(index, merge_index_entries, 8)); git_index_free(index); } +/* There are multiple levels of criss-cross merges. This ensures + * that the virtual merge base parents are compared in the same + * order as git. If the base parents are created in the order as + * git does, then the file `targetfile.txt` is automerged. If not, + * `targetfile.txt` will be in conflict due to the virtual merge + * base. + */ +void test_merge_trees_recursive__merge_base_for_virtual_commit(void) +{ + git_index *index; + git_merge_options opts = GIT_MERGE_OPTIONS_INIT; + + struct merge_index_entry merge_index_entries[] = { + { 0100644, "1bde1883de4977ea3e664b315da951d1f614c3b1", 0, "targetfile.txt" }, + { 0100644, "b7de2b52ba055688061355fad1599a5d214ce8f8", 1, "version.txt" }, + { 0100644, "358efd6f589384fa8baf92234db9c7899a53916e", 2, "version.txt" }, + { 0100644, "a664873b1c0b9a1ed300f8644dde536fdaa3a34f", 3, "version.txt" }, + }; + + cl_git_pass(merge_commits_from_branches(&index, repo, "branchJ-1", "branchJ-2", &opts)); + + cl_assert(merge_test_index(index, merge_index_entries, 4)); + + git_index_free(index); +} + +/* This test is the same as above, but the graph is constructed such + * that the 1st-recursion merge bases of the two heads are + * in a different order. + */ +void test_merge_trees_recursive__merge_base_for_virtual_commit_2(void) +{ + git_index *index; + git_merge_options opts = GIT_MERGE_OPTIONS_INIT; + + struct merge_index_entry merge_index_entries[] = { + { 0100644, "4a06b258fed8a4d15967ec4253ae7366b70f727d", 0, "targetfile.txt" }, + { 0100644, "b6bd0f9952f396e757d3f91e08c59a7e91707201", 1, "version.txt" }, + { 0100644, "f0856993e005c0d8ed2dc7cdc222cc1d89fb3c77", 2, "version.txt" }, + { 0100644, "2cba583804a4a6fad1baf97c959be447238d1489", 3, "version.txt" }, + }; + + cl_git_pass(merge_commits_from_branches(&index, repo, "branchK-1", "branchK-2", &opts)); + + cl_assert(merge_test_index(index, merge_index_entries, 4)); + + git_index_free(index); +} diff --git a/tests/merge/workdir/recursive.c b/tests/merge/workdir/recursive.c index 795126255..d47a0c50b 100644 --- a/tests/merge/workdir/recursive.c +++ b/tests/merge/workdir/recursive.c @@ -44,7 +44,7 @@ void test_merge_workdir_recursive__writes_conflict_with_virtual_base(void) cl_git_pass(git_futils_readbuffer(&conflicting_buf, "merge-recursive/veal.txt")); cl_assert_equal_s(CONFLICTING_RECURSIVE_F1_TO_F2, conflicting_buf.ptr); - + git_index_free(index); git_buf_free(&conflicting_buf); } @@ -62,22 +62,22 @@ void test_merge_workdir_recursive__conflicting_merge_base_with_diff3(void) { 0100644, "4b7c5650008b2e747fe1809eeb5a1dde0e80850a", 0, "bouilli.txt" }, { 0100644, "c4e6cca3ec6ae0148ed231f97257df8c311e015f", 0, "gravy.txt" }, { 0100644, "68af1fc7407fd9addf1701a87eb1c95c7494c598", 0, "oyster.txt" }, - { 0100644, "cd17a91513f3aee9e44114d1ede67932dd41d2fc", 1, "veal.txt" }, - { 0100644, "d604c75019c282144bdbbf3fd3462ba74b240efc", 2, "veal.txt" }, - { 0100644, "37a5054a9f9b4628e3924c5cb8f2147c6e2a3efc", 3, "veal.txt" }, + { 0100644, "0b01d2f70a1c6b9ab60c382f3f9cdc8173da6736", 1, "veal.txt" }, + { 0100644, "37a5054a9f9b4628e3924c5cb8f2147c6e2a3efc", 2, "veal.txt" }, + { 0100644, "d604c75019c282144bdbbf3fd3462ba74b240efc", 3, "veal.txt" }, }; opts.file_flags |= GIT_MERGE_FILE_STYLE_DIFF3; checkout_opts.checkout_strategy |= GIT_CHECKOUT_CONFLICT_STYLE_DIFF3; - cl_git_pass(merge_branches(repo, GIT_REFS_HEADS_DIR "branchH-1", GIT_REFS_HEADS_DIR "branchH-2", &opts, &checkout_opts)); + cl_git_pass(merge_branches(repo, GIT_REFS_HEADS_DIR "branchH-2", GIT_REFS_HEADS_DIR "branchH-1", &opts, &checkout_opts)); cl_git_pass(git_repository_index(&index, repo)); cl_assert(merge_test_index(index, merge_index_entries, 8)); cl_git_pass(git_futils_readbuffer(&conflicting_buf, "merge-recursive/veal.txt")); - cl_assert_equal_s(CONFLICTING_RECURSIVE_H1_TO_H2_WITH_DIFF3, conflicting_buf.ptr); + cl_assert_equal_s(CONFLICTING_RECURSIVE_H2_TO_H1_WITH_DIFF3, conflicting_buf.ptr); git_index_free(index); git_buf_free(&conflicting_buf); diff --git a/tests/message/trailer.c b/tests/message/trailer.c new file mode 100644 index 000000000..9cc83de72 --- /dev/null +++ b/tests/message/trailer.c @@ -0,0 +1,165 @@ +#include "clar_libgit2.h" +#include "message.h" + +static void assert_trailers(const char *message, git_message_trailer *trailers) +{ + git_message_trailer_array arr; + size_t i; + + int rc = git_message_trailers(&arr, message); + + cl_assert_equal_i(0, rc); + + for(i=0; i<arr.count; i++) { + cl_assert_equal_s(arr.trailers[i].key, trailers[i].key); + cl_assert_equal_s(arr.trailers[i].value, trailers[i].value); + } + + cl_assert_equal_i(0, rc); + + git_message_trailer_array_free(&arr); +} + +void test_message_trailer__simple(void) +{ + git_message_trailer trailers[] = { + {"Signed-off-by", "foo@bar.com"}, + {"Signed-off-by", "someone@else.com"}, + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "Signed-off-by: foo@bar.com\n" + "Signed-off-by: someone@else.com\n" + , trailers); +} + +void test_message_trailer__no_whitespace(void) +{ + git_message_trailer trailers[] = { + {"Key", "value"}, + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "Key:value\n" + , trailers); +} + +void test_message_trailer__extra_whitespace(void) +{ + git_message_trailer trailers[] = { + {"Key", "value"}, + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "Key : value\n" + , trailers); +} + +void test_message_trailer__no_newline(void) +{ + git_message_trailer trailers[] = { + {"Key", "value"}, + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "Key: value" + , trailers); +} + +void test_message_trailer__not_last_paragraph(void) +{ + git_message_trailer trailers[] = { + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "Key: value\n" + "\n" + "More stuff\n" + , trailers); +} + +void test_message_trailer__conflicts(void) +{ + git_message_trailer trailers[] = { + {"Key", "value"}, + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "Key: value\n" + "\n" + "Conflicts:\n" + "\tfoo.c\n" + , trailers); +} + +void test_message_trailer__patch(void) +{ + git_message_trailer trailers[] = { + {"Key", "value"}, + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "Key: value\n" + "\n" + "---\n" + "More: stuff\n" + , trailers); +} + +void test_message_trailer__continuation(void) +{ + git_message_trailer trailers[] = { + {"A", "b\n c"}, + {"D", "e\n f: g h"}, + {"I", "j"}, + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "A: b\n" + " c\n" + "D: e\n" + " f: g h\n" + "I: j\n" + , trailers); +} + +void test_message_trailer__invalid(void) +{ + git_message_trailer trailers[] = { + {"Signed-off-by", "some@one.com"}, + {"Another", "trailer"}, + {NULL, NULL}, + }; + + assert_trailers( + "Message\n" + "\n" + "Signed-off-by: some@one.com\n" + "Not a trailer\n" + "Another: trailer\n" + , trailers); +} diff --git a/tests/network/fetchlocal.c b/tests/network/fetchlocal.c index 17c8f26e3..91e2a0595 100644 --- a/tests/network/fetchlocal.c +++ b/tests/network/fetchlocal.c @@ -314,12 +314,6 @@ void test_network_fetchlocal__prune_tag(void) git_repository_free(repo); } -static void cleanup_sandbox(void *unused) -{ - GIT_UNUSED(unused); - cl_git_sandbox_cleanup(); -} - void test_network_fetchlocal__partial(void) { git_repository *repo = cl_git_sandbox_init("partial-testrepo"); @@ -332,7 +326,6 @@ void test_network_fetchlocal__partial(void) options.callbacks.transfer_progress = transfer_cb; options.callbacks.payload = &callcount; - cl_set_cleanup(&cleanup_sandbox, NULL); cl_git_pass(git_reference_list(&refnames, repo)); cl_assert_equal_i(1, (int)refnames.count); @@ -420,7 +413,6 @@ void test_network_fetchlocal__multi_remotes(void) git_strarray refnames = {0}; git_fetch_options options = GIT_FETCH_OPTIONS_INIT; - cl_set_cleanup(&cleanup_sandbox, NULL); options.callbacks.transfer_progress = transfer_cb; cl_git_pass(git_remote_set_url(repo, "test", cl_git_fixture_url("testrepo.git"))); cl_git_pass(git_remote_lookup(&test, repo, "test")); diff --git a/tests/object/tree/write.c b/tests/object/tree/write.c index a9decf9c1..a1ee03d6d 100644 --- a/tests/object/tree/write.c +++ b/tests/object/tree/write.c @@ -495,6 +495,7 @@ static void test_inserting_submodule(void) git_treebuilder *bld; git_oid sm_id; + cl_git_pass(git_oid_fromstr(&sm_id, "da39a3ee5e6b4b0d3255bfef95601890afd80709")); cl_git_pass(git_treebuilder_new(&bld, g_repo, NULL)); cl_git_pass(git_treebuilder_insert(NULL, bld, "sm", &sm_id, GIT_FILEMODE_COMMIT)); git_treebuilder_free(bld); @@ -512,3 +513,14 @@ void test_object_tree_write__object_validity(void) test_inserting_submodule(); } +void test_object_tree_write__invalid_null_oid(void) +{ + git_treebuilder *bld; + git_oid null_oid = {{0}}; + + cl_git_pass(git_treebuilder_new(&bld, g_repo, NULL)); + cl_git_fail(git_treebuilder_insert(NULL, bld, "null_oid_file", &null_oid, GIT_FILEMODE_BLOB)); + cl_assert(giterr_last() && strstr(giterr_last()->message, "null OID") != NULL); + + git_treebuilder_free(bld); +} diff --git a/tests/odb/backend/mempack.c b/tests/odb/backend/mempack.c new file mode 100644 index 000000000..624f0e604 --- /dev/null +++ b/tests/odb/backend/mempack.c @@ -0,0 +1,60 @@ +#include "clar_libgit2.h" +#include "repository.h" +#include "backend_helpers.h" +#include "git2/sys/mempack.h" + +static git_odb *_odb; +static git_oid _oid; +static git_odb_object *_obj; +static git_repository *_repo; + +void test_odb_backend_mempack__initialize(void) +{ + git_odb_backend *backend; + + cl_git_pass(git_mempack_new(&backend)); + cl_git_pass(git_odb_new(&_odb)); + cl_git_pass(git_odb_add_backend(_odb, backend, 10)); + cl_git_pass(git_repository_wrap_odb(&_repo, _odb)); +} + +void test_odb_backend_mempack__cleanup(void) +{ + git_odb_object_free(_obj); + git_odb_free(_odb); + git_repository_free(_repo); +} + +void test_odb_backend_mempack__write_succeeds(void) +{ + const char *data = "data"; + cl_git_pass(git_odb_write(&_oid, _odb, data, strlen(data) + 1, GIT_OBJ_BLOB)); + cl_git_pass(git_odb_read(&_obj, _odb, &_oid)); +} + +void test_odb_backend_mempack__read_of_missing_object_fails(void) +{ + cl_git_pass(git_oid_fromstr(&_oid, "f6ea0495187600e7b2288c8ac19c5886383a4633")); + cl_git_fail_with(GIT_ENOTFOUND, git_odb_read(&_obj, _odb, &_oid)); +} + +void test_odb_backend_mempack__exists_of_missing_object_fails(void) +{ + cl_git_pass(git_oid_fromstr(&_oid, "f6ea0495187600e7b2288c8ac19c5886383a4633")); + cl_assert(git_odb_exists(_odb, &_oid) == 0); +} + +void test_odb_backend_mempack__exists_with_existing_objects_succeeds(void) +{ + const char *data = "data"; + cl_git_pass(git_odb_write(&_oid, _odb, data, strlen(data) + 1, GIT_OBJ_BLOB)); + cl_assert(git_odb_exists(_odb, &_oid) == 1); +} + +void test_odb_backend_mempack__blob_create_frombuffer_succeeds(void) +{ + const char *data = "data"; + + cl_git_pass(git_blob_create_frombuffer(&_oid, _repo, data, strlen(data) + 1)); + cl_assert(git_odb_exists(_odb, &_oid) == 1); +} diff --git a/tests/odb/backend/simple.c b/tests/odb/backend/simple.c index c0fcd403b..f4d29cc76 100644 --- a/tests/odb/backend/simple.c +++ b/tests/odb/backend/simple.c @@ -230,3 +230,21 @@ void test_odb_backend_simple__exists_with_highly_ambiguous_prefix(void) cl_git_pass(git_odb_exists_prefix(&found, _odb, &_oid, 40)); cl_assert(git_oid_equal(&found, &_oid)); } + +void test_odb_backend_simple__null_oid_is_ignored(void) +{ + const fake_object objs[] = { + { "0000000000000000000000000000000000000000", "null oid content" }, + { NULL, NULL } + }; + git_oid null_oid = {{0}}; + git_odb_object *obj; + + setup_backend(objs); + + cl_git_pass(git_libgit2_opts(GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION, 0)); + cl_assert(!git_odb_exists(_odb, &null_oid)); + + cl_git_fail_with(GIT_ENOTFOUND, git_odb_read(&obj, _odb, &null_oid)); + cl_assert(giterr_last() && strstr(giterr_last()->message, "null OID")); +} diff --git a/tests/odb/largefiles.c b/tests/odb/largefiles.c index 22f136df5..a5b982e14 100644 --- a/tests/odb/largefiles.c +++ b/tests/odb/largefiles.c @@ -1,5 +1,9 @@ #include "clar_libgit2.h" #include "git2/odb_backend.h" +#include "hash.h" +#include "odb.h" + +#define LARGEFILE_SIZE 5368709122 static git_repository *repo; static git_odb *odb; @@ -25,7 +29,7 @@ static void writefile(git_oid *oid) for (i = 0; i < 3041; i++) cl_git_pass(git_buf_puts(&buf, "Hello, world.\n")); - cl_git_pass(git_odb_open_wstream(&stream, odb, 5368709122, GIT_OBJ_BLOB)); + cl_git_pass(git_odb_open_wstream(&stream, odb, LARGEFILE_SIZE, GIT_OBJ_BLOB)); for (i = 0; i < 126103; i++) cl_git_pass(git_odb_stream_write(stream, buf.ptr, buf.size)); @@ -63,6 +67,10 @@ void test_odb_largefiles__streamwrite(void) { git_oid expected, oid; +#ifndef GIT_ARCH_64 + cl_skip(); +#endif + if (!cl_is_env_set("GITTEST_INVASIVE_FS_SIZE") || !cl_is_env_set("GITTEST_SLOW")) cl_skip(); @@ -73,6 +81,52 @@ void test_odb_largefiles__streamwrite(void) cl_assert_equal_oid(&expected, &oid); } +void test_odb_largefiles__streamread(void) +{ + git_oid oid, read_oid; + git_odb_stream *stream; + char buf[10240]; + char hdr[64]; + size_t len, hdr_len, total = 0; + git_hash_ctx hash; + git_otype type; + int ret; + +#ifndef GIT_ARCH_64 + cl_skip(); +#endif + + if (!cl_is_env_set("GITTEST_INVASIVE_FS_SIZE") || + !cl_is_env_set("GITTEST_SLOW")) + cl_skip(); + + writefile(&oid); + + cl_git_pass(git_odb_open_rstream(&stream, &len, &type, odb, &oid)); + + cl_assert_equal_sz(LARGEFILE_SIZE, len); + cl_assert_equal_i(GIT_OBJ_BLOB, type); + + cl_git_pass(git_hash_ctx_init(&hash)); + cl_git_pass(git_odb__format_object_header(&hdr_len, hdr, sizeof(hdr), len, type)); + + cl_git_pass(git_hash_update(&hash, hdr, hdr_len)); + + while ((ret = git_odb_stream_read(stream, buf, 10240)) > 0) { + cl_git_pass(git_hash_update(&hash, buf, ret)); + total += ret; + } + + cl_assert_equal_sz(LARGEFILE_SIZE, total); + + git_hash_final(&read_oid, &hash); + + cl_assert_equal_oid(&oid, &read_oid); + + git_hash_ctx_cleanup(&hash); + git_odb_stream_free(stream); +} + void test_odb_largefiles__read_into_memory(void) { git_oid oid; @@ -112,3 +166,24 @@ void test_odb_largefiles__read_into_memory_rejected_on_32bit(void) git_odb_object_free(obj); } + +void test_odb_largefiles__read_header(void) +{ + git_oid oid; + size_t len; + git_otype type; + +#ifndef GIT_ARCH_64 + cl_skip(); +#endif + + if (!cl_is_env_set("GITTEST_INVASIVE_FS_SIZE") || + !cl_is_env_set("GITTEST_SLOW")) + cl_skip(); + + writefile(&oid); + cl_git_pass(git_odb_read_header(&len, &type, odb, &oid)); + + cl_assert_equal_sz(LARGEFILE_SIZE, len); + cl_assert_equal_i(GIT_OBJ_BLOB, type); +} diff --git a/tests/odb/loose.c b/tests/odb/loose.c index 2e24d6723..83d080729 100644 --- a/tests/odb/loose.c +++ b/tests/odb/loose.c @@ -55,6 +55,63 @@ static void test_read_object(object_data *data) git_odb_free(odb); } +static void test_read_header(object_data *data) +{ + git_oid id; + git_odb *odb; + size_t len; + git_otype type; + + write_object_files(data); + + cl_git_pass(git_odb_open(&odb, "test-objects")); + cl_git_pass(git_oid_fromstr(&id, data->id)); + cl_git_pass(git_odb_read_header(&len, &type, odb, &id)); + + cl_assert_equal_sz(data->dlen, len); + cl_assert_equal_i(git_object_string2type(data->type), type); + + git_odb_free(odb); +} + +static void test_readstream_object(object_data *data, size_t blocksize) +{ + git_oid id; + git_odb *odb; + git_odb_stream *stream; + git_rawobj tmp; + char buf[2048], *ptr = buf; + size_t remain; + int ret; + + write_object_files(data); + + cl_git_pass(git_odb_open(&odb, "test-objects")); + cl_git_pass(git_oid_fromstr(&id, data->id)); + cl_git_pass(git_odb_open_rstream(&stream, &tmp.len, &tmp.type, odb, &id)); + + remain = tmp.len; + + while (remain) { + cl_assert((ret = git_odb_stream_read(stream, ptr, blocksize)) >= 0); + if (ret == 0) + break; + + cl_assert(remain >= (size_t)ret); + remain -= ret; + ptr += ret; + } + + cl_assert(remain == 0); + + tmp.data = buf; + + cmp_objects(&tmp, data); + + git_odb_stream_free(stream); + git_odb_free(odb); +} + void test_odb_loose__initialize(void) { p_fsync__cnt = 0; @@ -103,6 +160,33 @@ void test_odb_loose__simple_reads(void) test_read_object(&some); } +void test_odb_loose__streaming_reads(void) +{ + size_t blocksizes[] = { 1, 2, 4, 16, 99, 1024, 123456789 }; + size_t i; + + for (i = 0; i < ARRAY_SIZE(blocksizes); i++) { + test_readstream_object(&commit, blocksizes[i]); + test_readstream_object(&tree, blocksizes[i]); + test_readstream_object(&tag, blocksizes[i]); + test_readstream_object(&zero, blocksizes[i]); + test_readstream_object(&one, blocksizes[i]); + test_readstream_object(&two, blocksizes[i]); + test_readstream_object(&some, blocksizes[i]); + } +} + +void test_odb_loose__read_header(void) +{ + test_read_header(&commit); + test_read_header(&tree); + test_read_header(&tag); + test_read_header(&zero); + test_read_header(&one); + test_read_header(&two); + test_read_header(&some); +} + void test_write_object_permission( mode_t dir_mode, mode_t file_mode, mode_t expected_dir_mode, mode_t expected_file_mode) diff --git a/tests/online/clone.c b/tests/online/clone.c index 5eda73f87..43106145c 100644 --- a/tests/online/clone.c +++ b/tests/online/clone.c @@ -28,6 +28,9 @@ static char *_remote_proxy_url = NULL; static char *_remote_proxy_user = NULL; static char *_remote_proxy_pass = NULL; +static int _orig_proxies_need_reset = 0; +static char *_orig_http_proxy = NULL; +static char *_orig_https_proxy = NULL; void test_online_clone__initialize(void) { @@ -52,6 +55,8 @@ void test_online_clone__initialize(void) _remote_proxy_url = cl_getenv("GITTEST_REMOTE_PROXY_URL"); _remote_proxy_user = cl_getenv("GITTEST_REMOTE_PROXY_USER"); _remote_proxy_pass = cl_getenv("GITTEST_REMOTE_PROXY_PASS"); + + _orig_proxies_need_reset = 0; } void test_online_clone__cleanup(void) @@ -72,6 +77,14 @@ void test_online_clone__cleanup(void) git__free(_remote_proxy_url); git__free(_remote_proxy_user); git__free(_remote_proxy_pass); + + if (_orig_proxies_need_reset) { + cl_setenv("HTTP_PROXY", _orig_http_proxy); + cl_setenv("HTTPS_PROXY", _orig_https_proxy); + + git__free(_orig_http_proxy); + git__free(_orig_https_proxy); + } } void test_online_clone__network_full(void) @@ -263,8 +276,8 @@ static int cred_failure_cb( void test_online_clone__cred_callback_failure_return_code_is_tunnelled(void) { - if (!_remote_url || !_remote_user) - clar__skip(); + _remote_url = git__strdup("https://github.com/libgit2/non-existent"); + _remote_user = git__strdup("libgit2test"); g_options.fetch_opts.callbacks.credentials = cred_failure_cb; @@ -293,8 +306,8 @@ void test_online_clone__cred_callback_called_again_on_auth_failure(void) { size_t counter = 0; - if (!_remote_url || !_remote_user) - clar__skip(); + _remote_url = git__strdup("https://github.com/libgit2/non-existent"); + _remote_user = git__strdup("libgit2test"); g_options.fetch_opts.callbacks.credentials = cred_count_calls_cb; g_options.fetch_opts.callbacks.payload = &counter; @@ -348,7 +361,7 @@ void test_online_clone__credentials(void) void test_online_clone__bitbucket_style(void) { git_cred_userpass_payload user_pass = { - "libgit2", "libgit2" + "libgit3", "libgit3" }; g_options.fetch_opts.callbacks.credentials = git_cred_userpass; @@ -357,15 +370,45 @@ void test_online_clone__bitbucket_style(void) cl_git_pass(git_clone(&g_repo, BB_REPO_URL, "./foo", &g_options)); git_repository_free(g_repo); g_repo = NULL; cl_fixture_cleanup("./foo"); +} + +void test_online_clone__bitbucket_uses_creds_in_url(void) +{ + git_cred_userpass_payload user_pass = { + "libgit2", "wrong" + }; + + g_options.fetch_opts.callbacks.credentials = git_cred_userpass; + g_options.fetch_opts.callbacks.payload = &user_pass; - /* User and pass from URL */ - user_pass.password = "wrong"; + /* + * Correct user and pass are in the URL; the (incorrect) creds in + * the `git_cred_userpass_payload` should be ignored. + */ cl_git_pass(git_clone(&g_repo, BB_REPO_URL_WITH_PASS, "./foo", &g_options)); git_repository_free(g_repo); g_repo = NULL; cl_fixture_cleanup("./foo"); +} + +void test_online_clone__bitbucket_falls_back_to_specified_creds(void) +{ + git_cred_userpass_payload user_pass = { + "libgit2", "libgit2" + }; + + g_options.fetch_opts.callbacks.credentials = git_cred_userpass; + g_options.fetch_opts.callbacks.payload = &user_pass; - /* Wrong password in URL, fall back to user_pass */ - user_pass.password = "libgit2"; + /* + * TODO: as of March 2018, bitbucket sporadically fails with + * 403s instead of replying with a 401 - but only sometimes. + */ + cl_skip(); + + /* + * Incorrect user and pass are in the URL; the (correct) creds in + * the `git_cred_userpass_payload` should be used as a fallback. + */ cl_git_pass(git_clone(&g_repo, BB_REPO_URL_WITH_WRONG_PASS, "./foo", &g_options)); git_repository_free(g_repo); g_repo = NULL; cl_fixture_cleanup("./foo"); @@ -677,25 +720,60 @@ static int proxy_creds(git_cred **out, const char *url, const char *username, un void test_online_clone__proxy_credentials_request(void) { + git_buf url = GIT_BUF_INIT; + if (!_remote_proxy_url || !_remote_proxy_user || !_remote_proxy_pass) cl_skip(); + cl_git_pass(git_buf_printf(&url, "http://%s/", _remote_proxy_url)); + g_options.fetch_opts.proxy_opts.type = GIT_PROXY_SPECIFIED; - g_options.fetch_opts.proxy_opts.url = _remote_proxy_url; + g_options.fetch_opts.proxy_opts.url = url.ptr; g_options.fetch_opts.proxy_opts.credentials = proxy_creds; called_proxy_creds = 0; cl_git_pass(git_clone(&g_repo, "http://github.com/libgit2/TestGitRepository", "./foo", &g_options)); cl_assert(called_proxy_creds); + + git_buf_free(&url); } void test_online_clone__proxy_credentials_in_url(void) { - if (!_remote_proxy_url) + git_buf url = GIT_BUF_INIT; + + if (!_remote_proxy_url || !_remote_proxy_user || !_remote_proxy_pass) cl_skip(); + cl_git_pass(git_buf_printf(&url, "http://%s:%s@%s/", _remote_proxy_user, _remote_proxy_pass, _remote_proxy_url)); + g_options.fetch_opts.proxy_opts.type = GIT_PROXY_SPECIFIED; - g_options.fetch_opts.proxy_opts.url = _remote_proxy_url; + g_options.fetch_opts.proxy_opts.url = url.ptr; called_proxy_creds = 0; cl_git_pass(git_clone(&g_repo, "http://github.com/libgit2/TestGitRepository", "./foo", &g_options)); cl_assert(called_proxy_creds == 0); + + git_buf_free(&url); +} + +void test_online_clone__proxy_credentials_in_environment(void) +{ + git_buf url = GIT_BUF_INIT; + + if (!_remote_proxy_url || !_remote_proxy_user || !_remote_proxy_pass) + cl_skip(); + + _orig_http_proxy = cl_getenv("HTTP_PROXY"); + _orig_https_proxy = cl_getenv("HTTPS_PROXY"); + _orig_proxies_need_reset = 1; + + g_options.fetch_opts.proxy_opts.type = GIT_PROXY_AUTO; + + cl_git_pass(git_buf_printf(&url, "http://%s:%s@%s/", _remote_proxy_user, _remote_proxy_pass, _remote_proxy_url)); + + cl_setenv("HTTP_PROXY", url.ptr); + cl_setenv("HTTPS_PROXY", url.ptr); + + cl_git_pass(git_clone(&g_repo, "http://github.com/libgit2/TestGitRepository", "./foo", &g_options)); + + git_buf_free(&url); } diff --git a/tests/perf/merge.c b/tests/perf/merge.c index b2ef082eb..721902d63 100644 --- a/tests/perf/merge.c +++ b/tests/perf/merge.c @@ -25,20 +25,7 @@ #define ID_BRANCH_A "d853fb9f24e0fe63b3dce9fbc04fd9cfe17a030b" #define ID_BRANCH_B "1ce9ea3ba9b4fa666602d52a5281d41a482cc58b" - -void test_perf_merge__initialize(void) -{ -} - -void test_perf_merge__cleanup(void) -{ -} - void test_perf_merge__m1(void) { -#if 1 - cl_skip(); -#else perf__do_merge(SRC_REPO, "m1", ID_BRANCH_A, ID_BRANCH_B); -#endif } diff --git a/tests/refs/dup.c b/tests/refs/dup.c index 0fc635a7a..8a89cd95c 100644 --- a/tests/refs/dup.c +++ b/tests/refs/dup.c @@ -21,6 +21,7 @@ void test_refs_dup__direct(void) cl_git_pass(git_reference_dup(&b, a)); cl_assert(git_reference_cmp(a, b) == 0); + cl_assert(git_reference_owner(b) == g_repo); git_reference_free(b); git_reference_free(a); @@ -34,6 +35,7 @@ void test_refs_dup__symbolic(void) cl_git_pass(git_reference_dup(&b, a)); cl_assert(git_reference_cmp(a, b) == 0); + cl_assert(git_reference_owner(b) == g_repo); git_reference_free(b); git_reference_free(a); diff --git a/tests/refs/iterator.c b/tests/refs/iterator.c index 56f6ce505..18e9d1d5b 100644 --- a/tests/refs/iterator.c +++ b/tests/refs/iterator.c @@ -213,6 +213,7 @@ void test_refs_iterator__foreach_name(void) git_vector_foreach(&output, i, name) { cl_assert(refnames[i] != NULL); cl_assert_equal_s(refnames[i], name); + git__free(name); } git_vector_free(&output); diff --git a/tests/refs/list.c b/tests/refs/list.c index f7ca3f707..97461fd69 100644 --- a/tests/refs/list.c +++ b/tests/refs/list.c @@ -36,7 +36,7 @@ void test_refs_list__all(void) /* We have exactly 12 refs in total if we include the packed ones: * there is a reference that exists both in the packfile and as * loose, but we only list it once */ - cl_assert_equal_i((int)ref_list.count, 17); + cl_assert_equal_i((int)ref_list.count, 18); git_strarray_free(&ref_list); } @@ -51,7 +51,7 @@ void test_refs_list__do_not_retrieve_references_which_name_end_with_a_lock_exten "144344043ba4d4a405da03de3844aa829ae8be0e\n"); cl_git_pass(git_reference_list(&ref_list, g_repo)); - cl_assert_equal_i((int)ref_list.count, 17); + cl_assert_equal_i((int)ref_list.count, 18); git_strarray_free(&ref_list); } diff --git a/tests/repo/open.c b/tests/repo/open.c index 3239b6fec..ab36dd587 100644 --- a/tests/repo/open.c +++ b/tests/repo/open.c @@ -180,6 +180,8 @@ void test_repo_open__from_git_new_workdir(void) cl_assert_(git__suffixcmp(git_repository_workdir(repo2), "alternate/") == 0, git_repository_workdir(repo2)); git_repository_free(repo2); +#else + cl_skip(); #endif } diff --git a/tests/resources/crlf_data/README b/tests/resources/crlf_data/README new file mode 100644 index 000000000..2347e126f --- /dev/null +++ b/tests/resources/crlf_data/README @@ -0,0 +1,2 @@ +This test data was generated using the `tests/resources/generate_crlf.sh` +script. Please see that script for usage information. diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-all-lf b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-all-lf index 85340755c..af6fcf6da 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-all-lf +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-all-lf @@ -1,4 +1,4 @@ -one
-two
-three
-four
+one +two +three +four diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr index fd2abfa9d..203555c56 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr-crlf b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr-crlf index fd2abfa9d..aaf083a9c 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr index df8c0f680..d11e7ef63 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr-crlf b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr-crlf index df8c0f680..417786fc3 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-crlf b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-crlf-utf8bom b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-crlf-utf8bom +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-lf b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-lf +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-lf-utf8bom b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-lf-utf8bom +++ b/tests/resources/crlf_data/posix/autocrlf_false,text_auto,eol_crlf/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-all-lf b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-all-lf index 85340755c..af6fcf6da 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-all-lf +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-all-lf @@ -1,4 +1,4 @@ -one
-two
-three
-four
+one +two +three +four diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr index fd2abfa9d..203555c56 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr-crlf b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr-crlf index fd2abfa9d..aaf083a9c 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr index df8c0f680..d11e7ef63 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr-crlf b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr-crlf index df8c0f680..417786fc3 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-crlf b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-crlf-utf8bom b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-crlf-utf8bom +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-lf b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-lf +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-lf-utf8bom b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-lf-utf8bom +++ b/tests/resources/crlf_data/posix/autocrlf_input,text_auto,eol_crlf/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-all-lf b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-all-lf index 85340755c..af6fcf6da 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-all-lf +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-all-lf @@ -1,4 +1,4 @@ -one
-two
-three
-four
+one +two +three +four diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr index fd2abfa9d..203555c56 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr-crlf b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr-crlf index fd2abfa9d..aaf083a9c 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr index df8c0f680..d11e7ef63 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr-crlf b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr-crlf index df8c0f680..417786fc3 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-crlf b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-crlf-utf8bom b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-crlf-utf8bom +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-lf b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-lf +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-lf-utf8bom b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-lf-utf8bom +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto,eol_crlf/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-crlf b/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-crlf +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-crlf-utf8bom b/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-crlf-utf8bom +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-lf b/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-lf +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-lf-utf8bom b/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-lf-utf8bom +++ b/tests/resources/crlf_data/posix/autocrlf_true,text_auto/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-all-lf b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-all-lf index 85340755c..af6fcf6da 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-all-lf +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-all-lf @@ -1,4 +1,4 @@ -one
-two
-three
-four
+one +two +three +four diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr index fd2abfa9d..203555c56 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr-crlf b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr-crlf index fd2abfa9d..aaf083a9c 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/binary-mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr index df8c0f680..d11e7ef63 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr-crlf b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr-crlf index df8c0f680..417786fc3 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-crlf b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-crlf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-crlf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-lf b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-lf +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-lf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-lf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto,eol_crlf/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-crlf b/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-crlf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-crlf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-lf b/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-lf +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-lf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-lf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_false,text_auto/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-all-lf b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-all-lf index 85340755c..af6fcf6da 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-all-lf +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-all-lf @@ -1,4 +1,4 @@ -one
-two
-three
-four
+one +two +three +four diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr index fd2abfa9d..203555c56 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr-crlf b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr-crlf index fd2abfa9d..aaf083a9c 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/binary-mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr index df8c0f680..d11e7ef63 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr-crlf b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr-crlf index df8c0f680..417786fc3 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-crlf b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-crlf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-crlf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-lf b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-lf +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-lf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-lf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_input,text_auto,eol_crlf/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-all-lf b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-all-lf index 85340755c..af6fcf6da 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-all-lf +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-all-lf @@ -1,4 +1,4 @@ -one
-two
-three
-four
+one +two +three +four diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr index fd2abfa9d..203555c56 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr-crlf b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr-crlf index fd2abfa9d..aaf083a9c 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/binary-mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr index df8c0f680..d11e7ef63 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr @@ -1,3 +1,3 @@ -one
-two
three
+one +two
three four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr-crlf b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr-crlf index df8c0f680..417786fc3 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/mixed-lf-cr-crlf @@ -1,3 +1,3 @@ -one
+one two
three
four
\ No newline at end of file diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-crlf b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-crlf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-crlf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-lf b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-lf +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-lf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-lf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto,eol_crlf/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-crlf b/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-crlf index e682c3077..0ff5a53f1 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-crlf +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-crlf @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-crlf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-crlf-utf8bom index 2e1220cbb..ea030d3c6 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-crlf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-crlf-utf8bom @@ -1,5 +1,5 @@ crlf
crlf
-lf
+lf crlf
crlf
diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-lf b/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-lf index 6da5b0c7e..04de00b35 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-lf +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-lf @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-lf-utf8bom b/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-lf-utf8bom index 3fa59c809..dc88e3b91 100644 --- a/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-lf-utf8bom +++ b/tests/resources/crlf_data/windows/autocrlf_true,text_auto/more-lf-utf8bom @@ -1,5 +1,5 @@ -lf
-lf
+lf +lf crlf
-lf
-lf
+lf +lf diff --git a/tests/generate_crlf.sh b/tests/resources/generate_crlf.sh index d3fd1bb9a..70534543f 100644..100755 --- a/tests/generate_crlf.sh +++ b/tests/resources/generate_crlf.sh @@ -1,4 +1,16 @@ #!/usr/bin/env bash +# +# This script will generate the test corpus for CR/LF data using git; +# we create files with all possible line ending varieties (all LF, all +# CRLF, mixed, etc) on all the possible line ending configurations +# (`core.autocrlf=true`, `text=auto` in gitattributes, etc). This +# allows us to validate that our configuration will match byte-for-byte +# the configuration that git produces. +# +# To update the test resource data, from the test resource directory: +# git rm -r ./crlf_data +# sh ./generate_crlf.sh ./crlf ./crlf_data /tmp/crlf_gitdirs +# git add ./crlf_data set -e diff --git a/tests/resources/merge-recursive/.gitted/objects/03/9d0da126f24b819a5a38186249c7f96be3824c b/tests/resources/merge-recursive/.gitted/objects/03/9d0da126f24b819a5a38186249c7f96be3824c Binary files differnew file mode 100644 index 000000000..79ad635ff --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/03/9d0da126f24b819a5a38186249c7f96be3824c diff --git a/tests/resources/merge-recursive/.gitted/objects/05/63b7706dcdcf94bc0c02cd96c137940278eca9 b/tests/resources/merge-recursive/.gitted/objects/05/63b7706dcdcf94bc0c02cd96c137940278eca9 Binary files differnew file mode 100644 index 000000000..c6d38a7d3 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/05/63b7706dcdcf94bc0c02cd96c137940278eca9 diff --git a/tests/resources/merge-recursive/.gitted/objects/08/f01e1bff7e442d574eb221913515b4bd27ccd6 b/tests/resources/merge-recursive/.gitted/objects/08/f01e1bff7e442d574eb221913515b4bd27ccd6 Binary files differnew file mode 100644 index 000000000..c2fbf5ba7 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/08/f01e1bff7e442d574eb221913515b4bd27ccd6 diff --git a/tests/resources/merge-recursive/.gitted/objects/0b/beee1982b493330e375a85bbfddaba3d561556 b/tests/resources/merge-recursive/.gitted/objects/0b/beee1982b493330e375a85bbfddaba3d561556 Binary files differnew file mode 100644 index 000000000..66b927246 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/0b/beee1982b493330e375a85bbfddaba3d561556 diff --git a/tests/resources/merge-recursive/.gitted/objects/0c/e202f64fa8356c1a32835fce4058ca76b0c7ed b/tests/resources/merge-recursive/.gitted/objects/0c/e202f64fa8356c1a32835fce4058ca76b0c7ed Binary files differnew file mode 100644 index 000000000..9a84b7149 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/0c/e202f64fa8356c1a32835fce4058ca76b0c7ed diff --git a/tests/resources/merge-recursive/.gitted/objects/0e/c39d71c1b074905350ce20ce3f0629f737a2a9 b/tests/resources/merge-recursive/.gitted/objects/0e/c39d71c1b074905350ce20ce3f0629f737a2a9 Binary files differnew file mode 100644 index 000000000..68808d2f3 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/0e/c39d71c1b074905350ce20ce3f0629f737a2a9 diff --git a/tests/resources/merge-recursive/.gitted/objects/17/946ad3088f931102e5d81f94cf2825fc188953 b/tests/resources/merge-recursive/.gitted/objects/17/946ad3088f931102e5d81f94cf2825fc188953 Binary files differnew file mode 100644 index 000000000..9cc133e94 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/17/946ad3088f931102e5d81f94cf2825fc188953 diff --git a/tests/resources/merge-recursive/.gitted/objects/18/2d0d250d1d7adcc60c178be5be98358b3a2fd1 b/tests/resources/merge-recursive/.gitted/objects/18/2d0d250d1d7adcc60c178be5be98358b3a2fd1 new file mode 100644 index 000000000..96674c89b --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/18/2d0d250d1d7adcc60c178be5be98358b3a2fd1 @@ -0,0 +1,5 @@ +xK +1]_>@H +^<j2i4Fg9ʼn ++3L6{vX +`F:?CtM`y"*iT)R3M!{3+ךqϷ%@m9I
{ܫvpx/E
\ No newline at end of file diff --git a/tests/resources/merge-recursive/.gitted/objects/1b/c7bcccf4bbdc8bfba2331a37ad5e9cf1dd321c b/tests/resources/merge-recursive/.gitted/objects/1b/c7bcccf4bbdc8bfba2331a37ad5e9cf1dd321c Binary files differnew file mode 100644 index 000000000..811716700 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/1b/c7bcccf4bbdc8bfba2331a37ad5e9cf1dd321c diff --git a/tests/resources/merge-recursive/.gitted/objects/1b/de1883de4977ea3e664b315da951d1f614c3b1 b/tests/resources/merge-recursive/.gitted/objects/1b/de1883de4977ea3e664b315da951d1f614c3b1 Binary files differnew file mode 100644 index 000000000..67daf36ae --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/1b/de1883de4977ea3e664b315da951d1f614c3b1 diff --git a/tests/resources/merge-recursive/.gitted/objects/23/b427bf6278724433e64ef4cf6dc166c4f2e246 b/tests/resources/merge-recursive/.gitted/objects/23/b427bf6278724433e64ef4cf6dc166c4f2e246 Binary files differnew file mode 100644 index 000000000..03be909e4 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/23/b427bf6278724433e64ef4cf6dc166c4f2e246 diff --git a/tests/resources/merge-recursive/.gitted/objects/23/cf2687a9327d55abbbd788ff04fa932072aebc b/tests/resources/merge-recursive/.gitted/objects/23/cf2687a9327d55abbbd788ff04fa932072aebc Binary files differnew file mode 100644 index 000000000..5cc665a0c --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/23/cf2687a9327d55abbbd788ff04fa932072aebc diff --git a/tests/resources/merge-recursive/.gitted/objects/26/d3c94459b4faa08f009b15867993ca34153592 b/tests/resources/merge-recursive/.gitted/objects/26/d3c94459b4faa08f009b15867993ca34153592 new file mode 100644 index 000000000..dd7b1a245 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/26/d3c94459b4faa08f009b15867993ca34153592 @@ -0,0 +1,2 @@ +xA +1E]vڂ+O 3mF*x{\yZ܀7BH5Ț:sYB9D3Ohk1T-ؑpt>N"1[!#v_+\>uVo,ӭȼZ@2l1 N{`?Ts6_?B*
\ No newline at end of file diff --git a/tests/resources/merge-recursive/.gitted/objects/2c/ba583804a4a6fad1baf97c959be447238d1489 b/tests/resources/merge-recursive/.gitted/objects/2c/ba583804a4a6fad1baf97c959be447238d1489 Binary files differnew file mode 100644 index 000000000..c0a60a172 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/2c/ba583804a4a6fad1baf97c959be447238d1489 diff --git a/tests/resources/merge-recursive/.gitted/objects/2e/7ae0d42fb7b6126f6a08ac6314ac07833a52f6 b/tests/resources/merge-recursive/.gitted/objects/2e/7ae0d42fb7b6126f6a08ac6314ac07833a52f6 Binary files differnew file mode 100644 index 000000000..6a9651c76 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/2e/7ae0d42fb7b6126f6a08ac6314ac07833a52f6 diff --git a/tests/resources/merge-recursive/.gitted/objects/30/39c07db695c8c99d0a7c7e32f0afe40eae0be0 b/tests/resources/merge-recursive/.gitted/objects/30/39c07db695c8c99d0a7c7e32f0afe40eae0be0 new file mode 100644 index 000000000..cc21b5c31 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/30/39c07db695c8c99d0a7c7e32f0afe40eae0be0 @@ -0,0 +1,3 @@ +xQ +!@sB"茵mݾ +}^^Z"(J8iŌI]98Xd)QNX"[2^t|,pZ }5./[V]B
\ No newline at end of file diff --git a/tests/resources/merge-recursive/.gitted/objects/35/8efd6f589384fa8baf92234db9c7899a53916e b/tests/resources/merge-recursive/.gitted/objects/35/8efd6f589384fa8baf92234db9c7899a53916e Binary files differnew file mode 100644 index 000000000..aefc81ad5 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/35/8efd6f589384fa8baf92234db9c7899a53916e diff --git a/tests/resources/merge-recursive/.gitted/objects/35/dda4f3f9b3794d92a46d908790e550ed100eae b/tests/resources/merge-recursive/.gitted/objects/35/dda4f3f9b3794d92a46d908790e550ed100eae Binary files differnew file mode 100644 index 000000000..d6cabb419 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/35/dda4f3f9b3794d92a46d908790e550ed100eae diff --git a/tests/resources/merge-recursive/.gitted/objects/36/71e42c8c8302d1a71c0ed7bf2b0a938e9e20f9 b/tests/resources/merge-recursive/.gitted/objects/36/71e42c8c8302d1a71c0ed7bf2b0a938e9e20f9 Binary files differnew file mode 100644 index 000000000..4f70ad6d4 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/36/71e42c8c8302d1a71c0ed7bf2b0a938e9e20f9 diff --git a/tests/resources/merge-recursive/.gitted/objects/39/78944e4cd53edcc10a170ab2ff142f7295b958 b/tests/resources/merge-recursive/.gitted/objects/39/78944e4cd53edcc10a170ab2ff142f7295b958 Binary files differnew file mode 100644 index 000000000..b18fd4836 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/39/78944e4cd53edcc10a170ab2ff142f7295b958 diff --git a/tests/resources/merge-recursive/.gitted/objects/3a/0dc89a8bd20e74fae69d2e038b47360fafb02e b/tests/resources/merge-recursive/.gitted/objects/3a/0dc89a8bd20e74fae69d2e038b47360fafb02e Binary files differnew file mode 100644 index 000000000..fdff502d1 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/3a/0dc89a8bd20e74fae69d2e038b47360fafb02e diff --git a/tests/resources/merge-recursive/.gitted/objects/3a/8c70144d0334721154b1e0529716b368483d6f b/tests/resources/merge-recursive/.gitted/objects/3a/8c70144d0334721154b1e0529716b368483d6f Binary files differnew file mode 100644 index 000000000..958d17d35 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/3a/8c70144d0334721154b1e0529716b368483d6f diff --git a/tests/resources/merge-recursive/.gitted/objects/3e/eff81b57a0ac15a5ab6bb3a8e92511a01a429c b/tests/resources/merge-recursive/.gitted/objects/3e/eff81b57a0ac15a5ab6bb3a8e92511a01a429c Binary files differnew file mode 100644 index 000000000..6a6c65460 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/3e/eff81b57a0ac15a5ab6bb3a8e92511a01a429c diff --git a/tests/resources/merge-recursive/.gitted/objects/40/9f5d072decec684331672f2d6c0a9bc3640adb b/tests/resources/merge-recursive/.gitted/objects/40/9f5d072decec684331672f2d6c0a9bc3640adb Binary files differnew file mode 100644 index 000000000..b4c9005e1 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/40/9f5d072decec684331672f2d6c0a9bc3640adb diff --git a/tests/resources/merge-recursive/.gitted/objects/44/faf5fba1af850dae54f8b2345938d3c7ae479f b/tests/resources/merge-recursive/.gitted/objects/44/faf5fba1af850dae54f8b2345938d3c7ae479f Binary files differnew file mode 100644 index 000000000..d0bc09902 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/44/faf5fba1af850dae54f8b2345938d3c7ae479f diff --git a/tests/resources/merge-recursive/.gitted/objects/4a/06b258fed8a4d15967ec4253ae7366b70f727d b/tests/resources/merge-recursive/.gitted/objects/4a/06b258fed8a4d15967ec4253ae7366b70f727d Binary files differnew file mode 100644 index 000000000..d3e181501 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/4a/06b258fed8a4d15967ec4253ae7366b70f727d diff --git a/tests/resources/merge-recursive/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/tests/resources/merge-recursive/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 Binary files differnew file mode 100644 index 000000000..adf64119a --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 diff --git a/tests/resources/merge-recursive/.gitted/objects/4c/62e9482ed42c1a6d08891906b26126daa4a8f5 b/tests/resources/merge-recursive/.gitted/objects/4c/62e9482ed42c1a6d08891906b26126daa4a8f5 Binary files differnew file mode 100644 index 000000000..f3cee9a2d --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/4c/62e9482ed42c1a6d08891906b26126daa4a8f5 diff --git a/tests/resources/merge-recursive/.gitted/objects/50/4dd93fb5b9c2a28c094c6e84ef0606de1e9b5c b/tests/resources/merge-recursive/.gitted/objects/50/4dd93fb5b9c2a28c094c6e84ef0606de1e9b5c Binary files differnew file mode 100644 index 000000000..214d3076d --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/50/4dd93fb5b9c2a28c094c6e84ef0606de1e9b5c diff --git a/tests/resources/merge-recursive/.gitted/objects/50/dfa64a56b488fe8082371b182c8a3e3c942332 b/tests/resources/merge-recursive/.gitted/objects/50/dfa64a56b488fe8082371b182c8a3e3c942332 Binary files differnew file mode 100644 index 000000000..7c90c99af --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/50/dfa64a56b488fe8082371b182c8a3e3c942332 diff --git a/tests/resources/merge-recursive/.gitted/objects/51/135c5884d7dd132fef3b432cca5826bab98f37 b/tests/resources/merge-recursive/.gitted/objects/51/135c5884d7dd132fef3b432cca5826bab98f37 Binary files differnew file mode 100644 index 000000000..95818f144 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/51/135c5884d7dd132fef3b432cca5826bab98f37 diff --git a/tests/resources/merge-recursive/.gitted/objects/51/60ab78c1973dcd7cdebe2345dc8fcfc755e76d b/tests/resources/merge-recursive/.gitted/objects/51/60ab78c1973dcd7cdebe2345dc8fcfc755e76d Binary files differnew file mode 100644 index 000000000..f3f99d7fe --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/51/60ab78c1973dcd7cdebe2345dc8fcfc755e76d diff --git a/tests/resources/merge-recursive/.gitted/objects/56/fcbad344aafe519bafcc33c87b8e64849d82ab b/tests/resources/merge-recursive/.gitted/objects/56/fcbad344aafe519bafcc33c87b8e64849d82ab Binary files differnew file mode 100644 index 000000000..06bea32e6 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/56/fcbad344aafe519bafcc33c87b8e64849d82ab diff --git a/tests/resources/merge-recursive/.gitted/objects/5a/47615db824433f816ba62217dda6d46c5a7640 b/tests/resources/merge-recursive/.gitted/objects/5a/47615db824433f816ba62217dda6d46c5a7640 Binary files differnew file mode 100644 index 000000000..c1e30ce54 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/5a/47615db824433f816ba62217dda6d46c5a7640 diff --git a/tests/resources/merge-recursive/.gitted/objects/5c/27b5f7c6f6dd4e5b4d64976741d56c2df8f48a b/tests/resources/merge-recursive/.gitted/objects/5c/27b5f7c6f6dd4e5b4d64976741d56c2df8f48a Binary files differnew file mode 100644 index 000000000..783d085a7 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/5c/27b5f7c6f6dd4e5b4d64976741d56c2df8f48a diff --git a/tests/resources/merge-recursive/.gitted/objects/5d/998d5f278aff5693711bc48f6852aac4b603ad b/tests/resources/merge-recursive/.gitted/objects/5d/998d5f278aff5693711bc48f6852aac4b603ad Binary files differnew file mode 100644 index 000000000..a7795f59b --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/5d/998d5f278aff5693711bc48f6852aac4b603ad diff --git a/tests/resources/merge-recursive/.gitted/objects/61/6d1209afac499b005f68309e1593b44899b054 b/tests/resources/merge-recursive/.gitted/objects/61/6d1209afac499b005f68309e1593b44899b054 Binary files differnew file mode 100644 index 000000000..6a06214d7 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/61/6d1209afac499b005f68309e1593b44899b054 diff --git a/tests/resources/merge-recursive/.gitted/objects/71/c50785d8d512293bd3af838b131f3da5829ebc b/tests/resources/merge-recursive/.gitted/objects/71/c50785d8d512293bd3af838b131f3da5829ebc Binary files differnew file mode 100644 index 000000000..23c40332e --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/71/c50785d8d512293bd3af838b131f3da5829ebc diff --git a/tests/resources/merge-recursive/.gitted/objects/75/afa96db00c26c6ebf3b377615b4e2a20563ee4 b/tests/resources/merge-recursive/.gitted/objects/75/afa96db00c26c6ebf3b377615b4e2a20563ee4 Binary files differnew file mode 100644 index 000000000..11d7f94a9 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/75/afa96db00c26c6ebf3b377615b4e2a20563ee4 diff --git a/tests/resources/merge-recursive/.gitted/objects/76/6afbfd7d42f757f1fac9ea550c9fcbc8041b89 b/tests/resources/merge-recursive/.gitted/objects/76/6afbfd7d42f757f1fac9ea550c9fcbc8041b89 Binary files differnew file mode 100644 index 000000000..a5af38357 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/76/6afbfd7d42f757f1fac9ea550c9fcbc8041b89 diff --git a/tests/resources/merge-recursive/.gitted/objects/7c/61830f8b8632665bb44ae5d219f520f5aa5bb4 b/tests/resources/merge-recursive/.gitted/objects/7c/61830f8b8632665bb44ae5d219f520f5aa5bb4 Binary files differnew file mode 100644 index 000000000..04b10f7ee --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/7c/61830f8b8632665bb44ae5d219f520f5aa5bb4 diff --git a/tests/resources/merge-recursive/.gitted/objects/7c/9a30d8dcee320a3b1f9ed10b582479faa9d3a1 b/tests/resources/merge-recursive/.gitted/objects/7c/9a30d8dcee320a3b1f9ed10b582479faa9d3a1 Binary files differnew file mode 100644 index 000000000..7500a241e --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/7c/9a30d8dcee320a3b1f9ed10b582479faa9d3a1 diff --git a/tests/resources/merge-recursive/.gitted/objects/7e/2d2bad4fc21f2832ca2afd48b1f95ab37ffb92 b/tests/resources/merge-recursive/.gitted/objects/7e/2d2bad4fc21f2832ca2afd48b1f95ab37ffb92 Binary files differnew file mode 100644 index 000000000..11f96c9c8 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/7e/2d2bad4fc21f2832ca2afd48b1f95ab37ffb92 diff --git a/tests/resources/merge-recursive/.gitted/objects/7e/70a7872576bba7e299cde45abb7da1e4d7ba81 b/tests/resources/merge-recursive/.gitted/objects/7e/70a7872576bba7e299cde45abb7da1e4d7ba81 Binary files differnew file mode 100644 index 000000000..cab463975 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/7e/70a7872576bba7e299cde45abb7da1e4d7ba81 diff --git a/tests/resources/merge-recursive/.gitted/objects/7f/9c1d78d760cbfa99273bc1ef642d994c6baa5c b/tests/resources/merge-recursive/.gitted/objects/7f/9c1d78d760cbfa99273bc1ef642d994c6baa5c Binary files differnew file mode 100644 index 000000000..46c8e8523 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/7f/9c1d78d760cbfa99273bc1ef642d994c6baa5c diff --git a/tests/resources/merge-recursive/.gitted/objects/81/60cb53660b86c954144b8dbbb0b6e4db4ba6ba b/tests/resources/merge-recursive/.gitted/objects/81/60cb53660b86c954144b8dbbb0b6e4db4ba6ba Binary files differnew file mode 100644 index 000000000..19d32c770 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/81/60cb53660b86c954144b8dbbb0b6e4db4ba6ba diff --git a/tests/resources/merge-recursive/.gitted/objects/8f/1b918542a5fe9b3bb7a8770a7525ad5b3b5864 b/tests/resources/merge-recursive/.gitted/objects/8f/1b918542a5fe9b3bb7a8770a7525ad5b3b5864 Binary files differnew file mode 100644 index 000000000..5ecb3e57b --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/8f/1b918542a5fe9b3bb7a8770a7525ad5b3b5864 diff --git a/tests/resources/merge-recursive/.gitted/objects/97/5dd228fd1b0cacf2988167088fd1190c9ac0f5 b/tests/resources/merge-recursive/.gitted/objects/97/5dd228fd1b0cacf2988167088fd1190c9ac0f5 Binary files differnew file mode 100644 index 000000000..96658c4fb --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/97/5dd228fd1b0cacf2988167088fd1190c9ac0f5 diff --git a/tests/resources/merge-recursive/.gitted/objects/98/5b725cf91c6861b5e7a419415d03cbcf5f16ca b/tests/resources/merge-recursive/.gitted/objects/98/5b725cf91c6861b5e7a419415d03cbcf5f16ca Binary files differnew file mode 100644 index 000000000..bc95c6fc5 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/98/5b725cf91c6861b5e7a419415d03cbcf5f16ca diff --git a/tests/resources/merge-recursive/.gitted/objects/98/cacbdd1fac7bbab54a6c7c97aa2103219e08b8 b/tests/resources/merge-recursive/.gitted/objects/98/cacbdd1fac7bbab54a6c7c97aa2103219e08b8 Binary files differnew file mode 100644 index 000000000..13344d86c --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/98/cacbdd1fac7bbab54a6c7c97aa2103219e08b8 diff --git a/tests/resources/merge-recursive/.gitted/objects/99/754e36599906b81b917447280c4918269e14ff b/tests/resources/merge-recursive/.gitted/objects/99/754e36599906b81b917447280c4918269e14ff Binary files differnew file mode 100644 index 000000000..40455efab --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/99/754e36599906b81b917447280c4918269e14ff diff --git a/tests/resources/merge-recursive/.gitted/objects/9a/228c1ee87f286202ec9a25de837a18550013b5 b/tests/resources/merge-recursive/.gitted/objects/9a/228c1ee87f286202ec9a25de837a18550013b5 Binary files differnew file mode 100644 index 000000000..d6bcd5262 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/9a/228c1ee87f286202ec9a25de837a18550013b5 diff --git a/tests/resources/merge-recursive/.gitted/objects/9c/dde216049c6a5ccddac0ad81f604419d8990ed b/tests/resources/merge-recursive/.gitted/objects/9c/dde216049c6a5ccddac0ad81f604419d8990ed new file mode 100644 index 000000000..9f2c92851 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/9c/dde216049c6a5ccddac0ad81f604419d8990ed @@ -0,0 +1,2 @@ +xQ +B!EvnPDbA϶繜Z箝Mo"7)Hvdq0!S,T( J𬞩ɣ8q`8>*}mi,K҇}4/;ZQѻzk1j#WuvCN
\ No newline at end of file diff --git a/tests/resources/merge-recursive/.gitted/objects/a0/ce8909834f389b4f8be6a6ec420868422d40a1 b/tests/resources/merge-recursive/.gitted/objects/a0/ce8909834f389b4f8be6a6ec420868422d40a1 Binary files differnew file mode 100644 index 000000000..5f6643c59 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/a0/ce8909834f389b4f8be6a6ec420868422d40a1 diff --git a/tests/resources/merge-recursive/.gitted/objects/a2/817ed0e8ca6fe52bf0a20b2f50eb94b9ea5415 b/tests/resources/merge-recursive/.gitted/objects/a2/817ed0e8ca6fe52bf0a20b2f50eb94b9ea5415 Binary files differnew file mode 100644 index 000000000..a043a8e03 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/a2/817ed0e8ca6fe52bf0a20b2f50eb94b9ea5415 diff --git a/tests/resources/merge-recursive/.gitted/objects/a3/5aa65d86215fce909fc0bcce8949d12becba44 b/tests/resources/merge-recursive/.gitted/objects/a3/5aa65d86215fce909fc0bcce8949d12becba44 Binary files differnew file mode 100644 index 000000000..e71e9ec44 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/a3/5aa65d86215fce909fc0bcce8949d12becba44 diff --git a/tests/resources/merge-recursive/.gitted/objects/a3/ca4c462e93fee824c8ad500917ae34b800dea4 b/tests/resources/merge-recursive/.gitted/objects/a3/ca4c462e93fee824c8ad500917ae34b800dea4 Binary files differnew file mode 100644 index 000000000..dff9e9750 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/a3/ca4c462e93fee824c8ad500917ae34b800dea4 diff --git a/tests/resources/merge-recursive/.gitted/objects/a6/64873b1c0b9a1ed300f8644dde536fdaa3a34f b/tests/resources/merge-recursive/.gitted/objects/a6/64873b1c0b9a1ed300f8644dde536fdaa3a34f Binary files differnew file mode 100644 index 000000000..f6b66dada --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/a6/64873b1c0b9a1ed300f8644dde536fdaa3a34f diff --git a/tests/resources/merge-recursive/.gitted/objects/a9/9bf55117ab1958171fccfeb19885f707bd08fd b/tests/resources/merge-recursive/.gitted/objects/a9/9bf55117ab1958171fccfeb19885f707bd08fd Binary files differnew file mode 100644 index 000000000..9c3a3ec28 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/a9/9bf55117ab1958171fccfeb19885f707bd08fd diff --git a/tests/resources/merge-recursive/.gitted/objects/b0/1de62cf11945685c98ec671edabdff3e90ddc5 b/tests/resources/merge-recursive/.gitted/objects/b0/1de62cf11945685c98ec671edabdff3e90ddc5 Binary files differnew file mode 100644 index 000000000..786c9a510 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/b0/1de62cf11945685c98ec671edabdff3e90ddc5 diff --git a/tests/resources/merge-recursive/.gitted/objects/b0/4823b75c8220b89c2f8da54709cda262304cd3 b/tests/resources/merge-recursive/.gitted/objects/b0/4823b75c8220b89c2f8da54709cda262304cd3 Binary files differnew file mode 100644 index 000000000..81714b06d --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/b0/4823b75c8220b89c2f8da54709cda262304cd3 diff --git a/tests/resources/merge-recursive/.gitted/objects/b1/71224a4f604b6091072007765419b14c232c1d b/tests/resources/merge-recursive/.gitted/objects/b1/71224a4f604b6091072007765419b14c232c1d Binary files differnew file mode 100644 index 000000000..987d5fec1 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/b1/71224a4f604b6091072007765419b14c232c1d diff --git a/tests/resources/merge-recursive/.gitted/objects/b2/908343e3c16249d0036dd444fc0d4662cd8c0e b/tests/resources/merge-recursive/.gitted/objects/b2/908343e3c16249d0036dd444fc0d4662cd8c0e Binary files differnew file mode 100644 index 000000000..7f0e0aba6 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/b2/908343e3c16249d0036dd444fc0d4662cd8c0e diff --git a/tests/resources/merge-recursive/.gitted/objects/b6/bd0f9952f396e757d3f91e08c59a7e91707201 b/tests/resources/merge-recursive/.gitted/objects/b6/bd0f9952f396e757d3f91e08c59a7e91707201 Binary files differnew file mode 100644 index 000000000..87cb8fa04 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/b6/bd0f9952f396e757d3f91e08c59a7e91707201 diff --git a/tests/resources/merge-recursive/.gitted/objects/b7/de2b52ba055688061355fad1599a5d214ce8f8 b/tests/resources/merge-recursive/.gitted/objects/b7/de2b52ba055688061355fad1599a5d214ce8f8 Binary files differnew file mode 100644 index 000000000..6fbf58187 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/b7/de2b52ba055688061355fad1599a5d214ce8f8 diff --git a/tests/resources/merge-recursive/.gitted/objects/b8/a3b657edcf31e6365a2f1c45d45e6c9ebe8f02 b/tests/resources/merge-recursive/.gitted/objects/b8/a3b657edcf31e6365a2f1c45d45e6c9ebe8f02 Binary files differnew file mode 100644 index 000000000..0b8404bf3 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/b8/a3b657edcf31e6365a2f1c45d45e6c9ebe8f02 diff --git a/tests/resources/merge-recursive/.gitted/objects/ba/9dcfe079848e8e5c1b53bc3b6e47ff57f6e481 b/tests/resources/merge-recursive/.gitted/objects/ba/9dcfe079848e8e5c1b53bc3b6e47ff57f6e481 Binary files differnew file mode 100644 index 000000000..c43b79da3 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/ba/9dcfe079848e8e5c1b53bc3b6e47ff57f6e481 diff --git a/tests/resources/merge-recursive/.gitted/objects/bb/4e0014fb09d24312f0af37c7a45e5488f19510 b/tests/resources/merge-recursive/.gitted/objects/bb/4e0014fb09d24312f0af37c7a45e5488f19510 new file mode 100644 index 000000000..ca45760cd --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/bb/4e0014fb09d24312f0af37c7a45e5488f19510 @@ -0,0 +1,4 @@ +xKj1)tVs}ղf2f'_WT-2
cSK v&8)`# +*ssMI (J%5BUx +!R
JbInMju~1OQd]t 1 +~h2OP#
\ No newline at end of file diff --git a/tests/resources/merge-recursive/.gitted/objects/c0/dcb4bfcd86e65a822090aa7a0455413828886b b/tests/resources/merge-recursive/.gitted/objects/c0/dcb4bfcd86e65a822090aa7a0455413828886b Binary files differnew file mode 100644 index 000000000..f8fe20180 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/c0/dcb4bfcd86e65a822090aa7a0455413828886b diff --git a/tests/resources/merge-recursive/.gitted/objects/c4/44758b02d4af6e3145ac2fc0e3ed02199cf7ec b/tests/resources/merge-recursive/.gitted/objects/c4/44758b02d4af6e3145ac2fc0e3ed02199cf7ec Binary files differnew file mode 100644 index 000000000..b2f6662a0 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/c4/44758b02d4af6e3145ac2fc0e3ed02199cf7ec diff --git a/tests/resources/merge-recursive/.gitted/objects/c7/f3257db72e885d6612080c003e0f2ef480e0c4 b/tests/resources/merge-recursive/.gitted/objects/c7/f3257db72e885d6612080c003e0f2ef480e0c4 Binary files differnew file mode 100644 index 000000000..255624e93 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/c7/f3257db72e885d6612080c003e0f2ef480e0c4 diff --git a/tests/resources/merge-recursive/.gitted/objects/ce/0d744cd2e18eacf883d43471636f231c0995e3 b/tests/resources/merge-recursive/.gitted/objects/ce/0d744cd2e18eacf883d43471636f231c0995e3 Binary files differnew file mode 100644 index 000000000..63c457a2c --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/ce/0d744cd2e18eacf883d43471636f231c0995e3 diff --git a/tests/resources/merge-recursive/.gitted/objects/d0/97bcf99adb1022a6b7d2e94fed2031ebd9d89c b/tests/resources/merge-recursive/.gitted/objects/d0/97bcf99adb1022a6b7d2e94fed2031ebd9d89c Binary files differnew file mode 100644 index 000000000..51ffec090 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/d0/97bcf99adb1022a6b7d2e94fed2031ebd9d89c diff --git a/tests/resources/merge-recursive/.gitted/objects/d0/c9bd6e2a3e327d81a32de51201d3bd58909f7c b/tests/resources/merge-recursive/.gitted/objects/d0/c9bd6e2a3e327d81a32de51201d3bd58909f7c Binary files differnew file mode 100644 index 000000000..5a0508c5d --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/d0/c9bd6e2a3e327d81a32de51201d3bd58909f7c diff --git a/tests/resources/merge-recursive/.gitted/objects/d3/482dbdca5bb83aaf3e3768359855d55aef84d7 b/tests/resources/merge-recursive/.gitted/objects/d3/482dbdca5bb83aaf3e3768359855d55aef84d7 Binary files differnew file mode 100644 index 000000000..8442948fa --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/d3/482dbdca5bb83aaf3e3768359855d55aef84d7 diff --git a/tests/resources/merge-recursive/.gitted/objects/d5/015f9436b2d8c842bf6616e7cf5bc54eb79ced b/tests/resources/merge-recursive/.gitted/objects/d5/015f9436b2d8c842bf6616e7cf5bc54eb79ced Binary files differnew file mode 100644 index 000000000..6d4446ec4 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/d5/015f9436b2d8c842bf6616e7cf5bc54eb79ced diff --git a/tests/resources/merge-recursive/.gitted/objects/db/51adf2b699eed93e883d6425f5e6c50165a9c2 b/tests/resources/merge-recursive/.gitted/objects/db/51adf2b699eed93e883d6425f5e6c50165a9c2 Binary files differnew file mode 100644 index 000000000..41b481efb --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/db/51adf2b699eed93e883d6425f5e6c50165a9c2 diff --git a/tests/resources/merge-recursive/.gitted/objects/db/7e2af8ca83b8943adce7ba37d85f8fe7d7d2a9 b/tests/resources/merge-recursive/.gitted/objects/db/7e2af8ca83b8943adce7ba37d85f8fe7d7d2a9 Binary files differnew file mode 100644 index 000000000..0a0ad6527 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/db/7e2af8ca83b8943adce7ba37d85f8fe7d7d2a9 diff --git a/tests/resources/merge-recursive/.gitted/objects/de/de92a05a0841faa8e4ad6700285cd208184458 b/tests/resources/merge-recursive/.gitted/objects/de/de92a05a0841faa8e4ad6700285cd208184458 Binary files differnew file mode 100644 index 000000000..c275071e2 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/de/de92a05a0841faa8e4ad6700285cd208184458 diff --git a/tests/resources/merge-recursive/.gitted/objects/e0/15ebd79a72a88b9291df11771caf56f463e8f9 b/tests/resources/merge-recursive/.gitted/objects/e0/15ebd79a72a88b9291df11771caf56f463e8f9 Binary files differnew file mode 100644 index 000000000..a75a6b60e --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/e0/15ebd79a72a88b9291df11771caf56f463e8f9 diff --git a/tests/resources/merge-recursive/.gitted/objects/e5/20e6aaf8d1e68a433e29d4360c1e74aa4b24d1 b/tests/resources/merge-recursive/.gitted/objects/e5/20e6aaf8d1e68a433e29d4360c1e74aa4b24d1 Binary files differnew file mode 100644 index 000000000..bcf2dcfc5 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/e5/20e6aaf8d1e68a433e29d4360c1e74aa4b24d1 diff --git a/tests/resources/merge-recursive/.gitted/objects/e6/269ce9017816d67c7189a58b6d0d22bf4b8a1a b/tests/resources/merge-recursive/.gitted/objects/e6/269ce9017816d67c7189a58b6d0d22bf4b8a1a Binary files differnew file mode 100644 index 000000000..f9a0a27cc --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/e6/269ce9017816d67c7189a58b6d0d22bf4b8a1a diff --git a/tests/resources/merge-recursive/.gitted/objects/e9/30c8c67848df4aa66319c5752fab6b8fdec765 b/tests/resources/merge-recursive/.gitted/objects/e9/30c8c67848df4aa66319c5752fab6b8fdec765 Binary files differnew file mode 100644 index 000000000..c0ba76deb --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/e9/30c8c67848df4aa66319c5752fab6b8fdec765 diff --git a/tests/resources/merge-recursive/.gitted/objects/ea/3521485adfa0b0373deaaa06db9218a22edae8 b/tests/resources/merge-recursive/.gitted/objects/ea/3521485adfa0b0373deaaa06db9218a22edae8 Binary files differnew file mode 100644 index 000000000..40d89843c --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/ea/3521485adfa0b0373deaaa06db9218a22edae8 diff --git a/tests/resources/merge-recursive/.gitted/objects/f0/856993e005c0d8ed2dc7cdc222cc1d89fb3c77 b/tests/resources/merge-recursive/.gitted/objects/f0/856993e005c0d8ed2dc7cdc222cc1d89fb3c77 Binary files differnew file mode 100644 index 000000000..22b1ad94c --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/f0/856993e005c0d8ed2dc7cdc222cc1d89fb3c77 diff --git a/tests/resources/merge-recursive/.gitted/objects/f2/9ccca75754d8476e5dad8cf250e03d43fe9e6c b/tests/resources/merge-recursive/.gitted/objects/f2/9ccca75754d8476e5dad8cf250e03d43fe9e6c Binary files differnew file mode 100644 index 000000000..b91872905 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/f2/9ccca75754d8476e5dad8cf250e03d43fe9e6c diff --git a/tests/resources/merge-recursive/.gitted/objects/f3/2c284f537ff1a55d3cbfe9a37d431b6edfadc2 b/tests/resources/merge-recursive/.gitted/objects/f3/2c284f537ff1a55d3cbfe9a37d431b6edfadc2 Binary files differnew file mode 100644 index 000000000..be3ceccdc --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/f3/2c284f537ff1a55d3cbfe9a37d431b6edfadc2 diff --git a/tests/resources/merge-recursive/.gitted/objects/f4/c149e7d0983e90e9ee802ff57ae3c905ba63da b/tests/resources/merge-recursive/.gitted/objects/f4/c149e7d0983e90e9ee802ff57ae3c905ba63da Binary files differnew file mode 100644 index 000000000..e9c675b6d --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/f4/c149e7d0983e90e9ee802ff57ae3c905ba63da diff --git a/tests/resources/merge-recursive/.gitted/objects/f6/5de1834f57708e76d8dc25502b7f1ecbcce162 b/tests/resources/merge-recursive/.gitted/objects/f6/5de1834f57708e76d8dc25502b7f1ecbcce162 Binary files differnew file mode 100644 index 000000000..3d238fd8c --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/f6/5de1834f57708e76d8dc25502b7f1ecbcce162 diff --git a/tests/resources/merge-recursive/.gitted/objects/f9/c04e4e9d4aaf1e6fe7478a7cc0756554974c2b b/tests/resources/merge-recursive/.gitted/objects/f9/c04e4e9d4aaf1e6fe7478a7cc0756554974c2b Binary files differnew file mode 100644 index 000000000..bc44fa73a --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/objects/f9/c04e4e9d4aaf1e6fe7478a7cc0756554974c2b diff --git a/tests/resources/merge-recursive/.gitted/refs/heads/branchJ-1 b/tests/resources/merge-recursive/.gitted/refs/heads/branchJ-1 new file mode 100644 index 000000000..64612d486 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/refs/heads/branchJ-1 @@ -0,0 +1 @@ +f65de1834f57708e76d8dc25502b7f1ecbcce162 diff --git a/tests/resources/merge-recursive/.gitted/refs/heads/branchJ-2 b/tests/resources/merge-recursive/.gitted/refs/heads/branchJ-2 new file mode 100644 index 000000000..bea674803 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/refs/heads/branchJ-2 @@ -0,0 +1 @@ +b01de62cf11945685c98ec671edabdff3e90ddc5 diff --git a/tests/resources/merge-recursive/.gitted/refs/heads/branchK-1 b/tests/resources/merge-recursive/.gitted/refs/heads/branchK-1 new file mode 100644 index 000000000..309b38880 --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/refs/heads/branchK-1 @@ -0,0 +1 @@ +182d0d250d1d7adcc60c178be5be98358b3a2fd1 diff --git a/tests/resources/merge-recursive/.gitted/refs/heads/branchK-2 b/tests/resources/merge-recursive/.gitted/refs/heads/branchK-2 new file mode 100644 index 000000000..f958f131c --- /dev/null +++ b/tests/resources/merge-recursive/.gitted/refs/heads/branchK-2 @@ -0,0 +1 @@ +0ce202f64fa8356c1a32835fce4058ca76b0c7ed diff --git a/tests/resources/renames/.gitted/objects/2c/136d294960f7d939f1ed1903f1ced78b874c87 b/tests/resources/renames/.gitted/objects/2c/136d294960f7d939f1ed1903f1ced78b874c87 Binary files differnew file mode 100644 index 000000000..51b7cea41 --- /dev/null +++ b/tests/resources/renames/.gitted/objects/2c/136d294960f7d939f1ed1903f1ced78b874c87 diff --git a/tests/resources/renames/.gitted/objects/84/d8efa38af7ace2b302de0adbda16b1f1cd2e1b b/tests/resources/renames/.gitted/objects/84/d8efa38af7ace2b302de0adbda16b1f1cd2e1b new file mode 100644 index 000000000..56f98fe3b --- /dev/null +++ b/tests/resources/renames/.gitted/objects/84/d8efa38af7ace2b302de0adbda16b1f1cd2e1b @@ -0,0 +1 @@ +xQj0SX+۲ !4'XiHeCߐtgr_fZRT%*!q.&40.Of? )g,Z0>8y$[жt5:l'<BWH6%
uJI
\ No newline at end of file diff --git a/tests/resources/renames/.gitted/objects/89/7dda8ecb7fa2e092bc3f9e2a179d7c1b0364db b/tests/resources/renames/.gitted/objects/89/7dda8ecb7fa2e092bc3f9e2a179d7c1b0364db Binary files differnew file mode 100644 index 000000000..d104e66de --- /dev/null +++ b/tests/resources/renames/.gitted/objects/89/7dda8ecb7fa2e092bc3f9e2a179d7c1b0364db diff --git a/tests/resources/renames/.gitted/objects/95/ceb126bf79e76020d8879a8b0d50a73307a97f b/tests/resources/renames/.gitted/objects/95/ceb126bf79e76020d8879a8b0d50a73307a97f Binary files differnew file mode 100644 index 000000000..0486ba5b0 --- /dev/null +++ b/tests/resources/renames/.gitted/objects/95/ceb126bf79e76020d8879a8b0d50a73307a97f diff --git a/tests/resources/renames/.gitted/objects/be/053a189b0bbde545e0a3f59ce00b46ad29ce0d b/tests/resources/renames/.gitted/objects/be/053a189b0bbde545e0a3f59ce00b46ad29ce0d Binary files differnew file mode 100644 index 000000000..de7aceb62 --- /dev/null +++ b/tests/resources/renames/.gitted/objects/be/053a189b0bbde545e0a3f59ce00b46ad29ce0d diff --git a/tests/resources/renames/.gitted/refs/heads/delete-and-rename b/tests/resources/renames/.gitted/refs/heads/delete-and-rename new file mode 100644 index 000000000..f27fc2184 --- /dev/null +++ b/tests/resources/renames/.gitted/refs/heads/delete-and-rename @@ -0,0 +1 @@ +be053a189b0bbde545e0a3f59ce00b46ad29ce0d diff --git a/tests/resources/renames/.gitted/refs/heads/rewrite-and-delete b/tests/resources/renames/.gitted/refs/heads/rewrite-and-delete new file mode 100644 index 000000000..0c0ecad78 --- /dev/null +++ b/tests/resources/renames/.gitted/refs/heads/rewrite-and-delete @@ -0,0 +1 @@ +84d8efa38af7ace2b302de0adbda16b1f1cd2e1b diff --git a/tests/resources/revwalk.git/HEAD b/tests/resources/revwalk.git/HEAD new file mode 100644 index 000000000..cb089cd89 --- /dev/null +++ b/tests/resources/revwalk.git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/tests/resources/revwalk.git/config b/tests/resources/revwalk.git/config new file mode 100644 index 000000000..7c968c3b5 --- /dev/null +++ b/tests/resources/revwalk.git/config @@ -0,0 +1,6 @@ +[core] + bare = true + repositoryformatversion = 0 + filemode = false + symlinks = false + ignorecase = true diff --git a/tests/resources/revwalk.git/description b/tests/resources/revwalk.git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/tests/resources/revwalk.git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/tests/resources/revwalk.git/objects/info/packs b/tests/resources/revwalk.git/objects/info/packs new file mode 100644 index 000000000..d8d85b895 --- /dev/null +++ b/tests/resources/revwalk.git/objects/info/packs @@ -0,0 +1,2 @@ +P pack-9adacb9971981a1a3264fd473da5b800f2715959.pack + diff --git a/tests/resources/revwalk.git/objects/pack/pack-9adacb9971981a1a3264fd473da5b800f2715959.idx b/tests/resources/revwalk.git/objects/pack/pack-9adacb9971981a1a3264fd473da5b800f2715959.idx Binary files differnew file mode 100644 index 000000000..e157b386e --- /dev/null +++ b/tests/resources/revwalk.git/objects/pack/pack-9adacb9971981a1a3264fd473da5b800f2715959.idx diff --git a/tests/resources/revwalk.git/objects/pack/pack-9adacb9971981a1a3264fd473da5b800f2715959.pack b/tests/resources/revwalk.git/objects/pack/pack-9adacb9971981a1a3264fd473da5b800f2715959.pack Binary files differnew file mode 100644 index 000000000..2a61f9403 --- /dev/null +++ b/tests/resources/revwalk.git/objects/pack/pack-9adacb9971981a1a3264fd473da5b800f2715959.pack diff --git a/tests/resources/revwalk.git/packed-refs b/tests/resources/revwalk.git/packed-refs new file mode 100644 index 000000000..905a3db51 --- /dev/null +++ b/tests/resources/revwalk.git/packed-refs @@ -0,0 +1,7 @@ +# pack-refs with: peeled fully-peeled sorted +3ae0f53011bdb7e68f99bde4943449f36c1c318a refs/heads/A +061978578d7c9ff2ba92dd36d31fd8d809871030 refs/heads/B +743398b425d6c216d6cfaae3786b5bc436393ae5 refs/heads/C +790ba0facf6fd103699a5c40cd19dad277ff49cd refs/heads/D +d3d783066cf7d95def6844b9c5118c1e7bcce7df refs/heads/E +d3d783066cf7d95def6844b9c5118c1e7bcce7df refs/heads/master diff --git a/tests/resources/revwalk.git/refs/.gitkeep b/tests/resources/revwalk.git/refs/.gitkeep new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/resources/revwalk.git/refs/.gitkeep diff --git a/tests/resources/testrepo/.gitted/objects/57/43a3ef145d3638a0fa28233ca92897117ad74f b/tests/resources/testrepo/.gitted/objects/57/43a3ef145d3638a0fa28233ca92897117ad74f Binary files differnew file mode 100644 index 000000000..85abb27cc --- /dev/null +++ b/tests/resources/testrepo/.gitted/objects/57/43a3ef145d3638a0fa28233ca92897117ad74f diff --git a/tests/resources/testrepo/.gitted/objects/f9/ed4af42472941da45a3ce44458455ed227a6be b/tests/resources/testrepo/.gitted/objects/f9/ed4af42472941da45a3ce44458455ed227a6be new file mode 100644 index 000000000..69c52fc9f --- /dev/null +++ b/tests/resources/testrepo/.gitted/objects/f9/ed4af42472941da45a3ce44458455ed227a6be @@ -0,0 +1,2 @@ +xN[ +B!Uzꁈ~A8W 3K-?v|f&R.]61K-p% d&S6;5u3 9΄h|`Uh8gAk_jyQor#ZR;*1*j@wgǵ|eO
\ No newline at end of file diff --git a/tests/resources/testrepo/.gitted/refs/heads/executable b/tests/resources/testrepo/.gitted/refs/heads/executable new file mode 100644 index 000000000..2bdccea29 --- /dev/null +++ b/tests/resources/testrepo/.gitted/refs/heads/executable @@ -0,0 +1 @@ +f9ed4af42472941da45a3ce44458455ed227a6be diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c index 547050c68..1106bf4ce 100644 --- a/tests/revwalk/basic.c +++ b/tests/revwalk/basic.c @@ -177,7 +177,7 @@ void test_revwalk_basic__glob_heads_with_invalid(void) /* walking */; /* git log --branches --oneline | wc -l => 16 */ - cl_assert_equal_i(19, i); + cl_assert_equal_i(20, i); } void test_revwalk_basic__push_head(void) @@ -555,3 +555,30 @@ void test_revwalk_basic__old_hidden_commit_two(void) cl_git_fail_with(GIT_ITEROVER, git_revwalk_next(&oid, _walk)); } + +/* + * Ensure that we correctly hide all parent commits of a newer + * commit when first hiding older commits. + * + * % git rev-list D ^B ^A ^E + * 790ba0facf6fd103699a5c40cd19dad277ff49cd + * b82cee5004151ae0c4f82b69fb71b87477664b6f + */ +void test_revwalk_basic__newer_hidden_commit_hides_old_commits(void) +{ + git_oid oid; + + revwalk_basic_setup_walk("revwalk.git"); + + cl_git_pass(git_revwalk_push_ref(_walk, "refs/heads/D")); + cl_git_pass(git_revwalk_hide_ref(_walk, "refs/heads/B")); + cl_git_pass(git_revwalk_hide_ref(_walk, "refs/heads/A")); + cl_git_pass(git_revwalk_hide_ref(_walk, "refs/heads/E")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(git_oid_streq(&oid, "b82cee5004151ae0c4f82b69fb71b87477664b6f")); + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(git_oid_streq(&oid, "790ba0facf6fd103699a5c40cd19dad277ff49cd")); + + cl_git_fail_with(GIT_ITEROVER, git_revwalk_next(&oid, _walk)); +} diff --git a/tests/status/renames.c b/tests/status/renames.c index f482d693a..ae32d2ee0 100644 --- a/tests/status/renames.c +++ b/tests/status/renames.c @@ -590,6 +590,12 @@ static char *nfc = "\xC3\x85\x73\x74\x72\xC3\xB6\x6D"; static char *nfd = "\x41\xCC\x8A\x73\x74\x72\x6F\xCC\x88\x6D"; #endif +/* + * Create a file in NFD (canonically decomposed) format. Ensure + * that when core.precomposeunicode is false that we return paths + * in NFD, but when core.precomposeunicode is true, then we + * return paths precomposed (in NFC). + */ void test_status_renames__precomposed_unicode_rename(void) { #ifdef GIT_USE_ICONV @@ -610,7 +616,7 @@ void test_status_renames__precomposed_unicode_rename(void) { GIT_STATUS_WT_RENAMED, "sixserving.txt", nfc }, }; - rename_file(g_repo, "sixserving.txt", nfc); + rename_file(g_repo, "sixserving.txt", nfd); opts.flags |= GIT_STATUS_OPT_INCLUDE_UNTRACKED; diff --git a/tests/status/worktree.c b/tests/status/worktree.c index 44ed324f1..c6b18c166 100644 --- a/tests/status/worktree.c +++ b/tests/status/worktree.c @@ -1072,6 +1072,8 @@ void test_status_worktree__unreadable(void) cl_assert_equal_i(counts.expected_entry_count, counts.entry_count); cl_assert_equal_i(0, counts.wrong_status_flags_count); cl_assert_equal_i(0, counts.wrong_sorted_path); +#else + cl_skip(); #endif } @@ -1106,6 +1108,8 @@ void test_status_worktree__unreadable_not_included(void) cl_assert_equal_i(counts.expected_entry_count, counts.entry_count); cl_assert_equal_i(0, counts.wrong_status_flags_count); cl_assert_equal_i(0, counts.wrong_sorted_path); +#else + cl_skip(); #endif } diff --git a/tests/submodule/add.c b/tests/submodule/add.c index c3b3e6364..ebb9d6292 100644 --- a/tests/submodule/add.c +++ b/tests/submodule/add.c @@ -7,6 +7,7 @@ #include "repository.h" static git_repository *g_repo = NULL; +static const char *valid_blob_id = "fa49b077972391ad58037050f2a75f74e3671e92"; void test_submodule_add__cleanup(void) { @@ -128,3 +129,57 @@ void test_submodule_add__url_relative_to_workdir(void) assert_submodule_url("TestGitRepository", git_repository_workdir(g_repo)); } + +static void test_add_entry( + git_index *index, + const char *idstr, + const char *path, + git_filemode_t mode) +{ + git_index_entry entry = {{0}}; + + cl_git_pass(git_oid_fromstr(&entry.id, idstr)); + + entry.path = path; + entry.mode = mode; + + cl_git_pass(git_index_add(index, &entry)); +} + +void test_submodule_add__path_exists_in_index(void) +{ + git_index *index; + git_submodule *sm; + git_buf filename = GIT_BUF_INIT; + + g_repo = cl_git_sandbox_init("testrepo"); + + cl_git_pass(git_buf_joinpath(&filename, "subdirectory", "test.txt")); + + cl_git_pass(git_repository_index__weakptr(&index, g_repo)); + + test_add_entry(index, valid_blob_id, filename.ptr, GIT_FILEMODE_BLOB); + + cl_git_fail_with(git_submodule_add_setup(&sm, g_repo, "./", "subdirectory", 1), GIT_EEXISTS); + + git_submodule_free(sm); + git_buf_free(&filename); +} + +void test_submodule_add__file_exists_in_index(void) +{ + git_index *index; + git_submodule *sm; + git_buf name = GIT_BUF_INIT; + + g_repo = cl_git_sandbox_init("testrepo"); + + cl_git_pass(git_repository_index__weakptr(&index, g_repo)); + + test_add_entry(index, valid_blob_id, "subdirectory", GIT_FILEMODE_BLOB); + + cl_git_fail_with(git_submodule_add_setup(&sm, g_repo, "./", "subdirectory", 1), GIT_EEXISTS); + + git_submodule_free(sm); + git_buf_free(&name); +} diff --git a/tests/submodule/lookup.c b/tests/submodule/lookup.c index f84f07c60..170be5a44 100644 --- a/tests/submodule/lookup.c +++ b/tests/submodule/lookup.c @@ -445,3 +445,19 @@ void test_submodule_lookup__foreach_in_bare_repository_fails(void) cl_git_fail(git_submodule_foreach(g_repo, foreach_cb, NULL)); } + +void test_submodule_lookup__fail_invalid_gitmodules(void) +{ + git_submodule *sm; + sm_lookup_data data; + memset(&data, 0, sizeof(data)); + + cl_git_rewritefile("submod2/.gitmodules", + "[submodule \"Test_App\"\n" + " path = Test_App\n" + " url = ../Test_App\n"); + + cl_git_fail(git_submodule_lookup(&sm, g_repo, "Test_App")); + + cl_git_fail(git_submodule_foreach(g_repo, sm_lookup_cb, &data)); +} diff --git a/tests/transport/register.c b/tests/transport/register.c index 97aae6b20..88ba247de 100644 --- a/tests/transport/register.c +++ b/tests/transport/register.c @@ -45,6 +45,8 @@ void test_transport_register__custom_transport_ssh(void) "ssh+git://somehost:somepath", "git+ssh://somehost:somepath", "git@somehost:somepath", + "ssh://somehost:somepath%20with%20%spaces", + "ssh://somehost:somepath with spaces" }; git_transport *transport; unsigned i; diff --git a/tests/worktree/repository.c b/tests/worktree/repository.c index 5c7595c64..ca56413b7 100644 --- a/tests/worktree/repository.c +++ b/tests/worktree/repository.c @@ -27,6 +27,7 @@ void test_worktree_repository__head(void) cl_git_pass(git_reference_lookup(&ref, fixture.repo, "refs/heads/testrepo-worktree")); cl_git_pass(git_repository_head_for_worktree(&head, fixture.repo, "testrepo-worktree")); cl_assert(git_reference_cmp(ref, head) == 0); + cl_assert(git_reference_owner(ref) == fixture.repo); git_reference_free(ref); git_reference_free(head); diff --git a/tests/worktree/worktree.c b/tests/worktree/worktree.c index 4ac3b8bba..9b932d8ae 100644 --- a/tests/worktree/worktree.c +++ b/tests/worktree/worktree.c @@ -273,6 +273,36 @@ void test_worktree_worktree__init_existing_branch(void) git_reference_free(branch); } +void test_worktree_worktree__add_with_explicit_branch(void) +{ + git_reference *head, *branch, *wthead; + git_commit *commit; + git_worktree *wt; + git_repository *wtrepo; + git_buf path = GIT_BUF_INIT; + git_worktree_add_options opts = GIT_WORKTREE_ADD_OPTIONS_INIT; + + cl_git_pass(git_repository_head(&head, fixture.repo)); + cl_git_pass(git_commit_lookup(&commit, fixture.repo, &head->target.oid)); + cl_git_pass(git_branch_create(&branch, fixture.repo, "worktree-with-ref", commit, false)); + + opts.ref = branch; + + cl_git_pass(git_buf_joinpath(&path, fixture.repo->workdir, "../worktree-with-different-name")); + cl_git_pass(git_worktree_add(&wt, fixture.repo, "worktree-with-different-name", path.ptr, &opts)); + cl_git_pass(git_repository_open_from_worktree(&wtrepo, wt)); + cl_git_pass(git_repository_head(&wthead, wtrepo)); + cl_assert_equal_s(git_reference_name(wthead), "refs/heads/worktree-with-ref"); + + git_buf_free(&path); + git_commit_free(commit); + git_reference_free(head); + git_reference_free(branch); + git_reference_free(wthead); + git_repository_free(wtrepo); +} + + void test_worktree_worktree__init_existing_worktree(void) { git_worktree *wt; |
