summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Marti <vicent@github.com>2014-03-28 19:03:37 +0100
committerVicent Marti <vicent@github.com>2014-03-28 19:03:37 +0100
commit71ba28e3a55511eaac3b2924d8de147bdce60683 (patch)
treeeb82c734fe7ef2de9b506293d644e9f4bb69d06b
parent04d4d674fe0ccd6cc29f30359b8306c5b3feae3d (diff)
parente0d61c7b1caa011ab6a7777535823fe18c50e13c (diff)
downloadlibgit2-71ba28e3a55511eaac3b2924d8de147bdce60683.tar.gz
Merge pull request #2214 from ethomson/sandbox_config
RFC: Sandbox HOME during test execution
-rw-r--r--tests/clar.c27
-rw-r--r--tests/clar.h6
-rw-r--r--tests/clar/sandbox.h5
-rw-r--r--tests/main.c11
4 files changed, 45 insertions, 4 deletions
diff --git a/tests/clar.c b/tests/clar.c
index 535424130..8e538f56a 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 87ff6d967..81263051d 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 ee7564148..a44e29116 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 6b498939d..ffbbcbf48 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();