summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@microsoft.com>2015-06-08 11:55:04 -0400
committerEdward Thomson <ethomson@microsoft.com>2015-06-22 12:00:15 -0400
commit71686ddca660a3544c5aa6d4a34d1d06c031f4f9 (patch)
treef22f79c9d3f2613c7838e1e6032ec99f57f0abd0
parente774fa6c0b810624f42d392957c28febb94c4ac7 (diff)
downloadlibgit2-71686ddca660a3544c5aa6d4a34d1d06c031f4f9.tar.gz
clar: support hierarchical test resource data
Support hierarchical test resource data, such that you can have `tests/resources/foo/bar` and move the `bar` directory in as a fixture. Calling `cl_fixture_sandbox` on a path that is not directly beneath the test resources directory succeeds, placing that directory into the test fixture. (For example, `cl_fixture_sandbox("foo/bar")` will sandbox the `foo/bar` directory as `bar`). Add support for cleaning up directories created this way, by only cleaning up the basename (in this example, `bar`) from the fixture directory.
-rw-r--r--tests/clar/fixtures.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/clar/fixtures.h b/tests/clar/fixtures.h
index 264cd7f4f..f7b8d96af 100644
--- a/tests/clar/fixtures.h
+++ b/tests/clar/fixtures.h
@@ -20,6 +20,19 @@ fixture_path(const char *base, const char *fixture_name)
return _path;
}
+static const char *
+fixture_basename(const char *fixture_name)
+{
+ const char *p;
+
+ for (p = fixture_name; *p; p++) {
+ if (p[0] == '/' && p[1] && p[1] != '/')
+ fixture_name = p+1;
+ }
+
+ return fixture_name;
+}
+
#ifdef CLAR_FIXTURE_PATH
const char *cl_fixture(const char *fixture_name)
{
@@ -33,6 +46,6 @@ void cl_fixture_sandbox(const char *fixture_name)
void cl_fixture_cleanup(const char *fixture_name)
{
- fs_rm(fixture_path(_clar_path, fixture_name));
+ fs_rm(fixture_path(_clar_path, fixture_basename(fixture_name)));
}
#endif