Commit 3ea78f241fb0c77822d75211752b4a1d4f299ed7

Yury G. Kudryashov 2015-02-09T19:40:22

Add test for include.path inside included config It fails at least on my computer, though it may depend on some unpredictable factors (say, will realloc() extend the memory segment in place, or it will allocate new memory).

diff --git a/tests/config/include.c b/tests/config/include.c
index 0a93134..8232af4 100644
--- a/tests/config/include.c
+++ b/tests/config/include.c
@@ -102,3 +102,25 @@ void test_config_include__missing(void)
 
 	git_config_free(cfg);
 }
+
+#define replicate10(s) s s s s s s s s s s
+void test_config_include__depth2(void)
+{
+	git_config *cfg;
+	const char *str;
+	const char *content = "[include]\n" replicate10(replicate10("path=bottom\n"));
+
+	cl_git_mkfile("top-level", "[include]\npath = middle\n[foo]\nbar = baz");
+	cl_git_mkfile("middle", content);
+	cl_git_mkfile("bottom", "[foo]\nbar2 = baz2");
+
+	cl_git_pass(git_config_open_ondisk(&cfg, "top-level"));
+
+	cl_git_pass(git_config_get_string(&str, cfg, "foo.bar"));
+	cl_assert_equal_s(str, "baz");
+
+	cl_git_pass(git_config_get_string(&str, cfg, "foo.bar2"));
+	cl_assert_equal_s(str, "baz2");
+
+	git_config_free(cfg);
+}