Git fork
at reftables-rust 96 lines 2.1 kB view raw
1#!/bin/sh 2 3test_description='git am handling submodules' 4 5. ./test-lib.sh 6. "$TEST_DIRECTORY"/lib-submodule-update.sh 7 8am () { 9 git format-patch --stdout --ignore-submodules=dirty "..$1" >patch && 10 may_only_be_test_must_fail "$2" && 11 $2 git am patch 12} 13 14test_submodule_switch_func "am" 15 16am_3way () { 17 git format-patch --stdout --ignore-submodules=dirty "..$1" >patch && 18 may_only_be_test_must_fail "$2" && 19 $2 git am --3way patch 20} 21 22test_submodule_switch_func "am_3way" 23 24test_expect_success 'setup diff.submodule' ' 25 test_commit one && 26 INITIAL=$(git rev-parse HEAD) && 27 28 git init submodule && 29 ( 30 cd submodule && 31 test_commit two && 32 git rev-parse HEAD >../initial-submodule 33 ) && 34 git submodule add ./submodule && 35 git commit -m first && 36 37 ( 38 cd submodule && 39 test_commit three && 40 git rev-parse HEAD >../first-submodule 41 ) && 42 git add submodule && 43 git commit -m second && 44 SECOND=$(git rev-parse HEAD) && 45 46 ( 47 cd submodule && 48 git mv two.t four.t && 49 git commit -m "second submodule" && 50 git rev-parse HEAD >../second-submodule 51 ) && 52 test_commit four && 53 git add submodule && 54 git commit --amend --no-edit && 55 THIRD=$(git rev-parse HEAD) && 56 git submodule update --init 57' 58 59run_test() { 60 START_COMMIT=$1 && 61 EXPECT=$2 && 62 # Abort any merges in progress: the previous 63 # test may have failed, and we should clean up. 64 test_might_fail git am --abort && 65 git reset --hard $START_COMMIT && 66 rm -f *.patch && 67 git format-patch -1 && 68 git reset --hard $START_COMMIT^ && 69 git submodule update && 70 git am *.patch && 71 git submodule update && 72 git -C submodule rev-parse HEAD >actual && 73 test_cmp $EXPECT actual 74} 75 76test_expect_success 'diff.submodule unset' ' 77 test_unconfig diff.submodule && 78 run_test $SECOND first-submodule 79' 80 81test_expect_success 'diff.submodule unset with extra file' ' 82 test_unconfig diff.submodule && 83 run_test $THIRD second-submodule 84' 85 86test_expect_success 'diff.submodule=log' ' 87 test_config diff.submodule log && 88 run_test $SECOND first-submodule 89' 90 91test_expect_success 'diff.submodule=log with extra file' ' 92 test_config diff.submodule log && 93 run_test $THIRD second-submodule 94' 95 96test_done