If an invalid value is passed to "update-ref --stdin" as <oldvalue> or
<newvalue>, include the command and the name of the reference at the
beginning of the error message.  Update the tests accordingly.

Signed-off-by: Michael Haggerty <mhag...@alum.mit.edu>
---
 builtin/update-ref.c  | 24 +++++++++++++-----------
 t/t1400-update-ref.sh |  8 ++++----
 2 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/builtin/update-ref.c b/builtin/update-ref.c
index 0dc2061..13a884a 100644
--- a/builtin/update-ref.c
+++ b/builtin/update-ref.c
@@ -35,20 +35,22 @@ static struct ref_update *update_alloc(void)
        return update;
 }
 
-static void update_store_new_sha1(struct ref_update *update,
+static void update_store_new_sha1(const char *command,
+                                 struct ref_update *update,
                                  const char *newvalue)
 {
        if (*newvalue && get_sha1(newvalue, update->new_sha1))
-               die("invalid new value for ref %s: %s",
-                   update->ref_name, newvalue);
+               die("%s %s: invalid new value: %s",
+                   command, update->ref_name, newvalue);
 }
 
-static void update_store_old_sha1(struct ref_update *update,
+static void update_store_old_sha1(const char *command,
+                                 struct ref_update *update,
                                  const char *oldvalue)
 {
        if (*oldvalue && get_sha1(oldvalue, update->old_sha1))
-               die("invalid old value for ref %s: %s",
-                   update->ref_name, oldvalue);
+               die("%s %s: invalid old value: %s",
+                   command, update->ref_name, oldvalue);
 
        /* We have an old value if non-empty, or if empty without -z */
        update->have_old = *oldvalue || line_termination;
@@ -165,12 +167,12 @@ static const char *parse_cmd_update(struct strbuf *input, 
const char *next)
                die("update line missing <ref>");
 
        if (!parse_next_arg(input, &next, &newvalue))
-               update_store_new_sha1(update, newvalue.buf);
+               update_store_new_sha1("update", update, newvalue.buf);
        else
                die("update %s missing <newvalue>", update->ref_name);
 
        if (!parse_next_arg(input, &next, &oldvalue)) {
-               update_store_old_sha1(update, oldvalue.buf);
+               update_store_old_sha1("update", update, oldvalue.buf);
                if (*next != line_termination)
                        die("update %s has extra input: %s", update->ref_name, 
next);
        } else if (!line_termination)
@@ -191,7 +193,7 @@ static const char *parse_cmd_create(struct strbuf *input, 
const char *next)
                die("create line missing <ref>");
 
        if (!parse_next_arg(input, &next, &newvalue))
-               update_store_new_sha1(update, newvalue.buf);
+               update_store_new_sha1("create", update, newvalue.buf);
        else
                die("create %s missing <newvalue>", update->ref_name);
 
@@ -216,7 +218,7 @@ static const char *parse_cmd_delete(struct strbuf *input, 
const char *next)
                die("delete line missing <ref>");
 
        if (!parse_next_arg(input, &next, &oldvalue)) {
-               update_store_old_sha1(update, oldvalue.buf);
+               update_store_old_sha1("delete", update, oldvalue.buf);
                if (update->have_old && is_null_sha1(update->old_sha1))
                        die("delete %s given zero old value", update->ref_name);
        } else if (!line_termination)
@@ -240,7 +242,7 @@ static const char *parse_cmd_verify(struct strbuf *input, 
const char *next)
                die("verify line missing <ref>");
 
        if (!parse_next_arg(input, &next, &value)) {
-               update_store_old_sha1(update, value.buf);
+               update_store_old_sha1("verify", update, value.buf);
                hashcpy(update->new_sha1, update->old_sha1);
        } else if (!line_termination)
                die("verify %s missing [<oldvalue>] NUL", update->ref_name);
diff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh
index 00862bc..f6c6e96 100755
--- a/t/t1400-update-ref.sh
+++ b/t/t1400-update-ref.sh
@@ -518,14 +518,14 @@ test_expect_success 'stdin update ref fails with wrong 
old value' '
 test_expect_success 'stdin update ref fails with bad old value' '
        echo "update $c $m does-not-exist" >stdin &&
        test_must_fail git update-ref --stdin <stdin 2>err &&
-       grep "fatal: invalid old value for ref $c: does-not-exist" err &&
+       grep "fatal: update $c: invalid old value: does-not-exist" err &&
        test_must_fail git rev-parse --verify -q $c
 '
 
 test_expect_success 'stdin create ref fails with bad new value' '
        echo "create $c does-not-exist" >stdin &&
        test_must_fail git update-ref --stdin <stdin 2>err &&
-       grep "fatal: invalid new value for ref $c: does-not-exist" err &&
+       grep "fatal: create $c: invalid new value: does-not-exist" err &&
        test_must_fail git rev-parse --verify -q $c
 '
 
@@ -840,14 +840,14 @@ test_expect_success 'stdin -z update ref fails with wrong 
old value' '
 test_expect_success 'stdin -z update ref fails with bad old value' '
        printf $F "update $c" "$m" "does-not-exist" >stdin &&
        test_must_fail git update-ref -z --stdin <stdin 2>err &&
-       grep "fatal: invalid old value for ref $c: does-not-exist" err &&
+       grep "fatal: update $c: invalid old value: does-not-exist" err &&
        test_must_fail git rev-parse --verify -q $c
 '
 
 test_expect_success 'stdin -z create ref fails with bad new value' '
        printf $F "create $c" "does-not-exist" >stdin &&
        test_must_fail git update-ref -z --stdin <stdin 2>err &&
-       grep "fatal: invalid new value for ref $c: does-not-exist" err &&
+       grep "fatal: create $c: invalid new value: does-not-exist" err &&
        test_must_fail git rev-parse --verify -q $c
 '
 
-- 
1.9.0

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to