diff options
author | Vicent Martà <tanoku@gmail.com> | 2012-05-05 14:22:06 -0700 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2012-05-05 14:22:06 -0700 |
commit | 4ef14af93517b3842bc0dfa24147cf10dd029582 (patch) | |
tree | 88f90fa8c9d903f072a2b1c647c51a9899e520c7 /tests-clar/attr/flags.c | |
parent | f95e8cc07c85034f737872455fce2895186be19d (diff) | |
parent | 282283acc65bab9de231a2b3dc489eb171d5f1cf (diff) | |
download | libgit2-development-merge.tar.gz |
Merge pull request #664 from arrbee/attrs-from-indexdevelopment-merge
Support git attrs from index (and bare repo)
Diffstat (limited to 'tests-clar/attr/flags.c')
-rw-r--r-- | tests-clar/attr/flags.c | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/tests-clar/attr/flags.c b/tests-clar/attr/flags.c new file mode 100644 index 000000000..5081de8b2 --- /dev/null +++ b/tests-clar/attr/flags.c @@ -0,0 +1,108 @@ +#include "clar_libgit2.h" +#include "git2/attr.h" + +void test_attr_flags__cleanup(void) +{ + cl_git_sandbox_cleanup(); +} + +void test_attr_flags__bare(void) +{ + git_repository *repo = cl_git_sandbox_init("testrepo.git"); + const char *value; + + cl_assert(git_repository_is_bare(repo)); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM, "README.md", "diff", &value)); + cl_assert(GIT_ATTR_UNSPECIFIED(value)); +} + +void test_attr_flags__index_vs_workdir(void) +{ + git_repository *repo = cl_git_sandbox_init("attr_index"); + const char *value; + + cl_assert(!git_repository_is_bare(repo)); + + /* wd then index */ + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_FILE_THEN_INDEX, + "README.md", "bar", &value)); + cl_assert(GIT_ATTR_FALSE(value)); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_FILE_THEN_INDEX, + "README.md", "blargh", &value)); + cl_assert_equal_s(value, "goop"); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_FILE_THEN_INDEX, + "README.txt", "foo", &value)); + cl_assert(GIT_ATTR_FALSE(value)); + + /* index then wd */ + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_INDEX_THEN_FILE, + "README.md", "bar", &value)); + cl_assert(GIT_ATTR_TRUE(value)); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_INDEX_THEN_FILE, + "README.md", "blargh", &value)); + cl_assert_equal_s(value, "garble"); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_INDEX_THEN_FILE, + "README.txt", "foo", &value)); + cl_assert(GIT_ATTR_TRUE(value)); +} + +void test_attr_flags__subdir(void) +{ + git_repository *repo = cl_git_sandbox_init("attr_index"); + const char *value; + + /* wd then index */ + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_FILE_THEN_INDEX, + "sub/sub/README.md", "bar", &value)); + cl_assert_equal_s(value, "1234"); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_FILE_THEN_INDEX, + "sub/sub/README.txt", "another", &value)); + cl_assert_equal_s(value, "one"); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_FILE_THEN_INDEX, + "sub/sub/README.txt", "again", &value)); + cl_assert(GIT_ATTR_TRUE(value)); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_FILE_THEN_INDEX, + "sub/sub/README.txt", "beep", &value)); + cl_assert_equal_s(value, "10"); + + /* index then wd */ + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_INDEX_THEN_FILE, + "sub/sub/README.md", "bar", &value)); + cl_assert_equal_s(value, "1337"); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_INDEX_THEN_FILE, + "sub/sub/README.txt", "another", &value)); + cl_assert_equal_s(value, "one"); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_INDEX_THEN_FILE, + "sub/sub/README.txt", "again", &value)); + cl_assert(GIT_ATTR_TRUE(value)); + + cl_git_pass(git_attr_get( + repo, GIT_ATTR_CHECK_NO_SYSTEM | GIT_ATTR_CHECK_INDEX_THEN_FILE, + "sub/sub/README.txt", "beep", &value)); + cl_assert_equal_s(value, "5"); +} + |