]> git.ipfire.org Git - thirdparty/git.git/blame - t/t4255-am-submodule.sh
hashmap: use *_entry APIs for iteration
[thirdparty/git.git] / t / t4255-am-submodule.sh
CommitLineData
23e2f388
JL
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" | git am -
10}
11
12test_submodule_switch "am"
13
14am_3way () {
15 git format-patch --stdout --ignore-submodules=dirty "..$1" | git am --3way -
16}
17
18KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
19test_submodule_switch "am_3way"
20
fe7611c4
DK
21test_expect_success 'setup diff.submodule' '
22 test_commit one &&
23 INITIAL=$(git rev-parse HEAD) &&
24
25 git init submodule &&
26 (
27 cd submodule &&
28 test_commit two &&
29 git rev-parse HEAD >../initial-submodule
30 ) &&
31 git submodule add ./submodule &&
32 git commit -m first &&
33
34 (
35 cd submodule &&
36 test_commit three &&
37 git rev-parse HEAD >../first-submodule
38 ) &&
39 git add submodule &&
40 git commit -m second &&
41 SECOND=$(git rev-parse HEAD) &&
42
43 (
44 cd submodule &&
45 git mv two.t four.t &&
46 git commit -m "second submodule" &&
47 git rev-parse HEAD >../second-submodule
48 ) &&
49 test_commit four &&
50 git add submodule &&
51 git commit --amend --no-edit &&
52 THIRD=$(git rev-parse HEAD) &&
53 git submodule update --init
54'
55
56run_test() {
57 START_COMMIT=$1 &&
58 EXPECT=$2 &&
59 # Abort any merges in progress: the previous
60 # test may have failed, and we should clean up.
61 test_might_fail git am --abort &&
62 git reset --hard $START_COMMIT &&
63 rm -f *.patch &&
64 git format-patch -1 &&
65 git reset --hard $START_COMMIT^ &&
66 git submodule update &&
67 git am *.patch &&
68 git submodule update &&
69 git -C submodule rev-parse HEAD >actual &&
70 test_cmp $EXPECT actual
71}
72
73test_expect_success 'diff.submodule unset' '
74 test_unconfig diff.submodule &&
75 run_test $SECOND first-submodule
76'
77
78test_expect_success 'diff.submodule unset with extra file' '
79 test_unconfig diff.submodule &&
80 run_test $THIRD second-submodule
81'
82
339de508 83test_expect_success 'diff.submodule=log' '
fe7611c4
DK
84 test_config diff.submodule log &&
85 run_test $SECOND first-submodule
86'
87
339de508 88test_expect_success 'diff.submodule=log with extra file' '
fe7611c4
DK
89 test_config diff.submodule log &&
90 run_test $THIRD second-submodule
91'
92
23e2f388 93test_done