summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2016-12-17 18:18:30 +0000
committerCarlos Martín Nieto <cmn@dwim.me>2016-12-18 14:47:27 +0000
commit410855fc4b55d9f6d75e2be44393f039f1708935 (patch)
treead874d132f4d3952ba94b1af3a0d7c3b5a7dd0e9
parentc5e6ba289266e56b8e7f7c9b463aa7008d4b0258 (diff)
downloadlibgit2-410855fc4b55d9f6d75e2be44393f039f1708935.tar.gz
sysdir: add failing test for variable substitution
When given $PATH as part of a search path, we guess again instead of substituting what the user already set.
-rw-r--r--tests/core/env.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/core/env.c b/tests/core/env.c
index ee08258a6..1af0e6e5d 100644
--- a/tests/core/env.c
+++ b/tests/core/env.c
@@ -298,3 +298,24 @@ void test_core_env__2(void)
git_buf_free(&path);
git_buf_free(&found);
}
+
+void test_core_env__substitution(void)
+{
+ git_buf buf = GIT_BUF_INIT, expected = GIT_BUF_INIT;
+
+ /* Set it to something non-default so we have controllable values */
+ cl_git_pass(git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, GIT_CONFIG_LEVEL_GLOBAL, "/tmp/a"));
+ cl_git_pass(git_libgit2_opts(GIT_OPT_GET_SEARCH_PATH, GIT_CONFIG_LEVEL_GLOBAL, &buf));
+ cl_assert_equal_s("/tmp/a", buf.ptr);
+
+ git_buf_clear(&buf);
+ cl_git_pass(git_buf_join(&buf, GIT_PATH_LIST_SEPARATOR, "$PATH", "/tmp/b"));
+ cl_git_pass(git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, GIT_CONFIG_LEVEL_GLOBAL, buf.ptr));
+ cl_git_pass(git_libgit2_opts(GIT_OPT_GET_SEARCH_PATH, GIT_CONFIG_LEVEL_GLOBAL, &buf));
+
+ cl_git_pass(git_buf_join(&expected, GIT_PATH_LIST_SEPARATOR, "/tmp/a", "/tmp/b"));
+ cl_assert_equal_s(expected.ptr, buf.ptr);
+
+ git_buf_free(&expected);
+ git_buf_free(&buf);
+}