summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2013-03-22 14:27:56 -0700
committerRussell Belfer <rb@github.com>2013-03-22 14:27:56 -0700
commit1323c6d18049163fc81e5e246e7d4e120c8de03a (patch)
treea75d2a576d38890a8c009b299ec2cb744d571282
parent3ba01362437102501a173b9fe072a5690358baa0 (diff)
downloadlibgit2-1323c6d18049163fc81e5e246e7d4e120c8de03a.tar.gz
Add cl_repo_set_bool and cleanup tests
This adds a helper function for the cases where you want to quickly set a single boolean config value for a repository. This allowed me to remove a lot of code.
-rw-r--r--tests-clar/checkout/binaryunicode.c14
-rw-r--r--tests-clar/checkout/crlf.c25
-rw-r--r--tests-clar/checkout/index.c30
-rw-r--r--tests-clar/checkout/tree.c21
-rw-r--r--tests-clar/clar_libgit2.c8
-rw-r--r--tests-clar/clar_libgit2.h3
-rw-r--r--tests-clar/diff/workdir.c10
-rw-r--r--tests-clar/index/filemodes.c10
-rw-r--r--tests-clar/repo/hashfile.c5
-rw-r--r--tests-clar/repo/init.c6
-rw-r--r--tests-clar/status/worktree.c19
-rw-r--r--tests-clar/status/worktree_init.c5
12 files changed, 45 insertions, 111 deletions
diff --git a/tests-clar/checkout/binaryunicode.c b/tests-clar/checkout/binaryunicode.c
index 5a781740f..14ab9fdfa 100644
--- a/tests-clar/checkout/binaryunicode.c
+++ b/tests-clar/checkout/binaryunicode.c
@@ -47,22 +47,12 @@ static void execute_test(void)
void test_checkout_binaryunicode__noautocrlf(void)
{
- git_config *config;
-
- cl_git_pass(git_repository_config(&config, g_repo));
- cl_git_pass(git_config_set_bool(config, "core.autocrlf", false));
- git_config_free(config);
-
+ cl_repo_set_bool(g_repo, "core.autocrlf", false);
execute_test();
}
void test_checkout_binaryunicode__autocrlf(void)
{
- git_config *config;
-
- cl_git_pass(git_repository_config(&config, g_repo));
- cl_git_pass(git_config_set_bool(config, "core.autocrlf", true));
- git_config_free(config);
-
+ cl_repo_set_bool(g_repo, "core.autocrlf", true);
execute_test();
}
diff --git a/tests-clar/checkout/crlf.c b/tests-clar/checkout/crlf.c
index 38c0080d3..74da27652 100644
--- a/tests-clar/checkout/crlf.c
+++ b/tests-clar/checkout/crlf.c
@@ -24,30 +24,13 @@ void test_checkout_crlf__cleanup(void)
cl_git_sandbox_cleanup();
}
-#ifdef GIT_WIN32
-static void set_config_entry_to(const char *entry_name, bool value)
-{
- git_config *cfg;
-
- cl_git_pass(git_repository_config(&cfg, g_repo));
- cl_git_pass(git_config_set_bool(cfg, entry_name, value));
-
- git_config_free(cfg);
-}
-
-static void set_core_autocrlf_to(bool value)
-{
- set_config_entry_to("core.autocrlf", value);
-}
-#endif
-
void test_checkout_crlf__detect_crlf_autocrlf_false(void)
{
#ifdef GIT_WIN32
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
- set_core_autocrlf_to(false);
+ cl_repo_set_bool(g_repo, "core.autocrlf", false);
git_checkout_head(g_repo, &opts);
@@ -63,7 +46,7 @@ void test_checkout_crlf__autocrlf_false_index_size_is_unfiltered_size(void)
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
- set_core_autocrlf_to(false);
+ cl_repo_set_bool(g_repo, "core.autocrlf", false);
git_checkout_head(g_repo, &opts);
@@ -82,7 +65,7 @@ void test_checkout_crlf__detect_crlf_autocrlf_true(void)
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
- set_core_autocrlf_to(true);
+ cl_repo_set_bool(g_repo, "core.autocrlf", true);
git_checkout_head(g_repo, &opts);
@@ -98,7 +81,7 @@ void test_checkout_crlf__autocrlf_true_index_size_is_filtered_size(void)
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
- set_core_autocrlf_to(true);
+ cl_repo_set_bool(g_repo, "core.autocrlf", true);
git_checkout_head(g_repo, &opts);
diff --git a/tests-clar/checkout/index.c b/tests-clar/checkout/index.c
index e8a61ca3f..3976dd20e 100644
--- a/tests-clar/checkout/index.c
+++ b/tests-clar/checkout/index.c
@@ -92,21 +92,6 @@ void test_checkout_index__honor_the_specified_pathspecs(void)
test_file_contents("./testrepo/new.txt", "my new file\n");
}
-static void set_config_entry_to(const char *entry_name, bool value)
-{
- git_config *cfg;
-
- cl_git_pass(git_repository_config(&cfg, g_repo));
- cl_git_pass(git_config_set_bool(cfg, entry_name, value));
-
- git_config_free(cfg);
-}
-
-static void set_core_autocrlf_to(bool value)
-{
- set_config_entry_to("core.autocrlf", value);
-}
-
void test_checkout_index__honor_the_gitattributes_directives(void)
{
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
@@ -115,7 +100,7 @@ void test_checkout_index__honor_the_gitattributes_directives(void)
"new.txt text eol=lf\n";
cl_git_mkfile("./testrepo/.gitattributes", attributes);
- set_core_autocrlf_to(false);
+ cl_repo_set_bool(g_repo, "core.autocrlf", false);
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
@@ -133,7 +118,7 @@ void test_checkout_index__honor_coreautocrlf_setting_set_to_true(void)
const char *expected_readme_text = "hey there\r\n";
cl_git_pass(p_unlink("./testrepo/.gitattributes"));
- set_core_autocrlf_to(true);
+ cl_repo_set_bool(g_repo, "core.autocrlf", true);
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
@@ -143,16 +128,11 @@ void test_checkout_index__honor_coreautocrlf_setting_set_to_true(void)
#endif
}
-static void set_repo_symlink_handling_cap_to(bool value)
-{
- set_config_entry_to("core.symlinks", value);
-}
-
void test_checkout_index__honor_coresymlinks_setting_set_to_true(void)
{
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
- set_repo_symlink_handling_cap_to(true);
+ cl_repo_set_bool(g_repo, "core.symlinks", true);
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
@@ -178,7 +158,7 @@ void test_checkout_index__honor_coresymlinks_setting_set_to_false(void)
{
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
- set_repo_symlink_handling_cap_to(false);
+ cl_repo_set_bool(g_repo, "core.symlinks", false);
opts.checkout_strategy = GIT_CHECKOUT_SAFE_CREATE;
@@ -372,7 +352,7 @@ void test_checkout_index__wont_notify_of_expected_line_ending_changes(void)
git_checkout_opts opts = GIT_CHECKOUT_OPTS_INIT;
cl_git_pass(p_unlink("./testrepo/.gitattributes"));
- set_core_autocrlf_to(true);
+ cl_repo_set_bool(g_repo, "core.autocrlf", true);
cl_git_mkfile("./testrepo/new.txt", "my new file\r\n");
diff --git a/tests-clar/checkout/tree.c b/tests-clar/checkout/tree.c
index 348be51a8..8309cd721 100644
--- a/tests-clar/checkout/tree.c
+++ b/tests-clar/checkout/tree.c
@@ -452,32 +452,31 @@ void test_checkout_tree__can_checkout_with_last_workdir_item_missing(void)
git_oid tree_id, commit_id;
git_tree *tree = NULL;
git_commit *commit = NULL;
-
+
git_repository_index(&index, g_repo);
-
+
opts.checkout_strategy = GIT_CHECKOUT_FORCE;
-
+
cl_git_pass(git_reference_name_to_id(&commit_id, g_repo, "refs/heads/master"));
cl_git_pass(git_commit_lookup(&commit, g_repo, &commit_id));
-
+
cl_git_pass(git_checkout_tree(g_repo, (git_object *)commit, &opts));
cl_git_pass(git_repository_set_head(g_repo, "refs/heads/master"));
-
-
+
cl_git_pass(p_mkdir("./testrepo/this-is-dir", 0777));
cl_git_mkfile("./testrepo/this-is-dir/contained_file", "content\n");
-
+
cl_git_pass(git_index_add_bypath(index, "this-is-dir/contained_file"));
git_index_write_tree(&tree_id, index);
cl_git_pass(git_tree_lookup(&tree, g_repo, &tree_id));
-
+
cl_git_pass(p_unlink("./testrepo/this-is-dir/contained_file"));
-
+
opts.checkout_strategy = GIT_CHECKOUT_SAFE;
-
+
opts.checkout_strategy = 1;
git_checkout_tree(g_repo, (git_object *)tree, &opts);
-
+
git_tree_free(tree);
git_commit_free(commit);
git_index_free(index);
diff --git a/tests-clar/clar_libgit2.c b/tests-clar/clar_libgit2.c
index 8033cdc3e..68d17162b 100644
--- a/tests-clar/clar_libgit2.c
+++ b/tests-clar/clar_libgit2.c
@@ -323,3 +323,11 @@ int cl_git_remove_placeholders(const char *directory_path, const char *filename)
return error;
}
+
+void cl_repo_set_bool(git_repository *repo, const char *cfg, int value)
+{
+ git_config *config;
+ cl_git_pass(git_repository_config(&config, repo));
+ cl_git_pass(git_config_set_bool(config, cfg, value != 0));
+ git_config_free(config);
+}
diff --git a/tests-clar/clar_libgit2.h b/tests-clar/clar_libgit2.h
index 667b8050a..93909d8a5 100644
--- a/tests-clar/clar_libgit2.h
+++ b/tests-clar/clar_libgit2.h
@@ -68,4 +68,7 @@ const char* cl_git_path_url(const char *path);
/* Test repository cleaner */
int cl_git_remove_placeholders(const char *directory_path, const char *filename);
+/* config setting helpers */
+void cl_repo_set_bool(git_repository *repo, const char *cfg, int value);
+
#endif
diff --git a/tests-clar/diff/workdir.c b/tests-clar/diff/workdir.c
index 983465b29..1ac56311c 100644
--- a/tests-clar/diff/workdir.c
+++ b/tests-clar/diff/workdir.c
@@ -472,7 +472,6 @@ void test_diff_workdir__to_index_notify_can_be_used_as_filtering_function(void)
void test_diff_workdir__filemode_changes(void)
{
- git_config *cfg;
git_diff_list *diff = NULL;
diff_expects exp;
int use_iterator;
@@ -482,8 +481,7 @@ void test_diff_workdir__filemode_changes(void)
g_repo = cl_git_sandbox_init("issue_592");
- cl_git_pass(git_repository_config(&cfg, g_repo));
- cl_git_pass(git_config_set_bool(cfg, "core.filemode", true));
+ cl_repo_set_bool(g_repo, "core.filemode", true);
/* test once with no mods */
@@ -530,12 +528,10 @@ void test_diff_workdir__filemode_changes(void)
git_diff_list_free(diff);
cl_assert(cl_toggle_filemode("issue_592/a.txt"));
- git_config_free(cfg);
}
void test_diff_workdir__filemode_changes_with_filemode_false(void)
{
- git_config *cfg;
git_diff_list *diff = NULL;
diff_expects exp;
@@ -544,8 +540,7 @@ void test_diff_workdir__filemode_changes_with_filemode_false(void)
g_repo = cl_git_sandbox_init("issue_592");
- cl_git_pass(git_repository_config(&cfg, g_repo));
- cl_git_pass(git_config_set_bool(cfg, "core.filemode", false));
+ cl_repo_set_bool(g_repo, "core.filemode", false);
/* test once with no mods */
@@ -578,7 +573,6 @@ void test_diff_workdir__filemode_changes_with_filemode_false(void)
git_diff_list_free(diff);
cl_assert(cl_toggle_filemode("issue_592/a.txt"));
- git_config_free(cfg);
}
void test_diff_workdir__head_index_and_workdir_all_differ(void)
diff --git a/tests-clar/index/filemodes.c b/tests-clar/index/filemodes.c
index 1bb44173c..e56a9c069 100644
--- a/tests-clar/index/filemodes.c
+++ b/tests-clar/index/filemodes.c
@@ -66,13 +66,10 @@ static void add_and_check_mode(
void test_index_filemodes__untrusted(void)
{
- git_config *cfg;
git_index *index;
bool can_filemode = cl_is_chmod_supported();
- cl_git_pass(git_repository_config(&cfg, g_repo));
- cl_git_pass(git_config_set_bool(cfg, "core.filemode", false));
- git_config_free(cfg);
+ cl_repo_set_bool(g_repo, "core.filemode", false);
cl_git_pass(git_repository_index(&index, g_repo));
cl_assert((git_index_caps(index) & GIT_INDEXCAP_NO_FILEMODE) != 0);
@@ -113,7 +110,6 @@ void test_index_filemodes__untrusted(void)
void test_index_filemodes__trusted(void)
{
- git_config *cfg;
git_index *index;
/* Only run these tests on platforms where I can actually
@@ -122,9 +118,7 @@ void test_index_filemodes__trusted(void)
if (!cl_is_chmod_supported())
return;
- cl_git_pass(git_repository_config(&cfg, g_repo));
- cl_git_pass(git_config_set_bool(cfg, "core.filemode", true));
- git_config_free(cfg);
+ cl_repo_set_bool(g_repo, "core.filemode", true);
cl_git_pass(git_repository_index(&index, g_repo));
cl_assert((git_index_caps(index) & GIT_INDEXCAP_NO_FILEMODE) == 0);
diff --git a/tests-clar/repo/hashfile.c b/tests-clar/repo/hashfile.c
index 129e5d371..4cc9f18b4 100644
--- a/tests-clar/repo/hashfile.c
+++ b/tests-clar/repo/hashfile.c
@@ -41,11 +41,8 @@ void test_repo_hashfile__simple(void)
void test_repo_hashfile__filtered(void)
{
git_oid a, b;
- git_config *config;
- cl_git_pass(git_repository_config(&config, _repo));
- cl_git_pass(git_config_set_bool(config, "core.autocrlf", true));
- git_config_free(config);
+ cl_repo_set_bool(_repo, "core.autocrlf", true);
cl_git_append2file("status/.gitattributes", "*.txt text\n*.bin binary\n\n");
diff --git a/tests-clar/repo/init.c b/tests-clar/repo/init.c
index e6f53083b..8cf73795f 100644
--- a/tests-clar/repo/init.c
+++ b/tests-clar/repo/init.c
@@ -276,11 +276,9 @@ void test_repo_init__reinit_overwrites_filemode(void)
cl_set_cleanup(&cleanup_repository, "overwrite.git");
cl_git_pass(git_repository_init(&_repo, "overwrite.git", 1));
-
/* Change the "core.filemode" config value to something unlikely */
- git_repository_config(&config, _repo);
- git_config_set_bool(config, "core.filemode", !expected);
- git_config_free(config);
+ cl_repo_set_bool(_repo, "core.filemode", !expected);
+
git_repository_free(_repo);
_repo = NULL;
diff --git a/tests-clar/status/worktree.c b/tests-clar/status/worktree.c
index b5449f6f1..5b11d1f82 100644
--- a/tests-clar/status/worktree.c
+++ b/tests-clar/status/worktree.c
@@ -470,15 +470,14 @@ void test_status_worktree__filemode_changes(void)
git_repository *repo = cl_git_sandbox_init("filemodes");
status_entry_counts counts;
git_status_options opts = GIT_STATUS_OPTIONS_INIT;
- git_config *cfg;
/* overwrite stored filemode with platform appropriate value */
- cl_git_pass(git_repository_config(&cfg, repo));
if (cl_is_chmod_supported())
- cl_git_pass(git_config_set_bool(cfg, "core.filemode", true));
+ cl_repo_set_bool(repo, "core.filemode", true);
else {
int i;
- cl_git_pass(git_config_set_bool(cfg, "core.filemode", false));
+
+ cl_repo_set_bool(repo, "core.filemode", false);
/* won't trust filesystem mode diffs, so these will appear unchanged */
for (i = 0; i < filemode_count; ++i)
@@ -502,8 +501,6 @@ void test_status_worktree__filemode_changes(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);
-
- git_config_free(cfg);
}
static int cb_status__interrupt(const char *p, unsigned int s, void *payload)
@@ -533,12 +530,9 @@ void test_status_worktree__interruptable_foreach(void)
void test_status_worktree__line_endings_dont_count_as_changes_with_autocrlf(void)
{
git_repository *repo = cl_git_sandbox_init("status");
- git_config *config;
unsigned int status;
- cl_git_pass(git_repository_config(&config, repo));
- cl_git_pass(git_config_set_bool(config, "core.autocrlf", true));
- git_config_free(config);
+ cl_repo_set_bool(repo, "core.autocrlf", true);
cl_git_rewritefile("status/current_file", "current_file\r\n");
@@ -621,7 +615,6 @@ static void assert_ignore_case(
int expected_lower_cased_file_status,
int expected_camel_cased_file_status)
{
- git_config *config;
unsigned int status;
git_buf lower_case_path = GIT_BUF_INIT, camel_case_path = GIT_BUF_INIT;
git_repository *repo, *repo2;
@@ -629,9 +622,7 @@ static void assert_ignore_case(
repo = cl_git_sandbox_init("empty_standard_repo");
cl_git_remove_placeholders(git_repository_path(repo), "dummy-marker.txt");
- cl_git_pass(git_repository_config(&config, repo));
- cl_git_pass(git_config_set_bool(config, "core.ignorecase", should_ignore_case));
- git_config_free(config);
+ cl_repo_set_bool(repo, "core.ignorecase", should_ignore_case);
cl_git_pass(git_buf_joinpath(&lower_case_path,
git_repository_workdir(repo), "plop"));
diff --git a/tests-clar/status/worktree_init.c b/tests-clar/status/worktree_init.c
index 0c34dde87..b67107aec 100644
--- a/tests-clar/status/worktree_init.c
+++ b/tests-clar/status/worktree_init.c
@@ -316,15 +316,13 @@ void test_status_worktree_init__new_staged_file_must_handle_crlf(void)
{
git_repository *repo;
git_index *index;
- git_config *config;
unsigned int status;
cl_set_cleanup(&cleanup_new_repo, "getting_started");
cl_git_pass(git_repository_init(&repo, "getting_started", 0));
// Ensure that repo has core.autocrlf=true
- cl_git_pass(git_repository_config(&config, repo));
- cl_git_pass(git_config_set_bool(config, "core.autocrlf", true));
+ cl_repo_set_bool(repo, "core.autocrlf", true);
cl_git_mkfile("getting_started/testfile.txt", "content\r\n"); // Content with CRLF
@@ -335,7 +333,6 @@ void test_status_worktree_init__new_staged_file_must_handle_crlf(void)
cl_git_pass(git_status_file(&status, repo, "testfile.txt"));
cl_assert_equal_i(GIT_STATUS_INDEX_NEW, status);
- git_config_free(config);
git_index_free(index);
git_repository_free(repo);
}