mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-31 14:24:25 +03:00
Provide conflict resolution dialogs for non-textual conflicts
This commit is contained in:
105
pkg/integration/tests/conflicts/resolve_non_textual_conflicts.go
Normal file
105
pkg/integration/tests/conflicts/resolve_non_textual_conflicts.go
Normal file
@ -0,0 +1,105 @@
|
||||
package conflicts
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
var ResolveNonTextualConflicts = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Resolve non-textual merge conflicts (e.g. one side modified, the other side deleted)",
|
||||
ExtraCmdArgs: []string{},
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.RunShellCommand(`echo test1 > both-deleted1.txt`)
|
||||
shell.RunShellCommand(`echo test2 > both-deleted2.txt`)
|
||||
shell.RunShellCommand(`git checkout -b conflict && git add both-deleted1.txt both-deleted2.txt`)
|
||||
shell.RunShellCommand(`echo haha1 > deleted-them1.txt && git add deleted-them1.txt`)
|
||||
shell.RunShellCommand(`echo haha2 > deleted-them2.txt && git add deleted-them2.txt`)
|
||||
shell.RunShellCommand(`echo haha1 > deleted-us1.txt && git add deleted-us1.txt`)
|
||||
shell.RunShellCommand(`echo haha2 > deleted-us2.txt && git add deleted-us2.txt`)
|
||||
shell.RunShellCommand(`git commit -m one`)
|
||||
|
||||
// stuff on other branch
|
||||
shell.RunShellCommand(`git branch conflict_second`)
|
||||
shell.RunShellCommand(`git mv both-deleted1.txt added-them-changed-us1.txt`)
|
||||
shell.RunShellCommand(`git mv both-deleted2.txt added-them-changed-us2.txt`)
|
||||
shell.RunShellCommand(`git rm deleted-them1.txt deleted-them2.txt`)
|
||||
shell.RunShellCommand(`echo modded1 > deleted-us1.txt && git add deleted-us1.txt`)
|
||||
shell.RunShellCommand(`echo modded2 > deleted-us2.txt && git add deleted-us2.txt`)
|
||||
shell.RunShellCommand(`git commit -m "two"`)
|
||||
|
||||
// stuff on our branch
|
||||
shell.RunShellCommand(`git checkout conflict_second`)
|
||||
shell.RunShellCommand(`git mv both-deleted1.txt changed-them-added-us1.txt`)
|
||||
shell.RunShellCommand(`git mv both-deleted2.txt changed-them-added-us2.txt`)
|
||||
shell.RunShellCommand(`echo modded1 > deleted-them1.txt && git add deleted-them1.txt`)
|
||||
shell.RunShellCommand(`echo modded2 > deleted-them2.txt && git add deleted-them2.txt`)
|
||||
shell.RunShellCommand(`git rm deleted-us1.txt deleted-us2.txt`)
|
||||
shell.RunShellCommand(`git commit -m "three"`)
|
||||
shell.RunShellCommand(`git reset --hard conflict_second`)
|
||||
shell.RunCommandExpectError([]string{"git", "merge", "conflict"})
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
resolve := func(filename string, menuChoice string) {
|
||||
t.Views().Files().
|
||||
NavigateToLine(Contains(filename)).
|
||||
Tap(func() {
|
||||
t.Views().Main().Content(Contains("Conflict:"))
|
||||
}).
|
||||
Press(keys.Universal.GoInto).
|
||||
Tap(func() {
|
||||
t.ExpectPopup().Menu().Title(Equals("Merge conflicts")).
|
||||
Select(Contains(menuChoice)).
|
||||
Confirm()
|
||||
})
|
||||
}
|
||||
|
||||
t.Views().Files().
|
||||
IsFocused().
|
||||
Lines(
|
||||
Equals("▼ /").IsSelected(),
|
||||
Equals(" UA added-them-changed-us1.txt"),
|
||||
Equals(" UA added-them-changed-us2.txt"),
|
||||
Equals(" DD both-deleted1.txt"),
|
||||
Equals(" DD both-deleted2.txt"),
|
||||
Equals(" AU changed-them-added-us1.txt"),
|
||||
Equals(" AU changed-them-added-us2.txt"),
|
||||
Equals(" UD deleted-them1.txt"),
|
||||
Equals(" UD deleted-them2.txt"),
|
||||
Equals(" DU deleted-us1.txt"),
|
||||
Equals(" DU deleted-us2.txt"),
|
||||
).
|
||||
Tap(func() {
|
||||
resolve("added-them-changed-us1.txt", "Delete file")
|
||||
resolve("added-them-changed-us2.txt", "Keep file")
|
||||
resolve("both-deleted1.txt", "Delete file")
|
||||
resolve("both-deleted2.txt", "Delete file")
|
||||
resolve("changed-them-added-us1.txt", "Delete file")
|
||||
resolve("changed-them-added-us2.txt", "Keep file")
|
||||
resolve("deleted-them1.txt", "Delete file")
|
||||
resolve("deleted-them2.txt", "Keep file")
|
||||
resolve("deleted-us1.txt", "Delete file")
|
||||
resolve("deleted-us2.txt", "Keep file")
|
||||
}).
|
||||
Lines(
|
||||
Equals("▼ /"),
|
||||
Equals(" A added-them-changed-us2.txt"),
|
||||
Equals(" D changed-them-added-us1.txt"),
|
||||
Equals(" D deleted-them1.txt"),
|
||||
Equals(" A deleted-us2.txt"),
|
||||
)
|
||||
|
||||
t.FileSystem().
|
||||
PathNotPresent("added-them-changed-us1.txt").
|
||||
FileContent("added-them-changed-us2.txt", Equals("test2\n")).
|
||||
PathNotPresent("both-deleted1.txt").
|
||||
PathNotPresent("both-deleted2.txt").
|
||||
PathNotPresent("changed-them-added-us1.txt").
|
||||
FileContent("changed-them-added-us2.txt", Equals("test2\n")).
|
||||
PathNotPresent("deleted-them1.txt").
|
||||
FileContent("deleted-them2.txt", Equals("modded2\n")).
|
||||
PathNotPresent("deleted-us1.txt").
|
||||
FileContent("deleted-us2.txt", Equals("modded2\n"))
|
||||
},
|
||||
})
|
Reference in New Issue
Block a user