mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-21 04:25:53 +03:00
106 lines
4.3 KiB
Go
106 lines
4.3 KiB
Go
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"))
|
|
},
|
|
})
|