From 7202ec29e9643b7262d827483d96b9e8708af543 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Wed, 20 Mar 2013 11:47:34 -0700 Subject: [PATCH 1/3] Update to latest Clar --- tests-clar/clar.c | 33 +++++++++++++-------- tests-clar/clar.h | 16 ++++++++-- tests-clar/generate.py | 67 +++++++++++++++++++++++++++++++++++++----- 3 files changed, 93 insertions(+), 23 deletions(-) diff --git a/tests-clar/clar.c b/tests-clar/clar.c index 10bea8724..fed87c30d 100644 --- a/tests-clar/clar.c +++ b/tests-clar/clar.c @@ -331,21 +331,14 @@ clar_test(int argc, char **argv) return _clar.total_errors; } -void -clar__assert( - int condition, +void clar__fail( const char *file, int line, const char *error_msg, const char *description, int should_abort) { - struct clar_error *error; - - if (condition) - return; - - error = calloc(1, sizeof(struct clar_error)); + struct clar_error *error = calloc(1, sizeof(struct clar_error)); if (_clar.errors == NULL) _clar.errors = error; @@ -380,6 +373,20 @@ clar__assert( } } +void clar__assert( + int condition, + const char *file, + int line, + const char *error_msg, + const char *description, + int should_abort) +{ + if (condition) + return; + + clar__fail(file, line, error_msg, description, should_abort); +} + void clar__assert_equal_s( const char *s1, const char *s2, @@ -392,8 +399,8 @@ void clar__assert_equal_s( if (!match) { char buf[4096]; - snprint_eq(buf, 4096, "'%s' != '%s'", s1, s2); - clar__assert(0, file, line, err, buf, should_abort); + snprint_eq(buf, sizeof(buf), "'%s' != '%s'", s1, s2); + clar__fail(file, line, err, buf, should_abort); } } @@ -407,8 +414,8 @@ void clar__assert_equal_i( { if (i1 != i2) { char buf[128]; - snprint_eq(buf, 128, "%d != %d", i1, i2); - clar__assert(0, file, line, err, buf, should_abort); + snprint_eq(buf, sizeof(buf), "%d != %d", i1, i2); + clar__fail(file, line, err, buf, should_abort); } } diff --git a/tests-clar/clar.h b/tests-clar/clar.h index 2ba6416b3..d92318bd4 100644 --- a/tests-clar/clar.h +++ b/tests-clar/clar.h @@ -51,17 +51,29 @@ void cl_fixture_cleanup(const char *fixture_name); /** * Forced failure/warning */ -#define cl_fail(desc) clar__assert(0, __FILE__, __LINE__, "Test failed.", desc, 1) -#define cl_warning(desc) clar__assert(0, __FILE__, __LINE__, "Warning during test execution:", desc, 0) +#define cl_fail(desc) clar__fail(__FILE__, __LINE__, "Test failed.", desc, 1) +#define cl_warning(desc) clar__fail(__FILE__, __LINE__, "Warning during test execution:", desc, 0) /** * Typed assertion macros */ #define cl_assert_equal_s(s1,s2) clar__assert_equal_s((s1),(s2),__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2, 1) +#define cl_assert_equal_s_(s1,s2,note) clar__assert_equal_s((s1),(s2),__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2 " (" #note ")", 1) + #define cl_assert_equal_i(i1,i2) clar__assert_equal_i((i1),(i2),__FILE__,__LINE__,#i1 " != " #i2, 1) +#define cl_assert_equal_i_(i1,i2,note) clar__assert_equal_i((i1),(i2),__FILE__,__LINE__,#i1 " != " #i2 " (" #note ")", 1) + #define cl_assert_equal_b(b1,b2) clar__assert_equal_i(!!(b1),!!(b2),__FILE__,__LINE__,#b1 " != " #b2, 1) + #define cl_assert_equal_p(p1,p2) cl_assert((p1) == (p2)) +void clar__fail( + const char *file, + int line, + const char *error, + const char *description, + int should_abort); + void clar__assert( int condition, const char *file, diff --git a/tests-clar/generate.py b/tests-clar/generate.py index c2739224d..d4fe8f2a3 100644 --- a/tests-clar/generate.py +++ b/tests-clar/generate.py @@ -60,7 +60,10 @@ class Module(object): def __init__(self, name): self.name = name + + self.mtime = 0 self.enabled = True + self.modified = False def clean_name(self): return self.name.replace("_", "::") @@ -102,17 +105,41 @@ class Module(object): return self.callbacks != [] - def load(self, path): + def refresh(self, path): + self.modified = False + try: + st = os.stat(path) + + # Not modified + if st.st_mtime == self.mtime: + return True + + self.modified = True + self.mtime = st.st_mtime + with open(path) as fp: - return self.parse(fp.read()) + raw_content = fp.read() + except IOError: return False + return self.parse(raw_content) + class TestSuite(object): + def __init__(self, path): self.path = path + def should_generate(self, path): + if not os.path.isfile(path): + return True + + if any(module.modified for module in self.modules.values()): + return True + + return False + def find_modules(self): modules = [] for root, _, files in os.walk(self.path): @@ -129,15 +156,33 @@ class TestSuite(object): return modules + def load_cache(self): + path = os.path.join(self.path, '.clarcache') + cache = {} + + try: + fp = open(path, 'rb') + cache = pickle.load(fp) + fp.close() + except (IOError, ValueError): + pass + + return cache + + def save_cache(self): + path = os.path.join(self.path, '.clarcache') + with open(path, 'wb') as cache: + pickle.dump(self.modules, cache) + def load(self, force = False): module_data = self.find_modules() - self.modules = {} + self.modules = {} if force else self.load_cache() for path, name in module_data: if name not in self.modules: self.modules[name] = Module(name) - if not self.modules[name].load(path): + if not self.modules[name].refresh(path): del self.modules[name] def disable(self, excluded): @@ -157,6 +202,9 @@ class TestSuite(object): def write(self): output = os.path.join(self.path, 'clar.suite') + if not self.should_generate(output): + return False + with open(output, 'w') as data: for module in self.modules.values(): t = Module.DeclarationTemplate(module) @@ -175,19 +223,22 @@ class TestSuite(object): data.write("static const size_t _clar_suite_count = %d;\n" % self.suite_count()) data.write("static const size_t _clar_callback_count = %d;\n" % self.callback_count()) + suite.save_cache() + return True + if __name__ == '__main__': from optparse import OptionParser parser = OptionParser() + parser.add_option('-f', '--force', dest='force', default=False) parser.add_option('-x', '--exclude', dest='excluded', action='append', default=[]) options, args = parser.parse_args() for path in args or ['.']: suite = TestSuite(path) - suite.load() + suite.load(options.force) suite.disable(options.excluded) - suite.write() - - print("Written `clar.suite` (%d suites)" % len(suite.modules)) + if suite.write(): + print("Written `clar.suite` (%d tests in %d suites)" % (suite.callback_count(), suite.suite_count())) From 3ba01362437102501a173b9fe072a5690358baa0 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Wed, 20 Mar 2013 11:46:03 -0700 Subject: [PATCH 2/3] Update cl_assert_equal_sz to be nicer This makes the size_t comparison test nicer (assuming that the values are actually not using the full length), and converts some cases that were using it for pointer comparison to use the macro that is designed for pointer comparison. --- tests-clar/clar_libgit2.h | 2 +- tests-clar/network/urlparse.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests-clar/clar_libgit2.h b/tests-clar/clar_libgit2.h index 321ec5f2f..667b8050a 100644 --- a/tests-clar/clar_libgit2.h +++ b/tests-clar/clar_libgit2.h @@ -29,7 +29,7 @@ void cl_git_report_failure(int, const char *, int, const char *); -#define cl_assert_equal_sz(sz1,sz2) cl_assert((sz1) == (sz2)) +#define cl_assert_equal_sz(sz1,sz2) cl_assert_equal_i((int)sz1, (int)(sz2)) /* * Some utility macros for building long strings diff --git a/tests-clar/network/urlparse.c b/tests-clar/network/urlparse.c index 84d0bfb88..173e57d0f 100644 --- a/tests-clar/network/urlparse.c +++ b/tests-clar/network/urlparse.c @@ -23,8 +23,8 @@ void test_network_urlparse__trivial(void) "example.com/resource", "8080")); cl_assert_equal_s(host, "example.com"); cl_assert_equal_s(port, "8080"); - cl_assert_equal_sz(user, NULL); - cl_assert_equal_sz(pass, NULL); + cl_assert_equal_p(user, NULL); + cl_assert_equal_p(pass, NULL); } void test_network_urlparse__user(void) @@ -34,7 +34,7 @@ void test_network_urlparse__user(void) cl_assert_equal_s(host, "example.com"); cl_assert_equal_s(port, "8080"); cl_assert_equal_s(user, "user"); - cl_assert_equal_sz(pass, NULL); + cl_assert_equal_p(pass, NULL); } void test_network_urlparse__user_pass(void) @@ -55,8 +55,8 @@ void test_network_urlparse__port(void) "example.com:9191/resource", "8080")); cl_assert_equal_s(host, "example.com"); cl_assert_equal_s(port, "9191"); - cl_assert_equal_sz(user, NULL); - cl_assert_equal_sz(pass, NULL); + cl_assert_equal_p(user, NULL); + cl_assert_equal_p(pass, NULL); } void test_network_urlparse__user_port(void) @@ -67,7 +67,7 @@ void test_network_urlparse__user_port(void) cl_assert_equal_s(host, "example.com"); cl_assert_equal_s(port, "9191"); cl_assert_equal_s(user, "user"); - cl_assert_equal_sz(pass, NULL); + cl_assert_equal_p(pass, NULL); } void test_network_urlparse__user_pass_port(void) From 1323c6d18049163fc81e5e246e7d4e120c8de03a Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Fri, 22 Mar 2013 14:27:56 -0700 Subject: [PATCH 3/3] 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. --- tests-clar/checkout/binaryunicode.c | 14 ++------------ tests-clar/checkout/crlf.c | 25 ++++-------------------- tests-clar/checkout/index.c | 30 +++++------------------------ tests-clar/checkout/tree.c | 21 ++++++++++---------- tests-clar/clar_libgit2.c | 8 ++++++++ tests-clar/clar_libgit2.h | 3 +++ tests-clar/diff/workdir.c | 10 ++-------- tests-clar/index/filemodes.c | 10 ++-------- tests-clar/repo/hashfile.c | 5 +---- tests-clar/repo/init.c | 6 ++---- tests-clar/status/worktree.c | 19 +++++------------- tests-clar/status/worktree_init.c | 5 +---- 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); }