Skip to content

Commit 2db0a02

Browse files
brandondongstefanhaller
authored andcommitted
Add integration test
1 parent 1fa9ea7 commit 2db0a02

File tree

4 files changed

+130
-3
lines changed

4 files changed

+130
-3
lines changed

pkg/integration/components/shell.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,8 +360,8 @@ func (self *Shell) CloneIntoRemote(name string) *Shell {
360360
}
361361

362362
func (self *Shell) CloneIntoSubmodule(submoduleName string, submodulePath string) *Shell {
363-
self.Clone("other_repo")
364-
self.RunCommand([]string{"git", "submodule", "add", "--name", submoduleName, "../other_repo", submodulePath})
363+
self.Clone(submoduleName)
364+
self.RunCommand([]string{"git", "submodule", "add", "--name", submoduleName, "../" + submoduleName, submodulePath})
365365

366366
return self
367367
}

pkg/integration/tests/submodule/remove.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ var Remove = NewIntegrationTest(NewIntegrationTestArgs{
4444
t.Views().Main().Content(
4545
Contains("-[submodule \"my_submodule_name\"]").
4646
Contains("- path = my_submodule_path").
47-
Contains("- url = ../other_repo"),
47+
Contains("- url = ../my_submodule_name"),
4848
)
4949

5050
t.FileSystem().PathNotPresent(gitDirSubmodulePath)
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
package submodule
2+
3+
import (
4+
"github.com/jesseduffield/lazygit/pkg/config"
5+
. "github.com/jesseduffield/lazygit/pkg/integration/components"
6+
)
7+
8+
var ResetFolder = NewIntegrationTest(NewIntegrationTestArgs{
9+
Description: "Reset submodule changes located in a nested folder.",
10+
ExtraCmdArgs: []string{},
11+
Skip: false,
12+
SetupConfig: func(cfg *config.AppConfig) {},
13+
SetupRepo: func(shell *Shell) {
14+
shell.EmptyCommit("first commit")
15+
shell.CreateDir("dir")
16+
shell.CloneIntoSubmodule("submodule1", "dir/submodule1")
17+
shell.CloneIntoSubmodule("submodule2", "dir/submodule2")
18+
shell.GitAddAll()
19+
shell.Commit("add submodules")
20+
21+
shell.CreateFile("dir/submodule1/file", "")
22+
shell.CreateFile("dir/submodule2/file", "")
23+
shell.CreateFile("dir/file", "")
24+
},
25+
Run: func(t *TestDriver, keys config.KeybindingConfig) {
26+
t.Views().Files().Focus().
27+
Lines(
28+
Equals("▼ dir").IsSelected(),
29+
Equals(" ?? file"),
30+
Equals(" M submodule1 (submodule)"),
31+
Equals(" M submodule2 (submodule)"),
32+
).
33+
// Verify we cannot reset the entire folder (has nested file and submodule changes).
34+
Press(keys.Universal.Remove).
35+
Tap(func() {
36+
t.ExpectToast(Contains("Disabled: Range select not supported for submodules"))
37+
}).
38+
// Verify we cannot reset submodule + file or submodule + submodule via range select.
39+
SelectNextItem().
40+
Press(keys.Universal.ToggleRangeSelect).
41+
SelectNextItem().
42+
Lines(
43+
Equals("▼ dir"),
44+
Equals(" ?? file").IsSelected(),
45+
Equals(" M submodule1 (submodule)").IsSelected(),
46+
Equals(" M submodule2 (submodule)"),
47+
).
48+
Press(keys.Universal.Remove).
49+
Tap(func() {
50+
t.ExpectToast(Contains("Disabled: Range select not supported for submodules"))
51+
}).
52+
Press(keys.Universal.ToggleRangeSelect).
53+
Press(keys.Universal.ToggleRangeSelect).
54+
SelectNextItem().
55+
Lines(
56+
Equals("▼ dir"),
57+
Equals(" ?? file"),
58+
Equals(" M submodule1 (submodule)").IsSelected(),
59+
Equals(" M submodule2 (submodule)").IsSelected(),
60+
).
61+
Press(keys.Universal.Remove).
62+
Tap(func() {
63+
t.ExpectToast(Contains("Disabled: Range select not supported for submodules"))
64+
}).
65+
// Reset the file change.
66+
Press(keys.Universal.ToggleRangeSelect).
67+
NavigateToLine(Contains("file")).
68+
Press(keys.Universal.Remove).
69+
Tap(func() {
70+
t.ExpectPopup().Menu().
71+
Title(Equals("Discard changes")).
72+
Select(Contains("Discard all changes")).
73+
Confirm()
74+
}).
75+
NavigateToLine(Contains("▼ dir")).
76+
Lines(
77+
Equals("▼ dir").IsSelected(),
78+
Equals(" M submodule1 (submodule)"),
79+
Equals(" M submodule2 (submodule)"),
80+
).
81+
// Verify we still cannot reset the entire folder (has two submodule changes).
82+
Press(keys.Universal.Remove).
83+
Tap(func() {
84+
t.ExpectToast(Contains("Disabled: Range select not supported for submodules"))
85+
}).
86+
// Reset one of the submodule changes.
87+
SelectNextItem().
88+
Press(keys.Universal.Remove).
89+
Tap(func() {
90+
t.ExpectPopup().Menu().
91+
Title(Equals("dir/submodule1")).
92+
Select(Contains("Stash uncommitted submodule changes and update")).
93+
Confirm()
94+
}).
95+
NavigateToLine(Contains("▼ dir")).
96+
Lines(
97+
Equals("▼ dir").IsSelected(),
98+
Equals(" M submodule2 (submodule)"),
99+
).
100+
// Now we can reset the folder (equivalent to resetting just the nested submodule change).
101+
// Range selecting both the folder and submodule change is allowed.
102+
Press(keys.Universal.ToggleRangeSelect).
103+
SelectNextItem().
104+
Lines(
105+
Equals("▼ dir").IsSelected(),
106+
Equals(" M submodule2 (submodule)").IsSelected(),
107+
).
108+
Press(keys.Universal.Remove).
109+
Tap(func() {
110+
t.ExpectPopup().Menu().
111+
Title(Equals("dir/submodule2")).
112+
Select(Contains("Stash uncommitted submodule changes and update")).
113+
Cancel()
114+
}).
115+
// Or just selecting the folder itself.
116+
NavigateToLine(Contains("▼ dir")).
117+
Press(keys.Universal.Remove).
118+
Tap(func() {
119+
t.ExpectPopup().Menu().
120+
Title(Equals("dir/submodule2")).
121+
Select(Contains("Stash uncommitted submodule changes and update")).
122+
Confirm()
123+
}).
124+
IsEmpty()
125+
},
126+
})

pkg/integration/tests/test_list.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,7 @@ var tests = []*components.IntegrationTest{
345345
submodule.Remove,
346346
submodule.RemoveNested,
347347
submodule.Reset,
348+
submodule.ResetFolder,
348349
sync.FetchPrune,
349350
sync.FetchWhenSortedByDate,
350351
sync.ForcePush,

0 commit comments

Comments
 (0)