summaryrefslogtreecommitdiff
path: root/tests-clay/status/ignore.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests-clay/status/ignore.c')
-rw-r--r--tests-clay/status/ignore.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests-clay/status/ignore.c b/tests-clay/status/ignore.c
new file mode 100644
index 000000000..f14e10c8e
--- /dev/null
+++ b/tests-clay/status/ignore.c
@@ -0,0 +1,49 @@
+#include "clay_libgit2.h"
+#include "fileops.h"
+#include "git2/attr.h"
+
+static git_repository *g_repo = NULL;
+
+void test_status_ignore__initialize(void)
+{
+ /* Before each test, instantiate the attr repo from the fixtures and
+ * rename the .gitted to .git so it is a repo with a working dir. Also
+ * rename gitignore to .gitignore.
+ */
+ cl_fixture_sandbox("attr");
+ cl_git_pass(p_rename("attr/.gitted", "attr/.git"));
+ cl_git_pass(p_rename("attr/gitignore", "attr/.gitignore"));
+ cl_git_pass(git_repository_open(&g_repo, "attr/.git"));
+}
+
+void test_status_ignore__cleanup(void)
+{
+ git_repository_free(g_repo);
+ g_repo = NULL;
+ cl_fixture_cleanup("attr");
+}
+
+void test_status_ignore__0(void)
+{
+ struct {
+ const char *path;
+ int expected;
+ } test_cases[] = {
+ { "file", 0 },
+ { "ign", 1 },
+ { "sub", 1 },
+ { "sub/file", 0 },
+ { "sub/ign", 1 },
+ { "sub/sub", 1 },
+ { "sub/sub/file", 0 },
+ { "sub/sub/ign", 1 },
+ { "sub/sub/sub", 1 },
+ { NULL, 0 }
+ }, *one_test;
+
+ for (one_test = test_cases; one_test->path != NULL; one_test++) {
+ int ignored;
+ cl_git_pass(git_status_should_ignore(g_repo, one_test->path, &ignored));
+ cl_assert_(ignored == one_test->expected, one_test->path);
+ }
+}