t: allow skipping expected object ID in `ref-store update-ref`
We require the caller to pass both the old and new expected object ID to our `test-tool ref-store update-ref` helper. When trying to update a symbolic reference though it's impossible to specify the expected object ID, which means that the test would instead have to force-update the reference. This is currently impossible though. Update the helper to optionally skip verification of the old object ID in case the test passes in an empty old object ID as input. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt committed
Nov 2, 2023 at 09:46 UTC
9ddd5b883b0221d80392a914eb621ea680476e75
1 file changed
+7
-4
t/helper/test-ref-store.c
+7
-4
@@ -298,16 +298,19 @@ static int cmd_update_ref(struct ref_store *refs, const char **argv)
298
const char *new_sha1_buf = notnull(*argv++, "new-sha1");
299
const char *old_sha1_buf = notnull(*argv++, "old-sha1");
300
unsigned int flags = arg_flags(*argv++, "flags", transaction_flags);
301
- struct object_id old_oid;
301
+ struct object_id old_oid, *old_oid_ptr = NULL;
302
struct object_id new_oid;
303
304
- if (get_oid_hex(old_sha1_buf, &old_oid))
305
- die("cannot parse %s as %s", old_sha1_buf, the_hash_algo->name);
304
+ if (*old_sha1_buf) {
305
+ if (get_oid_hex(old_sha1_buf, &old_oid))
306
+ die("cannot parse %s as %s", old_sha1_buf, the_hash_algo->name);
307
+ old_oid_ptr = &old_oid;
308
+ }
309
if (get_oid_hex(new_sha1_buf, &new_oid))
310
die("cannot parse %s as %s", new_sha1_buf, the_hash_algo->name);
311
312
return refs_update_ref(refs, msg, refname,
310
- &new_oid, &old_oid,
313
+ &new_oid, old_oid_ptr,
314
flags, UPDATE_REFS_DIE_ON_ERR);
315
}
316