diff options
author | Edward Thomson <ethomson@microsoft.com> | 2015-06-08 11:55:04 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@microsoft.com> | 2015-06-22 12:00:15 -0400 |
commit | 71686ddca660a3544c5aa6d4a34d1d06c031f4f9 (patch) | |
tree | f22f79c9d3f2613c7838e1e6032ec99f57f0abd0 | |
parent | e774fa6c0b810624f42d392957c28febb94c4ac7 (diff) | |
download | libgit2-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.h | 15 |
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 |