summaryrefslogtreecommitdiffstats
path: root/t/t7419-submodule-set-branch.sh
blob: a5d1bc5c54ae095f79bf9b3ee420ba004bb18a88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/sh
#
# Copyright (c) 2019 Denton Liu
#

test_description='Test submodules set-branch subcommand

This test verifies that the set-branch subcommand of git-submodule is working
as expected.
'

TEST_PASSES_SANITIZE_LEAK=true
TEST_NO_CREATE_REPO=1

GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME

. ./test-lib.sh

test_expect_success 'setup' '
	git config --global protocol.file.allow always
'

test_expect_success 'submodule config cache setup' '
	mkdir submodule &&
	(cd submodule &&
		git init &&
		echo a >a &&
		git add . &&
		git commit -ma &&
		git checkout -b topic &&
		echo b >a &&
		git add . &&
		git commit -mb &&
		git checkout main
	) &&
	mkdir super &&
	(cd super &&
		git init &&
		git submodule add ../submodule &&
		git submodule add --name thename ../submodule thepath &&
		git commit -m "add submodules"
	)
'

test_expect_success 'ensure submodule branch is unset' '
	(cd super &&
		test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch
	)
'

test_expect_success 'test submodule set-branch --branch' '
	(cd super &&
		git submodule set-branch --branch topic submodule &&
		test_cmp_config topic -f .gitmodules submodule.submodule.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		b
		EOF
		git -C submodule show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch --default' '
	(cd super &&
		git submodule set-branch --default submodule &&
		test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		a
		EOF
		git -C submodule show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch -b' '
	(cd super &&
		git submodule set-branch -b topic submodule &&
		test_cmp_config topic -f .gitmodules submodule.submodule.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		b
		EOF
		git -C submodule show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch -d' '
	(cd super &&
		git submodule set-branch -d submodule &&
		test_cmp_config "" -f .gitmodules --default "" submodule.submodule.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		a
		EOF
		git -C submodule show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch --branch with named submodule' '
	(cd super &&
		git submodule set-branch --branch topic thepath &&
		test_cmp_config topic -f .gitmodules submodule.thename.branch &&
		test_cmp_config "" -f .gitmodules --default "" submodule.thepath.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		b
		EOF
		git -C thepath show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_expect_success 'test submodule set-branch --default with named submodule' '
	(cd super &&
		git submodule set-branch --default thepath &&
		test_cmp_config "" -f .gitmodules --default "" submodule.thename.branch &&
		git submodule update --remote &&
		cat <<-\EOF >expect &&
		a
		EOF
		git -C thepath show -s --pretty=%s >actual &&
		test_cmp expect actual
	)
'

test_done