mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-04 19:50:19 +00:00
Remove most submodule reloads from tests
With the new submodule cache validity checks, we generally don't need to call git_submodule_reload_all to have up-to-date submodule data. Some tests are still calling it where I want to actually test that it can be called safely and doesn't break anything, but mostly it is not needed. This also expands some of the existing submodule tests to cover some variants on the behavior that was already being tested.
This commit is contained in:
parent
4ece3e225b
commit
8061d519b3
@ -131,8 +131,6 @@ void test_diff_submodules__dirty_submodule_2(void)
|
|||||||
|
|
||||||
g_repo = setup_fixture_submodules();
|
g_repo = setup_fixture_submodules();
|
||||||
|
|
||||||
cl_git_pass(git_submodule_reload_all(g_repo, 1));
|
|
||||||
|
|
||||||
opts.flags = GIT_DIFF_INCLUDE_UNTRACKED |
|
opts.flags = GIT_DIFF_INCLUDE_UNTRACKED |
|
||||||
GIT_DIFF_SHOW_UNTRACKED_CONTENT |
|
GIT_DIFF_SHOW_UNTRACKED_CONTENT |
|
||||||
GIT_DIFF_RECURSE_UNTRACKED_DIRS |
|
GIT_DIFF_RECURSE_UNTRACKED_DIRS |
|
||||||
@ -165,8 +163,6 @@ void test_diff_submodules__dirty_submodule_2(void)
|
|||||||
|
|
||||||
git_diff_free(diff);
|
git_diff_free(diff);
|
||||||
|
|
||||||
cl_git_pass(git_submodule_reload_all(g_repo, 1));
|
|
||||||
|
|
||||||
cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, &opts));
|
cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, &opts));
|
||||||
check_diff_patches(diff, expected_dirty);
|
check_diff_patches(diff, expected_dirty);
|
||||||
git_diff_free(diff);
|
git_diff_free(diff);
|
||||||
@ -299,7 +295,6 @@ void test_diff_submodules__invalid_cache(void)
|
|||||||
|
|
||||||
git_submodule_free(sm);
|
git_submodule_free(sm);
|
||||||
|
|
||||||
cl_git_pass(git_submodule_reload_all(g_repo, 1));
|
|
||||||
cl_git_pass(git_submodule_lookup(&sm, g_repo, smpath));
|
cl_git_pass(git_submodule_lookup(&sm, g_repo, smpath));
|
||||||
|
|
||||||
cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, &opts));
|
cl_git_pass(git_diff_index_to_workdir(&diff, g_repo, NULL, &opts));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#include "clar_libgit2.h"
|
#include "clar_libgit2.h"
|
||||||
#include "submodule_helpers.h"
|
#include "submodule_helpers.h"
|
||||||
#include "posix.h"
|
|
||||||
#include "git2/sys/repository.h"
|
#include "git2/sys/repository.h"
|
||||||
|
#include "fileops.h"
|
||||||
|
|
||||||
static git_repository *g_repo = NULL;
|
static git_repository *g_repo = NULL;
|
||||||
|
|
||||||
@ -115,13 +115,7 @@ void test_submodule_lookup__lookup_even_with_unborn_head(void)
|
|||||||
&head, g_repo, "HEAD", "refs/heads/garbage", 1, NULL, NULL));
|
&head, g_repo, "HEAD", "refs/heads/garbage", 1, NULL, NULL));
|
||||||
git_reference_free(head);
|
git_reference_free(head);
|
||||||
|
|
||||||
assert_submodule_exists(g_repo, "sm_unchanged");
|
test_submodule_lookup__simple_lookup(); /* baseline should still pass */
|
||||||
assert_submodule_exists(g_repo, "sm_added_and_uncommited");
|
|
||||||
assert_submodule_exists(g_repo, "sm_gitmodules_only");
|
|
||||||
refute_submodule_exists(g_repo, "not-submodule", GIT_EEXISTS);
|
|
||||||
refute_submodule_exists(g_repo, "just_a_dir", GIT_ENOTFOUND);
|
|
||||||
refute_submodule_exists(g_repo, "just_a_file", GIT_ENOTFOUND);
|
|
||||||
refute_submodule_exists(g_repo, "no_such_file", GIT_ENOTFOUND);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_submodule_lookup__lookup_even_with_missing_index(void)
|
void test_submodule_lookup__lookup_even_with_missing_index(void)
|
||||||
@ -133,44 +127,62 @@ void test_submodule_lookup__lookup_even_with_missing_index(void)
|
|||||||
git_repository_set_index(g_repo, idx);
|
git_repository_set_index(g_repo, idx);
|
||||||
git_index_free(idx);
|
git_index_free(idx);
|
||||||
|
|
||||||
assert_submodule_exists(g_repo, "sm_unchanged");
|
test_submodule_lookup__simple_lookup(); /* baseline should still pass */
|
||||||
assert_submodule_exists(g_repo, "sm_added_and_uncommited");
|
|
||||||
assert_submodule_exists(g_repo, "sm_gitmodules_only");
|
|
||||||
refute_submodule_exists(g_repo, "not-submodule", GIT_EEXISTS);
|
|
||||||
refute_submodule_exists(g_repo, "just_a_dir", GIT_ENOTFOUND);
|
|
||||||
refute_submodule_exists(g_repo, "just_a_file", GIT_ENOTFOUND);
|
|
||||||
refute_submodule_exists(g_repo, "no_such_file", GIT_ENOTFOUND);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_submodule_lookup__just_added(void)
|
void test_submodule_lookup__just_added(void)
|
||||||
{
|
{
|
||||||
git_submodule *sm;
|
git_submodule *sm;
|
||||||
|
git_buf snap1 = GIT_BUF_INIT, snap2 = GIT_BUF_INIT;
|
||||||
|
|
||||||
cl_git_pass(git_submodule_add_setup(&sm, g_repo, "https://github.com/libgit2/libgit2.git", "sm_just_added", 1));
|
refute_submodule_exists(g_repo, "sm_just_added", GIT_ENOTFOUND);
|
||||||
|
refute_submodule_exists(g_repo, "sm_just_added_2", GIT_ENOTFOUND);
|
||||||
|
refute_submodule_exists(g_repo, "mismatch_name", GIT_ENOTFOUND);
|
||||||
|
refute_submodule_exists(g_repo, "mismatch_path", GIT_ENOTFOUND);
|
||||||
|
test_submodule_lookup__simple_lookup(); /* baseline */
|
||||||
|
|
||||||
|
cl_git_pass(git_futils_readbuffer(&snap1, "submod2/.gitmodules"));
|
||||||
|
|
||||||
|
cl_git_pass(git_submodule_add_setup(&sm, g_repo,
|
||||||
|
"https://github.com/libgit2/libgit2.git", "sm_just_added", 1));
|
||||||
git_submodule_free(sm);
|
git_submodule_free(sm);
|
||||||
assert_submodule_exists(g_repo, "sm_just_added");
|
assert_submodule_exists(g_repo, "sm_just_added");
|
||||||
|
|
||||||
cl_git_pass(git_submodule_add_setup(&sm, g_repo, "https://github.com/libgit2/libgit2.git", "sm_just_added_2", 1));
|
cl_git_pass(git_submodule_add_setup(&sm, g_repo,
|
||||||
|
"https://github.com/libgit2/libgit2.git", "sm_just_added_2", 1));
|
||||||
assert_submodule_exists(g_repo, "sm_just_added_2");
|
assert_submodule_exists(g_repo, "sm_just_added_2");
|
||||||
git_submodule_free(sm);
|
git_submodule_free(sm);
|
||||||
|
|
||||||
cl_git_append2file("submod2/.gitmodules", "\n[submodule \"mismatch_name\"]\n\tpath = mismatch_path\n\turl = https://example.com/example.git\n\n");
|
cl_git_pass(git_futils_readbuffer(&snap2, "submod2/.gitmodules"));
|
||||||
|
|
||||||
cl_git_pass(git_submodule_reload_all(g_repo, 1));
|
cl_git_append2file(
|
||||||
|
"submod2/.gitmodules",
|
||||||
|
"\n[submodule \"mismatch_name\"]\n"
|
||||||
|
"\tpath = mismatch_path\n"
|
||||||
|
"\turl = https://example.com/example.git\n\n");
|
||||||
|
|
||||||
assert_submodule_exists(g_repo, "mismatch_name");
|
assert_submodule_exists(g_repo, "mismatch_name");
|
||||||
assert_submodule_exists(g_repo, "mismatch_path");
|
assert_submodule_exists(g_repo, "mismatch_path");
|
||||||
|
|
||||||
assert_submodule_exists(g_repo, "sm_just_added");
|
assert_submodule_exists(g_repo, "sm_just_added");
|
||||||
assert_submodule_exists(g_repo, "sm_just_added_2");
|
assert_submodule_exists(g_repo, "sm_just_added_2");
|
||||||
|
test_submodule_lookup__simple_lookup();
|
||||||
|
|
||||||
/* all the regular ones should still be working right, too */
|
cl_git_rewritefile("submod2/.gitmodules", snap2.ptr);
|
||||||
|
git_buf_free(&snap2);
|
||||||
|
|
||||||
assert_submodule_exists(g_repo, "sm_unchanged");
|
refute_submodule_exists(g_repo, "mismatch_name", GIT_ENOTFOUND);
|
||||||
assert_submodule_exists(g_repo, "sm_added_and_uncommited");
|
refute_submodule_exists(g_repo, "mismatch_path", GIT_ENOTFOUND);
|
||||||
assert_submodule_exists(g_repo, "sm_gitmodules_only");
|
assert_submodule_exists(g_repo, "sm_just_added");
|
||||||
refute_submodule_exists(g_repo, "not-submodule", GIT_EEXISTS);
|
assert_submodule_exists(g_repo, "sm_just_added_2");
|
||||||
refute_submodule_exists(g_repo, "just_a_dir", GIT_ENOTFOUND);
|
test_submodule_lookup__simple_lookup();
|
||||||
refute_submodule_exists(g_repo, "just_a_file", GIT_ENOTFOUND);
|
|
||||||
refute_submodule_exists(g_repo, "no_such_file", GIT_ENOTFOUND);
|
cl_git_rewritefile("submod2/.gitmodules", snap1.ptr);
|
||||||
|
git_buf_free(&snap1);
|
||||||
|
|
||||||
|
refute_submodule_exists(g_repo, "mismatch_name", GIT_ENOTFOUND);
|
||||||
|
refute_submodule_exists(g_repo, "mismatch_path", GIT_ENOTFOUND);
|
||||||
|
/* note error code change, because add_setup made a repo in the workdir */
|
||||||
|
refute_submodule_exists(g_repo, "sm_just_added", GIT_EEXISTS);
|
||||||
|
refute_submodule_exists(g_repo, "sm_just_added_2", GIT_EEXISTS);
|
||||||
|
test_submodule_lookup__simple_lookup();
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,10 @@ void test_submodule_nosubs__reload_add_reload(void)
|
|||||||
|
|
||||||
cl_git_pass(git_submodule_reload_all(repo, 0));
|
cl_git_pass(git_submodule_reload_all(repo, 0));
|
||||||
|
|
||||||
cl_git_pass(git_submodule_add_setup(&sm, repo, "https://github.com/libgit2/libgit2.git", "submodules/libgit2", 1));
|
/* try one add with a reload (to make sure no errors happen) */
|
||||||
|
|
||||||
|
cl_git_pass(git_submodule_add_setup(&sm, repo,
|
||||||
|
"https://github.com/libgit2/libgit2.git", "submodules/libgit2", 1));
|
||||||
|
|
||||||
cl_git_pass(git_submodule_reload_all(repo, 0));
|
cl_git_pass(git_submodule_reload_all(repo, 0));
|
||||||
|
|
||||||
@ -79,6 +82,17 @@ void test_submodule_nosubs__reload_add_reload(void)
|
|||||||
cl_git_pass(git_submodule_lookup(&sm, repo, "submodules/libgit2"));
|
cl_git_pass(git_submodule_lookup(&sm, repo, "submodules/libgit2"));
|
||||||
cl_assert_equal_s("submodules/libgit2", git_submodule_name(sm));
|
cl_assert_equal_s("submodules/libgit2", git_submodule_name(sm));
|
||||||
git_submodule_free(sm);
|
git_submodule_free(sm);
|
||||||
|
|
||||||
|
/* try one add without a reload (to make sure cache inval works, too) */
|
||||||
|
|
||||||
|
cl_git_pass(git_submodule_add_setup(&sm, repo,
|
||||||
|
"https://github.com/libgit2/libgit2.git", "libgit2-again", 1));
|
||||||
|
cl_assert_equal_s("libgit2-again", git_submodule_name(sm));
|
||||||
|
git_submodule_free(sm);
|
||||||
|
|
||||||
|
cl_git_pass(git_submodule_lookup(&sm, repo, "libgit2-again"));
|
||||||
|
cl_assert_equal_s("libgit2-again", git_submodule_name(sm));
|
||||||
|
git_submodule_free(sm);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_submodule_nosubs__bad_gitmodules(void)
|
void test_submodule_nosubs__bad_gitmodules(void)
|
||||||
@ -101,7 +115,7 @@ void test_submodule_nosubs__add_and_delete(void)
|
|||||||
git_submodule *sm;
|
git_submodule *sm;
|
||||||
git_buf buf = GIT_BUF_INIT;
|
git_buf buf = GIT_BUF_INIT;
|
||||||
|
|
||||||
/* note the lack of calls to git_submodule_reload - this *should* work */
|
/* note lack of calls to git_submodule_reload_all - this *should* work */
|
||||||
|
|
||||||
cl_git_fail(git_submodule_lookup(NULL, repo, "libgit2"));
|
cl_git_fail(git_submodule_lookup(NULL, repo, "libgit2"));
|
||||||
cl_git_fail(git_submodule_lookup(NULL, repo, "submodules/libgit2"));
|
cl_git_fail(git_submodule_lookup(NULL, repo, "submodules/libgit2"));
|
||||||
|
Loading…
Reference in New Issue
Block a user