Commit 71ba28e3a55511eaac3b2924d8de147bdce60683

Vicent Marti 2014-03-28T19:03:37

Merge pull request #2214 from ethomson/sandbox_config RFC: Sandbox HOME during test execution

diff --git a/tests/clar.c b/tests/clar.c
index 5354241..8e538f5 100644
--- a/tests/clar.c
+++ b/tests/clar.c
@@ -353,8 +353,8 @@ clar_parse_args(int argc, char **argv)
 	}
 }
 
-int
-clar_test(int argc, char **argv)
+void
+clar_test_init(int argc, char **argv)
 {
 	clar_print_init(
 		(int)_clar_callback_count,
@@ -369,13 +369,23 @@ clar_test(int argc, char **argv)
 
 	if (argc > 1)
 		clar_parse_args(argc, argv);
+}
 
+int
+clar_test_run()
+{
 	if (!_clar.suites_ran) {
 		size_t i;
 		for (i = 0; i < _clar_suite_count; ++i)
 			clar_run_suite(&_clar_suites[i], NULL);
 	}
 
+	return _clar.total_errors;
+}
+
+void
+clar_test_shutdown()
+{
 	clar_print_shutdown(
 		_clar.tests_ran,
 		(int)_clar_suite_count,
@@ -383,7 +393,18 @@ clar_test(int argc, char **argv)
 	);
 
 	clar_unsandbox();
-	return _clar.total_errors;
+}
+
+int
+clar_test(int argc, char **argv)
+{
+	int errors;
+
+	clar_test_init(argc, argv);
+	errors = clar_test_run();
+	clar_test_shutdown();
+
+	return errors;
 }
 
 void clar__fail(
diff --git a/tests/clar.h b/tests/clar.h
index 87ff6d9..8126305 100644
--- a/tests/clar.h
+++ b/tests/clar.h
@@ -9,8 +9,14 @@
 
 #include <stdlib.h>
 
+void clar_test_init(int argc, char *argv[]);
+int clar_test_run(void);
+void clar_test_shutdown(void);
+
 int clar_test(int argc, char *argv[]);
 
+const char *clar_sandbox_path(void);
+
 void cl_set_cleanup(void (*cleanup)(void *), void *opaque);
 void cl_fs_cleanup(void);
 
diff --git a/tests/clar/sandbox.h b/tests/clar/sandbox.h
index ee75641..a44e291 100644
--- a/tests/clar/sandbox.h
+++ b/tests/clar/sandbox.h
@@ -127,3 +127,8 @@ static int clar_sandbox(void)
 	return 0;
 }
 
+const char *clar_sandbox_path(void)
+{
+	return _clar_path;
+}
+
diff --git a/tests/main.c b/tests/main.c
index 6b49893..ffbbcbf 100644
--- a/tests/main.c
+++ b/tests/main.c
@@ -6,12 +6,21 @@ int __cdecl main(int argc, char *argv[])
 int main(int argc, char *argv[])
 #endif
 {
+	const char *sandbox_path;
 	int res;
 
+	clar_test_init(argc, argv);
+
 	git_threads_init();
 
+	sandbox_path = clar_sandbox_path();
+	git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, GIT_CONFIG_LEVEL_GLOBAL, sandbox_path);
+	git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, GIT_CONFIG_LEVEL_XDG, sandbox_path);
+
 	/* Run the test suite */
-	res = clar_test(argc, argv);
+	res = clar_test_run();
+
+	clar_test_shutdown();
 
 	giterr_clear();
 	git_threads_shutdown();