diff options
Diffstat (limited to 'tests-clar/config/stress.c')
-rw-r--r-- | tests-clar/config/stress.c | 59 |
1 files changed, 45 insertions, 14 deletions
diff --git a/tests-clar/config/stress.c b/tests-clar/config/stress.c index 3de1f7692..8cc64d23c 100644 --- a/tests-clar/config/stress.c +++ b/tests-clar/config/stress.c @@ -4,11 +4,13 @@ #include "fileops.h" #include "posix.h" +#define TEST_CONFIG "git-test-config" + void test_config_stress__initialize(void) { git_filebuf file = GIT_FILEBUF_INIT; - cl_git_pass(git_filebuf_open(&file, "git-test-config", 0)); + cl_git_pass(git_filebuf_open(&file, TEST_CONFIG, 0)); git_filebuf_printf(&file, "[color]\n\tui = auto\n"); git_filebuf_printf(&file, "[core]\n\teditor = \n"); @@ -18,19 +20,16 @@ void test_config_stress__initialize(void) void test_config_stress__cleanup(void) { - p_unlink("git-test-config"); + p_unlink(TEST_CONFIG); } void test_config_stress__dont_break_on_invalid_input(void) { const char *editor, *color; - struct git_config_file *file; git_config *config; - cl_assert(git_path_exists("git-test-config")); - cl_git_pass(git_config_file__ondisk(&file, "git-test-config")); - cl_git_pass(git_config_new(&config)); - cl_git_pass(git_config_add_file(config, file, 0)); + cl_assert(git_path_exists(TEST_CONFIG)); + cl_git_pass(git_config_open_ondisk(&config, TEST_CONFIG)); cl_git_pass(git_config_get_string(&color, config, "color.ui")); cl_git_pass(git_config_get_string(&editor, config, "core.editor")); @@ -40,22 +39,54 @@ void test_config_stress__dont_break_on_invalid_input(void) void test_config_stress__comments(void) { - struct git_config_file *file; git_config *config; const char *str; - cl_git_pass(git_config_file__ondisk(&file, cl_fixture("config/config12"))); - cl_git_pass(git_config_new(&config)); - cl_git_pass(git_config_add_file(config, file, 0)); + cl_git_pass(git_config_open_ondisk(&config, cl_fixture("config/config12"))); cl_git_pass(git_config_get_string(&str, config, "some.section.other")); - cl_assert(!strcmp(str, "hello! \" ; ; ; ")); + cl_assert_equal_s("hello! \" ; ; ; ", str); cl_git_pass(git_config_get_string(&str, config, "some.section.multi")); - cl_assert(!strcmp(str, "hi, this is a ; multiline comment # with ;\n special chars and other stuff !@#")); + cl_assert_equal_s("hi, this is a ; multiline comment # with ;\n special chars and other stuff !@#", str); cl_git_pass(git_config_get_string(&str, config, "some.section.back")); - cl_assert(!strcmp(str, "this is \ba phrase")); + cl_assert_equal_s("this is \ba phrase", str); + + git_config_free(config); +} + +void test_config_stress__escape_subsection_names(void) +{ + git_config *config; + const char *str; + + cl_assert(git_path_exists("git-test-config")); + cl_git_pass(git_config_open_ondisk(&config, TEST_CONFIG)); + + cl_git_pass(git_config_set_string(config, "some.sec\\tion.other", "foo")); + git_config_free(config); + + cl_git_pass(git_config_open_ondisk(&config, TEST_CONFIG)); + + cl_git_pass(git_config_get_string(&str, config, "some.sec\\tion.other")); + cl_assert_equal_s("foo", str); + git_config_free(config); +} + +void test_config_stress__trailing_backslash(void) +{ + git_config *config; + const char *str; + const char *path = "C:\\iam\\some\\windows\\path\\"; + + cl_assert(git_path_exists("git-test-config")); + cl_git_pass(git_config_open_ondisk(&config, TEST_CONFIG)); + cl_git_pass(git_config_set_string(config, "windows.path", path)); + git_config_free(config); + cl_git_pass(git_config_open_ondisk(&config, TEST_CONFIG)); + cl_git_pass(git_config_get_string(&str, config, "windows.path")); + cl_assert_equal_s(path, str); git_config_free(config); } |