summaryrefslogtreecommitdiff
path: root/tests-clar/refs/revparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests-clar/refs/revparse.c')
-rw-r--r--tests-clar/refs/revparse.c68
1 files changed, 56 insertions, 12 deletions
diff --git a/tests-clar/refs/revparse.c b/tests-clar/refs/revparse.c
index 74472b175..69d92745c 100644
--- a/tests-clar/refs/revparse.c
+++ b/tests-clar/refs/revparse.c
@@ -9,13 +9,19 @@ static git_repository *g_repo;
static git_object *g_obj;
/* Helpers */
-static void test_object_inrepo(const char *spec, const char *expected_oid, git_repository *repo)
+static void test_object_and_ref_inrepo(
+ const char *spec,
+ const char *expected_oid,
+ const char *expected_refname,
+ git_repository *repo,
+ bool assert_reference_retrieval)
{
char objstr[64] = {0};
git_object *obj = NULL;
+ git_reference *ref = NULL;
int error;
- error = git_revparse_single(&obj, repo, spec);
+ error = git_revparse_ext(&obj, &ref, repo, spec);
if (expected_oid != NULL) {
cl_assert_equal_i(0, error);
@@ -24,7 +30,20 @@ static void test_object_inrepo(const char *spec, const char *expected_oid, git_r
} else
cl_assert_equal_i(GIT_ENOTFOUND, error);
+ if (assert_reference_retrieval) {
+ if (expected_refname == NULL)
+ cl_assert(NULL == ref);
+ else
+ cl_assert_equal_s(expected_refname, git_reference_name(ref));
+ }
+
git_object_free(obj);
+ git_reference_free(ref);
+}
+
+static void test_object_inrepo(const char *spec, const char *expected_oid, git_repository *repo)
+{
+ test_object_and_ref_inrepo(spec, expected_oid, NULL, repo, false);
}
static void test_id_inrepo(
@@ -63,6 +82,11 @@ static void test_object(const char *spec, const char *expected_oid)
test_object_inrepo(spec, expected_oid, g_repo);
}
+static void test_object_and_ref(const char *spec, const char *expected_oid, const char *expected_refname)
+{
+ test_object_and_ref_inrepo(spec, expected_oid, expected_refname, g_repo, true);
+}
+
static void test_rangelike(const char *rangelike,
const char *expected_left,
const char *expected_right,
@@ -557,12 +581,12 @@ void test_refs_revparse__issue_994(void)
/**
* $ git rev-parse blah-7-gc47800c
* c47800c7266a2be04c571c04d5a6614691ea99bd
- *
+ *
* $ git rev-parse HEAD~3
* 4a202b346bb0fb0db7eff3cffeb3c70babbd2045
- *
+ *
* $ git branch blah-7-gc47800c HEAD~3
- *
+ *
* $ git rev-parse blah-7-gc47800c
* 4a202b346bb0fb0db7eff3cffeb3c70babbd2045
*/
@@ -592,15 +616,15 @@ void test_refs_revparse__try_to_retrieve_branch_before_described_tag(void)
/**
* $ git rev-parse a65fedf39aefe402d3bb6e24df4d4f5fe4547750
* a65fedf39aefe402d3bb6e24df4d4f5fe4547750
- *
+ *
* $ git rev-parse HEAD~3
* 4a202b346bb0fb0db7eff3cffeb3c70babbd2045
- *
+ *
* $ git branch a65fedf39aefe402d3bb6e24df4d4f5fe4547750 HEAD~3
- *
+ *
* $ git rev-parse a65fedf39aefe402d3bb6e24df4d4f5fe4547750
* a65fedf39aefe402d3bb6e24df4d4f5fe4547750
- *
+ *
* $ git rev-parse heads/a65fedf39aefe402d3bb6e24df4d4f5fe4547750
* 4a202b346bb0fb0db7eff3cffeb3c70babbd2045
*/
@@ -631,12 +655,12 @@ void test_refs_revparse__try_to_retrieve_sha_before_branch(void)
/**
* $ git rev-parse c47800
* c47800c7266a2be04c571c04d5a6614691ea99bd
- *
+ *
* $ git rev-parse HEAD~3
* 4a202b346bb0fb0db7eff3cffeb3c70babbd2045
- *
+ *
* $ git branch c47800 HEAD~3
- *
+ *
* $ git rev-parse c47800
* 4a202b346bb0fb0db7eff3cffeb3c70babbd2045
*/
@@ -695,3 +719,23 @@ void test_refs_revparse__parses_range_operator(void)
GIT_REVPARSE_RANGE | GIT_REVPARSE_MERGE_BASE);
}
+void test_refs_revparse__ext_retrieves_both_the_reference_and_its_target(void)
+{
+ test_object_and_ref(
+ "master@{upstream}",
+ "be3563ae3f795b2b4353bcce3a527ad0a4f7f644",
+ "refs/remotes/test/master");
+
+ test_object_and_ref(
+ "@{-1}",
+ "a4a7dce85cf63874e984719f4fdd239f5145052f",
+ "refs/heads/br2");
+}
+
+void test_refs_revparse__ext_can_expand_short_reference_names(void)
+{
+ test_object_and_ref(
+ "master",
+ "a65fedf39aefe402d3bb6e24df4d4f5fe4547750",
+ "refs/heads/master");
+}