summaryrefslogtreecommitdiff
path: root/tests-clay
diff options
context:
space:
mode:
authorRussell Belfer <arrbee@arrbee.com>2012-01-20 11:13:17 -0800
committerRussell Belfer <arrbee@arrbee.com>2012-01-20 11:13:17 -0800
commit63ab73bec0a54300a48355ee28dd24ebd39e2cd2 (patch)
treeb341b54a3b37d30b799a886f15729f537993e8c7 /tests-clay
parent9269ccce143578deec4d4e6e7755068f130abe96 (diff)
parent83bfbdf593a76c591bb9cbd40cec6fca36c81a9c (diff)
downloadlibgit2-63ab73bec0a54300a48355ee28dd24ebd39e2cd2.tar.gz
Merge branch 'fix-subdir-attr-paths' into development
This resolves issue #535 and issue #533.
Diffstat (limited to 'tests-clay')
-rw-r--r--tests-clay/attr/file.c20
-rw-r--r--tests-clay/attr/lookup.c25
-rw-r--r--tests-clay/attr/repo.c47
-rw-r--r--tests-clay/status/ignore.c49
4 files changed, 102 insertions, 39 deletions
diff --git a/tests-clay/attr/file.c b/tests-clay/attr/file.c
index acca0c653..652ee273c 100644
--- a/tests-clay/attr/file.c
+++ b/tests-clay/attr/file.c
@@ -6,11 +6,12 @@
void test_attr_file__simple_read(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
git_attr_assignment *assign;
git_attr_rule *rule;
- cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr0"), &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr0"), file));
cl_assert_strequal(cl_fixture("attr/attr0"), file->path);
cl_assert(file->rules.length == 1);
@@ -32,11 +33,12 @@ void test_attr_file__simple_read(void)
void test_attr_file__match_variants(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
git_attr_rule *rule;
git_attr_assignment *assign;
- cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr1"), &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr1"), file));
cl_assert_strequal(cl_fixture("attr/attr1"), file->path);
cl_assert(file->rules.length == 10);
@@ -119,11 +121,12 @@ static void check_one_assign(
void test_attr_file__assign_variants(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
git_attr_rule *rule;
git_attr_assignment *assign;
- cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr2"), &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr2"), file));
cl_assert_strequal(cl_fixture("attr/attr2"), file->path);
cl_assert(file->rules.length == 11);
@@ -184,11 +187,12 @@ void test_attr_file__assign_variants(void)
void test_attr_file__check_attr_examples(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
git_attr_rule *rule;
git_attr_assignment *assign;
- cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr3"), &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr3"), file));
cl_assert_strequal(cl_fixture("attr/attr3"), file->path);
cl_assert(file->rules.length == 3);
diff --git a/tests-clay/attr/lookup.c b/tests-clay/attr/lookup.c
index fcade5225..b251562ba 100644
--- a/tests-clay/attr/lookup.c
+++ b/tests-clay/attr/lookup.c
@@ -3,11 +3,12 @@
void test_attr_lookup__simple(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
git_attr_path path;
const char *value = NULL;
- cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr0"), &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr0"), file));
cl_assert_strequal(cl_fixture("attr/attr0"), file->path);
cl_assert(file->rules.length == 1);
@@ -60,7 +61,7 @@ static void run_test_cases(git_attr_file *file, test_case *cases)
void test_attr_lookup__match_variants(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
git_attr_path path;
test_case cases[] = {
/* pat0 -> simple match */
@@ -132,7 +133,8 @@ void test_attr_lookup__match_variants(void)
{ NULL, NULL, NULL, 0, 0 }
};
- cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr1"), &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr1"), file));
cl_assert_strequal(cl_fixture("attr/attr1"), file->path);
cl_assert(file->rules.length == 10);
@@ -146,7 +148,7 @@ void test_attr_lookup__match_variants(void)
void test_attr_lookup__assign_variants(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
test_case cases[] = {
/* pat0 -> simple assign */
{ "pat0", "simple", GIT_ATTR_TRUE, 0, 0 },
@@ -190,7 +192,8 @@ void test_attr_lookup__assign_variants(void)
{ NULL, NULL, NULL, 0, 0 }
};
- cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr2"), &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr2"), file));
cl_assert(file->rules.length == 11);
run_test_cases(file, cases);
@@ -200,7 +203,7 @@ void test_attr_lookup__assign_variants(void)
void test_attr_lookup__check_attr_examples(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
test_case cases[] = {
{ "foo.java", "diff", "java", 1, 0 },
{ "foo.java", "crlf", GIT_ATTR_FALSE, 0, 0 },
@@ -224,7 +227,8 @@ void test_attr_lookup__check_attr_examples(void)
{ NULL, NULL, NULL, 0, 0 }
};
- cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr3"), &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_file(NULL, cl_fixture("attr/attr3"), file));
cl_assert(file->rules.length == 3);
run_test_cases(file, cases);
@@ -234,7 +238,7 @@ void test_attr_lookup__check_attr_examples(void)
void test_attr_lookup__from_buffer(void)
{
- git_attr_file *file = NULL;
+ git_attr_file *file;
test_case cases[] = {
{ "abc", "foo", GIT_ATTR_TRUE, 0, 0 },
{ "abc", "bar", GIT_ATTR_TRUE, 0, 0 },
@@ -248,7 +252,8 @@ void test_attr_lookup__from_buffer(void)
{ NULL, NULL, NULL, 0, 0 }
};
- cl_git_pass(git_attr_file__from_buffer(NULL, "a* foo\nabc bar\n* baz", &file));
+ cl_git_pass(git_attr_file__new(&file));
+ cl_git_pass(git_attr_file__from_buffer(NULL, "a* foo\nabc bar\n* baz", file));
cl_assert(file->rules.length == 3);
run_test_cases(file, cases);
diff --git a/tests-clay/attr/repo.c b/tests-clay/attr/repo.c
index 3e9b9de1b..13f28ca84 100644
--- a/tests-clay/attr/repo.c
+++ b/tests-clay/attr/repo.c
@@ -45,19 +45,24 @@ void test_attr_repo__get_one(void)
{ "root_test3", "rootattr", NULL },
{ "root_test3", "multiattr", "3" },
{ "root_test3", "multi2", NULL },
- { "subdir/subdir_test1", "repoattr", GIT_ATTR_TRUE },
- { "subdir/subdir_test1", "rootattr", GIT_ATTR_TRUE },
- { "subdir/subdir_test1", "missingattr", NULL },
- { "subdir/subdir_test1", "subattr", "yes" },
- { "subdir/subdir_test1", "negattr", GIT_ATTR_FALSE },
- { "subdir/subdir_test1", "another", NULL },
- { "subdir/subdir_test2.txt", "repoattr", GIT_ATTR_TRUE },
- { "subdir/subdir_test2.txt", "rootattr", GIT_ATTR_TRUE },
- { "subdir/subdir_test2.txt", "missingattr", NULL },
- { "subdir/subdir_test2.txt", "subattr", "yes" },
- { "subdir/subdir_test2.txt", "negattr", GIT_ATTR_FALSE },
- { "subdir/subdir_test2.txt", "another", "one" },
+ { "sub/subdir_test1", "repoattr", GIT_ATTR_TRUE },
+ { "sub/subdir_test1", "rootattr", GIT_ATTR_TRUE },
+ { "sub/subdir_test1", "missingattr", NULL },
+ { "sub/subdir_test1", "subattr", "yes" },
+ { "sub/subdir_test1", "negattr", GIT_ATTR_FALSE },
+ { "sub/subdir_test1", "another", NULL },
+ { "sub/subdir_test2.txt", "repoattr", GIT_ATTR_TRUE },
+ { "sub/subdir_test2.txt", "rootattr", GIT_ATTR_TRUE },
+ { "sub/subdir_test2.txt", "missingattr", NULL },
+ { "sub/subdir_test2.txt", "subattr", "yes" },
+ { "sub/subdir_test2.txt", "negattr", GIT_ATTR_FALSE },
+ { "sub/subdir_test2.txt", "another", "zero" },
+ { "sub/subdir_test2.txt", "reposub", GIT_ATTR_TRUE },
+ { "sub/sub/subdir.txt", "another", "one" },
+ { "sub/sub/subdir.txt", "reposubsub", GIT_ATTR_TRUE },
+ { "sub/sub/subdir.txt", "reposub", NULL },
{ "does-not-exist", "foo", "yes" },
+ { "sub/deep/file", "deepdeep", GIT_ATTR_TRUE },
{ NULL, NULL, NULL }
}, *scan;
@@ -105,7 +110,7 @@ void test_attr_repo__get_many(void)
cl_assert(values[2] == NULL);
cl_assert(values[3] == NULL);
- cl_git_pass(git_attr_get_many(g_repo, "subdir/subdir_test1", 4, names, values));
+ cl_git_pass(git_attr_get_many(g_repo, "sub/subdir_test1", 4, names, values));
cl_assert(values[0] == GIT_ATTR_TRUE);
cl_assert(values[1] == GIT_ATTR_TRUE);
@@ -136,33 +141,33 @@ void test_attr_repo__foreach(void)
cl_assert(count == 2);
count = 0;
- cl_git_pass(git_attr_foreach(g_repo, "subdir/subdir_test1",
+ cl_git_pass(git_attr_foreach(g_repo, "sub/subdir_test1",
&count_attrs, &count));
cl_assert(count == 4); /* repoattr, rootattr, subattr, negattr */
count = 0;
- cl_git_pass(git_attr_foreach(g_repo, "subdir/subdir_test2.txt",
+ cl_git_pass(git_attr_foreach(g_repo, "sub/subdir_test2.txt",
&count_attrs, &count));
- cl_assert(count == 5); /* repoattr, rootattr, subattr, negattr, another */
+ cl_assert(count == 6); /* repoattr, rootattr, subattr, reposub, negattr, another */
}
void test_attr_repo__manpage_example(void)
{
const char *value;
- cl_git_pass(git_attr_get(g_repo, "subdir/abc", "foo", &value));
+ cl_git_pass(git_attr_get(g_repo, "sub/abc", "foo", &value));
cl_assert(value == GIT_ATTR_TRUE);
- cl_git_pass(git_attr_get(g_repo, "subdir/abc", "bar", &value));
+ cl_git_pass(git_attr_get(g_repo, "sub/abc", "bar", &value));
cl_assert(value == NULL);
- cl_git_pass(git_attr_get(g_repo, "subdir/abc", "baz", &value));
+ cl_git_pass(git_attr_get(g_repo, "sub/abc", "baz", &value));
cl_assert(value == GIT_ATTR_FALSE);
- cl_git_pass(git_attr_get(g_repo, "subdir/abc", "merge", &value));
+ cl_git_pass(git_attr_get(g_repo, "sub/abc", "merge", &value));
cl_assert_strequal("filfre", value);
- cl_git_pass(git_attr_get(g_repo, "subdir/abc", "frotz", &value));
+ cl_git_pass(git_attr_get(g_repo, "sub/abc", "frotz", &value));
cl_assert(value == NULL);
}
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);
+ }
+}