summaryrefslogtreecommitdiffstats
path: root/tests/libgit2/commit
diff options
context:
space:
mode:
Diffstat (limited to 'tests/libgit2/commit')
-rw-r--r--tests/libgit2/commit/commit.c4
-rw-r--r--tests/libgit2/commit/create.c112
-rw-r--r--tests/libgit2/commit/signature.c9
-rw-r--r--tests/libgit2/commit/write.c2
4 files changed, 123 insertions, 4 deletions
diff --git a/tests/libgit2/commit/commit.c b/tests/libgit2/commit/commit.c
index 140f87d..923740f 100644
--- a/tests/libgit2/commit/commit.c
+++ b/tests/libgit2/commit/commit.c
@@ -36,11 +36,11 @@ void test_commit_commit__create_unexisting_update_ref(void)
cl_git_fail(git_reference_lookup(&ref, _repo, "refs/heads/foo/bar"));
cl_git_pass(git_commit_create(&oid, _repo, "refs/heads/foo/bar", s, s,
- NULL, "some msg", tree, 1, (const git_commit **) &commit));
+ NULL, "some msg", tree, 1, &commit));
/* fail because the parent isn't the tip of the branch anymore */
cl_git_fail(git_commit_create(&oid, _repo, "refs/heads/foo/bar", s, s,
- NULL, "some msg", tree, 1, (const git_commit **) &commit));
+ NULL, "some msg", tree, 1, &commit));
cl_git_pass(git_reference_lookup(&ref, _repo, "refs/heads/foo/bar"));
cl_assert_equal_oid(&oid, git_reference_target(ref));
diff --git a/tests/libgit2/commit/create.c b/tests/libgit2/commit/create.c
new file mode 100644
index 0000000..9f627dc
--- /dev/null
+++ b/tests/libgit2/commit/create.c
@@ -0,0 +1,112 @@
+#include "clar_libgit2.h"
+#include "repository.h"
+
+/* Fixture setup */
+static git_repository *g_repo;
+static git_signature *g_author, *g_committer;
+
+void test_commit_create__initialize(void)
+{
+ g_repo = cl_git_sandbox_init("testrepo2");
+ cl_git_pass(git_signature_new(&g_author, "Edward Thomson", "ethomson@edwardthomson.com", 123456789, 60));
+ cl_git_pass(git_signature_new(&g_committer, "libgit2 user", "nobody@noreply.libgit2.org", 987654321, 90));
+}
+
+void test_commit_create__cleanup(void)
+{
+ git_signature_free(g_committer);
+ git_signature_free(g_author);
+ cl_git_sandbox_cleanup();
+}
+
+
+void test_commit_create__from_stage_simple(void)
+{
+ git_commit_create_options opts = GIT_COMMIT_CREATE_OPTIONS_INIT;
+ git_index *index;
+ git_oid commit_id;
+ git_tree *tree;
+
+ opts.author = g_author;
+ opts.committer = g_committer;
+
+ cl_git_rewritefile("testrepo2/newfile.txt", "This is a new file.\n");
+ cl_git_rewritefile("testrepo2/newfile2.txt", "This is a new file.\n");
+ cl_git_rewritefile("testrepo2/README", "hello, world.\n");
+ cl_git_rewritefile("testrepo2/new.txt", "hi there.\n");
+
+ cl_git_pass(git_repository_index(&index, g_repo));
+ cl_git_pass(git_index_add_bypath(index, "newfile2.txt"));
+ cl_git_pass(git_index_add_bypath(index, "README"));
+ cl_git_pass(git_index_write(index));
+
+ cl_git_pass(git_commit_create_from_stage(&commit_id, g_repo, "This is the message.", &opts));
+
+ cl_git_pass(git_repository_head_tree(&tree, g_repo));
+
+ cl_assert_equal_oidstr("241b5b04e847bc38dd7b4b9f49f21e55da40f3a6", &commit_id);
+ cl_assert_equal_oidstr("b27210772d0633870b4f486d04ed3eb5ebbef5e7", git_tree_id(tree));
+
+ git_index_free(index);
+ git_tree_free(tree);
+}
+
+void test_commit_create__from_stage_nochanges(void)
+{
+ git_commit_create_options opts = GIT_COMMIT_CREATE_OPTIONS_INIT;
+ git_oid commit_id;
+ git_tree *tree;
+
+ opts.author = g_author;
+ opts.committer = g_committer;
+
+ cl_git_fail_with(GIT_EUNCHANGED, git_commit_create_from_stage(&commit_id, g_repo, "Message goes here.", &opts));
+
+ opts.allow_empty_commit = 1;
+
+ cl_git_pass(git_commit_create_from_stage(&commit_id, g_repo, "Message goes here.", &opts));
+
+ cl_git_pass(git_repository_head_tree(&tree, g_repo));
+
+ cl_assert_equal_oidstr("f776dc4c7fd8164b7127dc8e4f9b44421cb01b56", &commit_id);
+ cl_assert_equal_oidstr("c4dc1555e4d4fa0e0c9c3fc46734c7c35b3ce90b", git_tree_id(tree));
+
+ git_tree_free(tree);
+}
+
+void test_commit_create__from_stage_newrepo(void)
+{
+ git_commit_create_options opts = GIT_COMMIT_CREATE_OPTIONS_INIT;
+ git_repository *newrepo;
+ git_index *index;
+ git_commit *commit;
+ git_tree *tree;
+ git_oid commit_id;
+
+ opts.author = g_author;
+ opts.committer = g_committer;
+
+ git_repository_init(&newrepo, "newrepo", false);
+ cl_git_pass(git_repository_index(&index, newrepo));
+
+ cl_git_rewritefile("newrepo/hello.txt", "hello, world.\n");
+ cl_git_rewritefile("newrepo/hi.txt", "hi there.\n");
+ cl_git_rewritefile("newrepo/foo.txt", "bar.\n");
+
+ cl_git_pass(git_index_add_bypath(index, "hello.txt"));
+ cl_git_pass(git_index_add_bypath(index, "foo.txt"));
+ cl_git_pass(git_index_write(index));
+
+ cl_git_pass(git_commit_create_from_stage(&commit_id, newrepo, "Initial commit.", &opts));
+ cl_git_pass(git_repository_head_commit(&commit, newrepo));
+ cl_git_pass(git_repository_head_tree(&tree, newrepo));
+
+ cl_assert_equal_oid(&commit_id, git_commit_id(commit));
+ cl_assert_equal_oidstr("b2fa96a4f191c76eb172437281c66aa29609dcaa", git_commit_tree_id(commit));
+
+ git_tree_free(tree);
+ git_commit_free(commit);
+ git_index_free(index);
+ git_repository_free(newrepo);
+ cl_fixture_cleanup("newrepo");
+}
diff --git a/tests/libgit2/commit/signature.c b/tests/libgit2/commit/signature.c
index a915514..fddd507 100644
--- a/tests/libgit2/commit/signature.c
+++ b/tests/libgit2/commit/signature.c
@@ -36,10 +36,17 @@ void test_commit_signature__leading_and_trailing_spaces_are_trimmed(void)
assert_name_and_email("nulltoken", "emeric.fermas@gmail.com", " \t nulltoken \n", " \n emeric.fermas@gmail.com \n");
}
+void test_commit_signature__leading_and_trailing_dots_are_supported(void)
+{
+ assert_name_and_email(".nulltoken", ".emeric.fermas@gmail.com", ".nulltoken", ".emeric.fermas@gmail.com");
+ assert_name_and_email("nulltoken.", "emeric.fermas@gmail.com.", "nulltoken.", "emeric.fermas@gmail.com.");
+ assert_name_and_email(".nulltoken.", ".emeric.fermas@gmail.com.", ".nulltoken.", ".emeric.fermas@gmail.com.");
+}
+
void test_commit_signature__leading_and_trailing_crud_is_trimmed(void)
{
assert_name_and_email("nulltoken", "emeric.fermas@gmail.com", "\"nulltoken\"", "\"emeric.fermas@gmail.com\"");
- assert_name_and_email("nulltoken w", "emeric.fermas@gmail.com", "nulltoken w.", "emeric.fermas@gmail.com");
+ assert_name_and_email("nulltoken w", "emeric.fermas@gmail.com", "nulltoken w;", "emeric.fermas@gmail.com");
assert_name_and_email("nulltoken \xe2\x98\xba", "emeric.fermas@gmail.com", "nulltoken \xe2\x98\xba", "emeric.fermas@gmail.com");
}
diff --git a/tests/libgit2/commit/write.c b/tests/libgit2/commit/write.c
index 890f738..d38b54d 100644
--- a/tests/libgit2/commit/write.c
+++ b/tests/libgit2/commit/write.c
@@ -118,7 +118,7 @@ void test_commit_write__into_buf(void)
cl_git_pass(git_commit_lookup(&parent, g_repo, &parent_id));
cl_git_pass(git_commit_create_buffer(&commit, g_repo, author, committer,
- NULL, root_commit_message, tree, 1, (const git_commit **) &parent));
+ NULL, root_commit_message, tree, 1, &parent));
cl_assert_equal_s(commit.ptr,
"tree 1810dff58d8a660512d4832e740f692884338ccd\n\