]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t3650: add more regression tests for failure conditions
authorKristoffer Haugsbakk <code@khaugsbakk.name>
Mon, 5 Jan 2026 19:53:22 +0000 (20:53 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 5 Jan 2026 22:30:16 +0000 (07:30 +0900)
There isn’t much test coverage for basic failure conditions. Let’s add
a few more since these are simple to write and remove if they become
obsolete.

Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t3650-replay-basics.sh

index 8d82dad71486ee35eca3ce713a0063e6c2ef6c23..307101eeb911f76a688fa6ef406f7fc40c71a33a 100755 (executable)
@@ -43,6 +43,13 @@ test_expect_success 'setup' '
        test_commit L &&
        test_commit M &&
 
+       git switch --detach topic4 &&
+       test_commit N &&
+       test_commit O &&
+       git switch -c topic-with-merge topic4 &&
+       test_merge P O --no-ff &&
+       git switch main &&
+
        git switch -c conflict B &&
        test_commit C.conflict C.t conflict
 '
@@ -65,6 +72,39 @@ test_expect_success '--onto with invalid commit-ish' '
        test_cmp expect actual
 '
 
+test_expect_success 'option --onto or --advance is mandatory' '
+       echo "error: option --onto or --advance is mandatory" >expect &&
+       test_might_fail git replay -h >>expect &&
+       test_must_fail git replay topic1..topic2 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'no base or negative ref gives no-replaying down to root error' '
+       echo "fatal: replaying down from root commit is not supported yet!" >expect &&
+       test_must_fail git replay --onto=topic1 topic2 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'options --advance and --contained cannot be used together' '
+       printf "fatal: options ${SQ}--advance${SQ} " >expect &&
+       printf "and ${SQ}--contained${SQ} cannot be used together\n" >>expect &&
+       test_must_fail git replay --advance=main --contained \
+               topic1..topic2 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'cannot advance target ... ordering would be ill-defined' '
+       echo "fatal: cannot advance target with multiple sources because ordering would be ill-defined" >expect &&
+       test_must_fail git replay --advance=main main topic1 topic2 2>actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'replaying merge commits is not supported yet' '
+       echo "fatal: replaying merge commits is not supported yet!" >expect &&
+       test_must_fail git replay --advance=main main..topic-with-merge 2>actual &&
+       test_cmp expect actual
+'
+
 test_expect_success 'using replay to rebase two branches, one on top of other' '
        git replay --ref-action=print --onto main topic1..topic2 >result &&