Commit 6b02b215169d493abe35d8036c3cf687521e08a5

nulltoken 2011-03-03T19:43:47

Add test renameref::can_not_rename_a_reference_with_an_invalid_name()

diff --git a/tests/t10-refs.c b/tests/t10-refs.c
index 0d81e39..5a259d6 100644
--- a/tests/t10-refs.c
+++ b/tests/t10-refs.c
@@ -415,6 +415,28 @@ BEGIN_TEST("renameref", can_not_rename_a_reference_with_the_name_of_an_existing_
 	git_repository_free(repo);
 END_TEST
 
+BEGIN_TEST("renameref", can_not_rename_a_reference_with_an_invalid_name)
+	git_reference *looked_up_ref;
+	git_repository *repo;
+
+	must_pass(git_repository_open(&repo, REPOSITORY_FOLDER));
+
+	/* An existing oid reference... */
+	must_pass(git_repository_lookup_ref(&looked_up_ref, repo, packed_test_head_name));
+
+	/* Can not be renamed with an invalid name. */
+	must_fail(git_reference_rename(looked_up_ref, "Hello! I'm a very invalid name."));
+
+	/* Can not be renamed outside of the refs hierarchy. */
+	must_fail(git_reference_rename(looked_up_ref, "i-will-sudo-you"));
+
+	/* Failure to rename it hasn't corrupted its state */
+	must_pass(git_repository_lookup_ref(&looked_up_ref, repo, packed_test_head_name));
+	must_be_true(!strcmp(looked_up_ref->name, packed_test_head_name));
+
+	git_repository_free(repo);
+END_TEST
+
 static int ensure_refname_normalized(int is_oid_ref, const char *input_refname, const char *expected_refname)
 {
 	int error = GIT_SUCCESS;
@@ -617,5 +639,6 @@ git_testsuite *libgit2_suite_refs(void)
 	ADD_TEST(suite, "packrefs", create_packfile);
 	ADD_TEST(suite, "renameref", renaming_a_packed_reference_makes_it_loose);
 	ADD_TEST(suite, "renameref", can_not_rename_a_reference_with_the_name_of_an_existing_reference);
+	ADD_TEST(suite, "renameref", can_not_rename_a_reference_with_an_invalid_name);
 	return suite;
 }