Cleanup: make integration test assertions for files panel more specific

Assert the entire lines using Equals instead of Contains. This makes the tests a
bit easier to read, and it makes it much easier to decide how they need to be
changed when we change the layout (like we do in the last commit of this
branch).

It is true that this requires changing all these tests for any future UI
changes, but I think this is a good price to pay; those adaptions are trivial
and can be done without thinking.
This commit is contained in:
Stefan Haller
2025-03-20 11:58:50 +01:00
parent 030c2e5aef
commit 0b5504aa98
38 changed files with 358 additions and 358 deletions
@@ -72,8 +72,8 @@ var ResetToUpstream = NewIntegrationTest(NewIntegrationTestArgs{
Contains("hard commit"),
)
t.Views().Files().Lines(
Contains("file-1").Contains("A"),
Contains("file-2").Contains("A"),
Equals("A file-1"),
Equals("A file-2"),
)
// hard reset
+8 -8
View File
@@ -21,19 +21,19 @@ var Commit = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("?? myfile").IsSelected(),
Contains("?? myfile2"),
Equals("?? myfile").IsSelected(),
Equals("?? myfile2"),
).
PressPrimaryAction(). // stage file
Lines(
Contains("A myfile").IsSelected(),
Contains("?? myfile2"),
Equals("A myfile").IsSelected(),
Equals("?? myfile2"),
).
SelectNextItem().
PressPrimaryAction(). // stage other file
Lines(
Contains("A myfile"),
Contains("A myfile2").IsSelected(),
Equals("A myfile"),
Equals("A myfile2").IsSelected(),
).
Press(keys.Files.CommitChanges)
@@ -54,8 +54,8 @@ var Commit = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("A myfile"),
Contains("A myfile2"),
Equals("A myfile"),
Equals("A myfile2"),
)
},
})
@@ -43,13 +43,13 @@ var DiscardOldFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("dir1").IsSelected(),
Contains("subd1"),
Contains("subfile0"),
Contains("d1_file0"),
Contains("dir2"),
Contains("d2_file1"),
Contains("d2_file2"),
Equals("▼ dir1").IsSelected(),
Equals(" ▼ subd1"),
Equals(" A subfile0"),
Equals(" A d1_file0"),
Equals("▼ dir2"),
Equals(" A d2_file1"),
Equals(" A d2_file2"),
).
NavigateToLine(Contains("d1_file0")).
Press(keys.Universal.Remove)
@@ -62,11 +62,11 @@ var DiscardOldFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("dir1/subd1"),
Contains("subfile0"),
Contains("dir2"),
Contains("d2_file1").IsSelected(),
Contains("d2_file2"),
Equals("▼ dir1/subd1"),
Equals(" A subfile0"),
Equals("▼ dir2"),
Equals(" A d2_file1").IsSelected(),
Equals(" A d2_file2"),
).
PressEscape()
@@ -84,11 +84,11 @@ var DiscardOldFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("dir2").IsSelected(),
Contains("d2_file1"),
Contains("d2_file2"),
Contains("d2_file3"),
Contains("d2_file4"),
Equals("▼ dir2").IsSelected(),
Equals(" M d2_file1"),
Equals(" D d2_file2"),
Equals(" A d2_file3"),
Equals(" A d2_file4"),
).
NavigateToLine(Contains("d2_file1")).
Press(keys.Universal.ToggleRangeSelect).
@@ -122,11 +122,11 @@ var DiscardOldFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("dir1").IsSelected(),
Contains("subd1"),
Contains("file2ToRemove"),
Contains("fileToRemove"),
Contains("multiLineFile"),
Equals("▼ dir1").IsSelected(),
Equals(" ▼ subd1"),
Equals(" A file2ToRemove"),
Equals(" A fileToRemove"),
Equals(" A multiLineFile"),
).
NavigateToLine(Contains("multiLineFile")).
PressEnter()
@@ -142,11 +142,11 @@ var DiscardOldFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("dir1"),
Contains("subd1"),
Contains("file2ToRemove"),
Contains("fileToRemove"),
Contains("multiLineFile").IsSelected(),
Equals("▼ dir1"),
Equals(" ▼ subd1"),
Equals(" A file2ToRemove"),
Equals(" A fileToRemove"),
Equals(" ◐ multiLineFile").IsSelected(),
).
NavigateToLine(Contains("dir1")).
Press(keys.Universal.ToggleRangeSelect).
+5 -5
View File
@@ -18,8 +18,8 @@ var Filter = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("UU").Contains("file1").IsSelected(),
Contains("UU").Contains("file2"),
Equals("UU file1").IsSelected(),
Equals("UU file2"),
).
Press(keys.Files.OpenStatusFilter).
Tap(func() {
@@ -29,10 +29,10 @@ var Filter = NewIntegrationTest(NewIntegrationTestArgs{
Confirm()
}).
Lines(
Contains("UU").Contains("file1").IsSelected(),
Contains("UU").Contains("file2"),
Equals("UU file1").IsSelected(),
Equals("UU file2"),
// now we see the non-merge conflict file
Contains("A ").Contains("file3"),
Equals("A file3"),
)
},
})
@@ -18,8 +18,8 @@ var ResolveMultipleFiles = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("UU").Contains("file1").IsSelected(),
Contains("UU").Contains("file2"),
Equals("UU file1").IsSelected(),
Equals("UU file2"),
).
PressEnter()
@@ -35,7 +35,7 @@ var ResolveMultipleFiles = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("UU").Contains("file2").IsSelected(),
Equals("UU file2").IsSelected(),
).
PressEnter()
@@ -20,8 +20,8 @@ var ResolveNoAutoStage = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("UU").Contains("file1").IsSelected(),
Contains("UU").Contains("file2"),
Equals("UU file1").IsSelected(),
Equals("UU file2"),
).
PressEnter()
@@ -38,13 +38,13 @@ var ResolveNoAutoStage = NewIntegrationTest(NewIntegrationTestArgs{
IsFocused().
// Resolving the conflict didn't auto-stage it
Lines(
Contains("UU").Contains("file1").IsSelected(),
Contains("UU").Contains("file2"),
Equals("UU file1").IsSelected(),
Equals("UU file2"),
).
// So do that manually
PressPrimaryAction().
Lines(
Contains("UU").Contains("file2").IsSelected(),
Equals("UU file2").IsSelected(),
).
// Trying to stage a file that still has conflicts is not allowed:
PressPrimaryAction().
@@ -70,12 +70,12 @@ var ResolveNoAutoStage = NewIntegrationTest(NewIntegrationTestArgs{
IsFocused().
// Again, resolving the conflict didn't auto-stage it
Lines(
Contains("UU").Contains("file2").IsSelected(),
Equals("UU file2").IsSelected(),
).
// Doing that manually now works:
PressPrimaryAction().
Lines(
Contains("A").Contains("file3").IsSelected(),
Equals("A file3").IsSelected(),
)
},
})
+10 -10
View File
@@ -21,26 +21,26 @@ var CollapseExpand = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("dir").IsSelected(),
Contains("??").Contains("file-one"),
Contains("dir2"),
Contains("??").Contains("file-two"),
Equals("▼ dir").IsSelected(),
Equals(" ?? file-one"),
Equals("▼ dir2"),
Equals(" ?? file-two"),
)
t.Views().Files().
Press(keys.Files.CollapseAll).
Lines(
Contains("dir"),
Contains("dir2"),
Equals("▶ dir"),
Equals("▶ dir2"),
)
t.Views().Files().
Press(keys.Files.ExpandAll).
Lines(
Contains("dir").IsSelected(),
Contains("??").Contains("file-one"),
Contains("dir2"),
Contains("??").Contains("file-two"),
Equals("▼ dir").IsSelected(),
Equals(" ?? file-one"),
Equals("▼ dir2"),
Equals(" ?? file-two"),
)
},
})
@@ -29,33 +29,33 @@ var DiscardRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("▼ dir1").IsSelected(),
Contains(" ??").Contains("file-1a"),
Contains(" ??").Contains("file-1b"),
Contains("▼ dir2"),
Contains(" ??").Contains("file-2a"),
Contains(" M").Contains("file-2b"),
Contains("▼ dir3"),
Contains(" ??").Contains("file-3a"),
Contains(" M").Contains("file-3b"),
Contains("??").Contains("file-a"),
Contains("??").Contains("file-b"),
Equals("▼ dir1").IsSelected(),
Equals(" ?? file-1a"),
Equals(" ?? file-1b"),
Equals("▼ dir2"),
Equals(" ?? file-2a"),
Equals(" M file-2b"),
Equals("▼ dir3"),
Equals(" ?? file-3a"),
Equals(" M file-3b"),
Equals("?? file-a"),
Equals("?? file-b"),
).
NavigateToLine(Contains("file-1b")).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("file-2a")).
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-1a"),
Contains(" ??").Contains("file-1b").IsSelected(),
Contains("▼ dir2").IsSelected(),
Contains(" ??").Contains("file-2a").IsSelected(),
Contains(" M").Contains("file-2b"),
Contains("▼ dir3"),
Contains(" ??").Contains("file-3a"),
Contains(" M").Contains("file-3b"),
Contains("??").Contains("file-a"),
Contains("??").Contains("file-b"),
Equals("▼ dir1"),
Equals(" ?? file-1a"),
Equals(" ?? file-1b").IsSelected(),
Equals("▼ dir2").IsSelected(),
Equals(" ?? file-2a").IsSelected(),
Equals(" M file-2b"),
Equals("▼ dir3"),
Equals(" ?? file-3a"),
Equals(" M file-3b"),
Equals("?? file-a"),
Equals("?? file-b"),
).
// Discard
Press(keys.Universal.Remove).
@@ -66,24 +66,24 @@ var DiscardRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
Confirm()
}).
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-1a"),
Contains("▼ dir3").IsSelected(),
Contains(" ??").Contains("file-3a"),
Contains(" M").Contains("file-3b"),
Contains("??").Contains("file-a"),
Contains("??").Contains("file-b"),
Equals("▼ dir1"),
Equals(" ?? file-1a"),
Equals("▼ dir3").IsSelected(),
Equals(" ?? file-3a"),
Equals(" M file-3b"),
Equals("?? file-a"),
Equals("?? file-b"),
).
// Verify you can discard collapsed directories in range select
PressEnter().
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("file-a")).
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-1a"),
Contains("▶ dir3").IsSelected(),
Contains("??").Contains("file-a").IsSelected(),
Contains("??").Contains("file-b"),
Equals("▼ dir1"),
Equals(" ?? file-1a"),
Equals("▶ dir3").IsSelected(),
Equals("?? file-a").IsSelected(),
Equals("?? file-b"),
).
Press(keys.Universal.Remove).
Tap(func() {
@@ -93,9 +93,9 @@ var DiscardRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
Confirm()
}).
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-1a"),
Contains("??").Contains("file-b").IsSelected(),
Equals("▼ dir1"),
Equals(" ?? file-1a"),
Equals("?? file-b").IsSelected(),
)
},
})
@@ -24,16 +24,16 @@ var DiscardStagedChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains(` M file2`).IsSelected(),
Contains(`?? file3`),
Contains(` M fileToRemove`),
Equals(" M file2").IsSelected(),
Equals("?? file3"),
Equals(" M fileToRemove"),
).
NavigateToLine(Contains(`fileToRemove`)).
PressPrimaryAction().
Lines(
Contains(` M file2`),
Contains(`?? file3`),
Contains(`M fileToRemove`).IsSelected(),
Equals(" M file2"),
Equals("?? file3"),
Equals("M fileToRemove").IsSelected(),
).
Press(keys.Files.ViewResetOptions)
@@ -42,8 +42,8 @@ var DiscardStagedChanges = NewIntegrationTest(NewIntegrationTestArgs{
// staged file has been removed
t.Views().Files().
Lines(
Contains(` M file2`),
Contains(`?? file3`).IsSelected(),
Equals(" M file2"),
Equals("?? file3").IsSelected(),
)
// the file should have the same content that it originally had, given that that was committed already
@@ -30,12 +30,12 @@ var DiscardUnstagedDirChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("dir").IsSelected(),
Contains("subdir"),
Contains("??").Contains("unstaged-file-one"),
Contains("MM").Contains("file-one"),
Contains("??").Contains("unstaged-file-two"),
Contains("??").Contains("unstaged-file-three"),
Equals("▼ dir").IsSelected(),
Equals(" ▼ subdir"),
Equals(" ?? unstaged-file-one"),
Equals(" MM file-one"),
Equals(" ?? unstaged-file-two"),
Equals("?? unstaged-file-three"),
).
Press(keys.Universal.Remove).
Tap(func() {
@@ -45,10 +45,10 @@ var DiscardUnstagedDirChanges = NewIntegrationTest(NewIntegrationTestArgs{
Confirm()
}).
Lines(
Contains("dir").IsSelected(),
Contains("M ").Contains("file-one"),
Equals("▼ dir").IsSelected(),
Equals(" M file-one"),
// this guy remains untouched because it wasn't inside the 'dir' directory
Contains("??").Contains("unstaged-file-three"),
Equals("?? unstaged-file-three"),
)
t.FileSystem().FileContent("dir/file-one", Equals("original content\nnew content\n"))
@@ -26,8 +26,8 @@ var DiscardUnstagedFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("MM").Contains("file-one").IsSelected(),
Contains("AM").Contains("file-two"),
Equals("MM file-one").IsSelected(),
Equals("AM file-two"),
).
Press(keys.Universal.Remove).
Tap(func() {
@@ -37,13 +37,13 @@ var DiscardUnstagedFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
Confirm()
}).
Lines(
Contains("M ").Contains("file-one").IsSelected(),
Contains("AM").Contains("file-two"),
Equals("M file-one").IsSelected(),
Equals("AM file-two"),
).
SelectNextItem().
Lines(
Contains("M ").Contains("file-one"),
Contains("AM").Contains("file-two").IsSelected(),
Equals("M file-one"),
Equals("AM file-two").IsSelected(),
).
Press(keys.Universal.Remove).
Tap(func() {
@@ -53,8 +53,8 @@ var DiscardUnstagedFileChanges = NewIntegrationTest(NewIntegrationTestArgs{
Confirm()
}).
Lines(
Contains("M ").Contains("file-one"),
Contains("A ").Contains("file-two").IsSelected(),
Equals("M file-one"),
Equals("A file-two").IsSelected(),
)
t.FileSystem().FileContent("file-one", Equals("original content\nnew content\n"))
@@ -26,27 +26,27 @@ var DiscardUnstagedRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("▼ dir1").IsSelected(),
Contains(" ??").Contains("file-a"),
Contains(" ??").Contains("file-b"),
Contains("▼ dir2"),
Contains(" A ").Contains("file-c"),
Contains(" M").Contains("file-d"),
Contains("??").Contains("file-e"),
Contains("??").Contains("file-f"),
Equals("▼ dir1").IsSelected(),
Equals(" ?? file-a"),
Equals(" ?? file-b"),
Equals("▼ dir2"),
Equals(" A file-c"),
Equals(" M file-d"),
Equals("?? file-e"),
Equals("?? file-f"),
).
NavigateToLine(Contains("file-b")).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("file-c")).
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-a"),
Contains(" ??").Contains("file-b").IsSelected(),
Contains("▼ dir2").IsSelected(),
Contains(" A ").Contains("file-c").IsSelected(),
Contains(" M").Contains("file-d"),
Contains("??").Contains("file-e"),
Contains("??").Contains("file-f"),
Equals("▼ dir1"),
Equals(" ?? file-a"),
Equals(" ?? file-b").IsSelected(),
Equals("▼ dir2").IsSelected(),
Equals(" A file-c").IsSelected(),
Equals(" M file-d"),
Equals("?? file-e"),
Equals("?? file-f"),
).
// Discard
Press(keys.Universal.Remove).
@@ -60,14 +60,14 @@ var DiscardUnstagedRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
// file-c is still there because it contained no unstaged changes
// file-d is gone because it was selected via dir2 and contained only unstaged changes
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-a"),
Contains("▼ dir2"),
Equals("▼ dir1"),
Equals(" ?? file-a"),
Equals("▼ dir2"),
// Re-selecting file-c because it's where the selected line index
// was before performing the action.
Contains(" A ").Contains("file-c").IsSelected(),
Contains("??").Contains("file-e"),
Contains("??").Contains("file-f"),
Equals(" A file-c").IsSelected(),
Equals("?? file-e"),
Equals("?? file-f"),
)
},
})
@@ -19,13 +19,13 @@ var DiscardVariousChangesRangeSelect = NewIntegrationTest(NewIntegrationTestArgs
t.Views().Files().
IsFocused().
Lines(
Contains("UA").Contains("added-them-changed-us.txt").IsSelected(),
Contains("AA").Contains("both-added.txt"),
Contains("DD").Contains("both-deleted.txt"),
Contains("UU").Contains("both-modded.txt"),
Contains("AU").Contains("changed-them-added-us.txt"),
Contains("UD").Contains("deleted-them.txt"),
Contains("DU").Contains("deleted-us.txt"),
Equals("UA added-them-changed-us.txt").IsSelected(),
Equals("AA both-added.txt"),
Equals("DD both-deleted.txt"),
Equals("UU both-modded.txt"),
Equals("AU changed-them-added-us.txt"),
Equals("UD deleted-them.txt"),
Equals("DU deleted-us.txt"),
).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("deleted-us.txt")).
@@ -42,17 +42,17 @@ var DiscardVariousChangesRangeSelect = NewIntegrationTest(NewIntegrationTestArgs
Cancel()
}).
Lines(
Contains("AM").Contains("added-changed.txt").IsSelected(),
Contains("MD").Contains("change-delete.txt"),
Contains("D ").Contains("delete-change.txt"),
Contains("D ").Contains("deleted-staged.txt"),
Contains(" D").Contains("deleted.txt"),
Contains("MM").Contains("double-modded.txt"),
Contains("M ").Contains("modded-staged.txt"),
Contains(" M").Contains("modded.txt"),
Contains("A ").Contains("new-staged.txt"),
Contains("??").Contains("new.txt"),
Contains("R ").Contains("renamed.txt → renamed2.txt"),
Equals("AM added-changed.txt").IsSelected(),
Equals("MD change-delete.txt"),
Equals("D delete-change.txt"),
Equals("D deleted-staged.txt"),
Equals(" D deleted.txt"),
Equals("MM double-modded.txt"),
Equals("M modded-staged.txt"),
Equals(" M modded.txt"),
Equals("A new-staged.txt"),
Equals("?? new.txt"),
Equals("R renamed.txt → renamed2.txt"),
).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("renamed.txt")).
+3 -3
View File
@@ -20,9 +20,9 @@ var Gitignore = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains(`?? .gitignore`).IsSelected(),
Contains(`?? toExclude`),
Contains(`?? toIgnore`),
Equals("?? .gitignore").IsSelected(),
Equals("?? toExclude"),
Equals("?? toIgnore"),
).
Press(keys.Files.IgnoreFile).
// ensure we can't exclude the .gitignore file
@@ -21,15 +21,15 @@ var RenameSimilarityThresholdChange = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("D ").Contains("original"),
Contains("A ").Contains("renamed"),
Equals("D original"),
Equals("A renamed"),
).
Press(keys.Universal.DecreaseRenameSimilarityThreshold).
Tap(func() {
t.ExpectToast(Equals("Changed rename similarity threshold to 45%"))
}).
Lines(
Contains("R ").Contains("original → renamed"),
Equals("R original → renamed"),
)
},
})
@@ -21,12 +21,12 @@ var StageChildrenRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("▼ baz").IsSelected(),
Contains(" ??").Contains("file"),
Contains("▼ bazbam"),
Contains(" ??").Contains("file"),
Contains("??").Contains("foo"),
Contains("??").Contains("foobar"),
Equals("▼ baz").IsSelected(),
Equals(" ?? file"),
Equals("▼ bazbam"),
Equals(" ?? file"),
Equals("?? foo"),
Equals("?? foobar"),
).
// Select everything
Press(keys.Universal.ToggleRangeSelect).
@@ -34,12 +34,12 @@ var StageChildrenRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
// Stage
PressPrimaryAction().
Lines(
Contains("▼ baz").IsSelected(),
Contains(" A ").Contains("file").IsSelected(),
Contains("▼ bazbam").IsSelected(),
Contains(" A ").Contains("file").IsSelected(),
Contains("A ").Contains("foo").IsSelected(),
Contains("A ").Contains("foobar").IsSelected(),
Equals("▼ baz").IsSelected(),
Equals(" A file").IsSelected(),
Equals("▼ bazbam").IsSelected(),
Equals(" A file").IsSelected(),
Equals("A foo").IsSelected(),
Equals("A foobar").IsSelected(),
)
},
})
@@ -23,28 +23,28 @@ var StageDeletedRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains(" D").Contains("file-a").IsSelected(),
Contains(" D").Contains("file-b"),
Equals(" D file-a").IsSelected(),
Equals(" D file-b"),
).
// Stage a single deleted file
PressPrimaryAction().
Lines(
Contains("D ").Contains("file-a").IsSelected(),
Contains(" D").Contains("file-b"),
Equals("D file-a").IsSelected(),
Equals(" D file-b"),
).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("file-b")).
// Stage both files while a deleted file is already staged
PressPrimaryAction().
Lines(
Contains("D ").Contains("file-a").IsSelected(),
Contains("D ").Contains("file-b").IsSelected(),
Equals("D file-a").IsSelected(),
Equals("D file-b").IsSelected(),
).
// Unstage; back to everything being unstaged
PressPrimaryAction().
Lines(
Contains(" D").Contains("file-a").IsSelected(),
Contains(" D").Contains("file-b").IsSelected(),
Equals(" D file-a").IsSelected(),
Equals(" D file-b").IsSelected(),
)
},
})
@@ -26,14 +26,14 @@ var StageRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("▼ dir1").IsSelected(),
Contains(" ??").Contains("file-a"),
Contains(" ??").Contains("file-b"),
Contains("▼ dir2"),
Contains(" ??").Contains("file-c"),
Contains(" M").Contains("file-d"),
Contains("??").Contains("file-e"),
Contains("??").Contains("file-f"),
Equals("▼ dir1").IsSelected(),
Equals(" ?? file-a"),
Equals(" ?? file-b"),
Equals("▼ dir2"),
Equals(" ?? file-c"),
Equals(" M file-d"),
Equals("?? file-e"),
Equals("?? file-f"),
).
NavigateToLine(Contains("file-b")).
Press(keys.Universal.ToggleRangeSelect).
@@ -41,27 +41,27 @@ var StageRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
// Stage
PressPrimaryAction().
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-a"),
Contains(" A ").Contains("file-b").IsSelected(),
Contains("▼ dir2").IsSelected(),
Contains(" A ").Contains("file-c").IsSelected(),
Equals("▼ dir1"),
Equals(" ?? file-a"),
Equals(" A file-b").IsSelected(),
Equals("▼ dir2").IsSelected(),
Equals(" A file-c").IsSelected(),
// Staged because dir2 was part of the selection when he hit space
Contains(" M ").Contains("file-d"),
Contains("??").Contains("file-e"),
Contains("??").Contains("file-f"),
Equals(" M file-d"),
Equals("?? file-e"),
Equals("?? file-f"),
).
// Unstage; back to everything being unstaged
PressPrimaryAction().
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-a"),
Contains(" ??").Contains("file-b").IsSelected(),
Contains("▼ dir2").IsSelected(),
Contains(" ??").Contains("file-c").IsSelected(),
Contains(" M").Contains("file-d"),
Contains("??").Contains("file-e"),
Contains("??").Contains("file-f"),
Equals("▼ dir1"),
Equals(" ?? file-a"),
Equals(" ?? file-b").IsSelected(),
Equals("▼ dir2").IsSelected(),
Equals(" ?? file-c").IsSelected(),
Equals(" M file-d"),
Equals("?? file-e"),
Equals("?? file-f"),
).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("dir2")).
@@ -69,38 +69,38 @@ var StageRangeSelect = NewIntegrationTest(NewIntegrationTestArgs{
// Collapse the directory
PressEnter().
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-a"),
Contains(" ??").Contains("file-b"),
Contains("▶ dir2").IsSelected(),
Contains("??").Contains("file-e"),
Contains("??").Contains("file-f"),
Equals("▼ dir1"),
Equals(" ?? file-a"),
Equals(" ?? file-b"),
Equals("▶ dir2").IsSelected(),
Equals("?? file-e"),
Equals("?? file-f"),
).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("file-e")).
// Stage
PressPrimaryAction().
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-a"),
Contains(" ??").Contains("file-b"),
Contains("▶ dir2").IsSelected(),
Contains("A ").Contains("file-e").IsSelected(),
Contains("??").Contains("file-f"),
Equals("▼ dir1"),
Equals(" ?? file-a"),
Equals(" ?? file-b"),
Equals("▶ dir2").IsSelected(),
Equals("A file-e").IsSelected(),
Equals("?? file-f"),
).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("dir2")).
// Expand the directory again to verify it's been staged
PressEnter().
Lines(
Contains("▼ dir1"),
Contains(" ??").Contains("file-a"),
Contains(" ??").Contains("file-b"),
Contains("▼ dir2").IsSelected(),
Contains(" A ").Contains("file-c"),
Contains(" M ").Contains("file-d"),
Contains("A ").Contains("file-e"),
Contains("??").Contains("file-f"),
Equals("▼ dir1"),
Equals(" ?? file-a"),
Equals(" ?? file-b"),
Equals("▼ dir2").IsSelected(),
Equals(" A file-c"),
Equals(" M file-d"),
Equals("A file-e"),
Equals("?? file-f"),
)
},
})
@@ -61,15 +61,15 @@ var NestedFilter = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains(`apple`).IsSelected(),
Contains(`grape`),
Contains(`orange`),
Equals("A apple").IsSelected(),
Equals("A grape"),
Equals("A orange"),
).
FilterOrSearch("grape").
Lines(
Contains(`apple`),
Contains(`grape`).IsSelected(),
Contains(`orange`),
Equals("A apple"),
Equals("A grape").IsSelected(),
Equals("A orange"),
).
PressEnter()
@@ -87,9 +87,9 @@ var NestedFilter = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains(`apple`),
Contains(`grape`).IsSelected(),
Contains(`orange`),
Equals("A apple"),
Equals("A grape").IsSelected(),
Equals("A orange"),
).
Tap(func() {
t.Views().Search().IsVisible().Content(Contains("matches for 'grape'"))
@@ -100,9 +100,9 @@ var NestedFilter = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Search().IsInvisible()
}).
Lines(
Contains(`apple`),
Contains(`grape`).IsSelected(),
Contains(`orange`),
Equals("A apple"),
Equals("A grape").IsSelected(),
Equals("A orange"),
).
// escape to sub-commits view
PressEscape()
@@ -69,13 +69,13 @@ var NestedFilterTransient = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains(`file-one`).IsSelected(),
Contains(`file-two`),
Equals("A file-one").IsSelected(),
Equals("A file-two"),
).
FilterOrSearch("two").
Lines(
Contains(`file-one`),
Contains(`file-two`).IsSelected(),
Equals("A file-one"),
Equals("A file-two").IsSelected(),
)
t.Views().Branches().
@@ -96,8 +96,8 @@ var NestedFilterTransient = NewIntegrationTest(NewIntegrationTestArgs{
IsFocused().
// the search on the commit-files context has been cancelled
Lines(
Contains(`file-one`).IsSelected(),
Contains(`file-two`),
Equals("A file-one").IsSelected(),
Equals("A file-two"),
).
Tap(func() {
t.Views().Search().IsInvisible()
@@ -26,8 +26,8 @@ var ApplyInReverse = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("file1").IsSelected(),
Contains("file2"),
Equals("A file1").IsSelected(),
Equals("A file2"),
).
PressPrimaryAction()
@@ -34,8 +34,8 @@ var ApplyInReverseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("M").Contains("file1").IsSelected(),
Contains("M").Contains("file2"),
Equals("M file1").IsSelected(),
Equals("M file2"),
).
// Add both files to the patch; the first will conflict, the second won't
PressPrimaryAction().
@@ -61,7 +61,7 @@ var ApplyInReverseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Focus().
Lines(
Contains("UU").Contains("file1").IsSelected(),
Equals("UU file1").IsSelected(),
).
PressEnter()
@@ -81,8 +81,8 @@ var ApplyInReverseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Focus().
Lines(
Contains("M").Contains("file1").IsSelected(),
Contains("M").Contains("file2"),
Equals("M file1").IsSelected(),
Equals("M file2"),
)
t.Views().Main().
@@ -31,9 +31,9 @@ var MoveRangeToIndex = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("M file1").IsSelected(),
Contains("A file2"),
Contains("A file3"),
Equals("M file1").IsSelected(),
Equals("A file2"),
Equals("A file3"),
).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("file2")).
@@ -55,8 +55,8 @@ var MoveRangeToIndex = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Focus().
Lines(
Contains("file1").IsSelected(),
Contains("file2"),
Equals("M file1").IsSelected(),
Equals("A file2"),
)
t.Views().Main().
@@ -66,11 +66,11 @@ var MoveToEarlierCommit = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("dir").IsSelected(),
Contains(" M file1"),
Contains(" D file2"),
Contains(" A file3"),
Contains("A unrelated-file"),
Equals("▼ dir").IsSelected(),
Equals(" M file1"),
Equals(" D file2"),
Equals(" A file3"),
Equals("A unrelated-file"),
).
PressEscape()
@@ -66,11 +66,11 @@ var MoveToEarlierCommitNoKeepEmpty = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("dir").IsSelected(),
Contains(" M file1"),
Contains(" D file2"),
Contains(" A file3"),
Contains("A unrelated-file"),
Equals("▼ dir").IsSelected(),
Equals(" M file1"),
Equals(" D file2"),
Equals(" A file3"),
Equals("A unrelated-file"),
).
PressEscape()
},
@@ -66,11 +66,11 @@ var MoveToLaterCommit = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("dir").IsSelected(),
Contains(" M file1"),
Contains(" D file2"),
Contains(" A file3"),
Contains("A unrelated-file"),
Equals("▼ dir").IsSelected(),
Equals(" M file1"),
Equals(" D file2"),
Equals(" A file3"),
Equals("A unrelated-file"),
).
PressEscape()
@@ -27,9 +27,9 @@ var SelectAllFiles = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("file1").IsSelected(),
Contains("file2"),
Contains("file3"),
Equals("A file1").IsSelected(),
Equals("A file2"),
Equals("A file3"),
).
Press(keys.Files.ToggleStagedAll)
@@ -34,28 +34,28 @@ var ToggleRange = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("▼ dir1").IsSelected(),
Contains(" A").Contains("file1-a"),
Contains(" A").Contains("file2-a"),
Contains(" A").Contains("file3-a"),
Contains("▼ dir2"),
Contains(" A").Contains("file1-b"),
Contains(" A").Contains("file2-b"),
Contains(" A").Contains("file3-b"),
Equals("▼ dir1").IsSelected(),
Equals(" A file1-a"),
Equals(" A file2-a"),
Equals(" A file3-a"),
Equals("▼ dir2"),
Equals(" A file1-b"),
Equals(" A file2-b"),
Equals(" A file3-b"),
).
NavigateToLine(Contains("file1-a")).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("file3-a")).
PressPrimaryAction().
Lines(
Contains("▼ dir1"),
Contains(" ●").Contains("file1-a").IsSelected(),
Contains(" ●").Contains("file2-a").IsSelected(),
Contains(" ●").Contains("file3-a").IsSelected(),
Contains("▼ dir2"),
Contains(" A").Contains("file1-b"),
Contains(" A").Contains("file2-b"),
Contains(" A").Contains("file3-b"),
Equals("▼ dir1"),
Equals(" ● file1-a").IsSelected(),
Equals(" ● file2-a").IsSelected(),
Equals(" ● file3-a").IsSelected(),
Equals("▼ dir2"),
Equals(" A file1-b"),
Equals(" A file2-b"),
Equals(" A file3-b"),
).
PressEscape().
NavigateToLine(Contains("file3-b")).
@@ -69,39 +69,39 @@ var ToggleRange = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("▼ dir1"),
Contains(" ●").Contains("file1-a"),
Contains(" ●").Contains("file2-a"),
Contains(" ●").Contains("file3-a"),
Contains("▼ dir2"),
Contains(" A").Contains("file1-b"),
Contains(" A").Contains("file2-b"),
Contains(" ◐").Contains("file3-b").IsSelected(),
Equals("▼ dir1"),
Equals(" ● file1-a"),
Equals(" ● file2-a"),
Equals(" ● file3-a"),
Equals("▼ dir2"),
Equals(" A file1-b"),
Equals(" A file2-b"),
Equals(" ◐ file3-b").IsSelected(),
).
NavigateToLine(Contains("dir1")).
Press(keys.Universal.ToggleRangeSelect).
NavigateToLine(Contains("dir2")).
PressPrimaryAction().
Lines(
Contains("▼ dir1").IsSelected(),
Contains(" ●").Contains("file1-a").IsSelected(),
Contains(" ●").Contains("file2-a").IsSelected(),
Contains(" ●").Contains("file3-a").IsSelected(),
Contains("▼ dir2").IsSelected(),
Contains(" ●").Contains("file1-b"),
Contains(" ●").Contains("file2-b"),
Contains(" ●").Contains("file3-b"),
Equals("▼ dir1").IsSelected(),
Equals(" ● file1-a").IsSelected(),
Equals(" ● file2-a").IsSelected(),
Equals(" ● file3-a").IsSelected(),
Equals("▼ dir2").IsSelected(),
Equals(" ● file1-b"),
Equals(" ● file2-b"),
Equals(" ● file3-b"),
).
PressPrimaryAction().
Lines(
Contains("▼ dir1").IsSelected(),
Contains(" A").Contains("file1-a").IsSelected(),
Contains(" A").Contains("file2-a").IsSelected(),
Contains(" A").Contains("file3-a").IsSelected(),
Contains("▼ dir2").IsSelected(),
Contains(" A").Contains("file1-b"),
Contains(" A").Contains("file2-b"),
Contains(" A").Contains("file3-b"),
Equals("▼ dir1").IsSelected(),
Equals(" A file1-a").IsSelected(),
Equals(" A file2-a").IsSelected(),
Equals(" A file3-a").IsSelected(),
Equals("▼ dir2").IsSelected(),
Equals(" A file1-b"),
Equals(" A file2-b"),
Equals(" A file3-b"),
)
},
})
@@ -22,8 +22,8 @@ var DiscardAllChanges = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
IsFocused().
Lines(
Contains("file1").IsSelected(),
Contains("file2"),
Equals(" M file1").IsSelected(),
Equals(" M file2"),
).
PressEnter()
@@ -44,7 +44,7 @@ var DiscardAllChanges = NewIntegrationTest(NewIntegrationTestArgs{
// because there are no more changes in file1 we switch to file2
t.Views().Files().
Lines(
Contains("file2").IsSelected(),
Equals(" M file2").IsSelected(),
)
}).
// assert we are still in the staging panel, but now looking at the changes of the other file
@@ -23,8 +23,8 @@ var StashAndKeepIndex = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains("file-staged"),
Contains("file-unstaged"),
Equals("M file-staged"),
Equals(" M file-unstaged"),
).
Press(keys.Files.ViewStashOptions)
@@ -39,7 +39,7 @@ var StashAndKeepIndex = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains("file-staged"),
Equals("M file-staged"),
)
t.Views().Stash().
@@ -49,8 +49,8 @@ var StashAndKeepIndex = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().CommitFiles().
IsFocused().
Lines(
Contains("file-staged"),
Contains("file-unstaged"),
Equals("M file-staged"),
Equals("M file-unstaged"),
)
},
})
@@ -22,8 +22,8 @@ var StashIncludingUntrackedFiles = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains("file_1"),
Contains("file_2"),
Equals("A file_1"),
Equals("?? file_2"),
).
Press(keys.Files.ViewStashOptions)
+3 -3
View File
@@ -23,8 +23,8 @@ var StashStaged = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains("file-staged"),
Contains("file-unstaged"),
Equals("M file-staged"),
Equals(" M file-unstaged"),
).
Press(keys.Files.ViewStashOptions)
@@ -39,7 +39,7 @@ var StashStaged = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains("file-unstaged"),
Equals(" M file-unstaged"),
)
t.Views().Stash().
@@ -23,8 +23,8 @@ var StashUnstaged = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains("file-staged"),
Contains("file-unstaged"),
Equals("M file-staged"),
Equals(" M file-unstaged"),
).
Press(keys.Files.ViewStashOptions)
+2 -2
View File
@@ -44,8 +44,8 @@ var Add = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().Focus().
Lines(
Contains(".gitmodules").IsSelected(),
Contains("my_submodule_path (submodule)"),
Equals("A .gitmodules").IsSelected(),
Equals("A my_submodule_path (submodule)"),
).
Tap(func() {
t.Views().Main().Content(
+2 -2
View File
@@ -35,8 +35,8 @@ var Remove = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().Focus().
Lines(
MatchesRegexp(`M.*\.gitmodules`).IsSelected(),
MatchesRegexp(`D.*my_submodule_path`),
Equals("M .gitmodules").IsSelected(),
Equals("D my_submodule_path"),
)
t.Views().Main().Content(
@@ -39,9 +39,9 @@ var RemoveNested = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().IsFocused().
Lines(
Contains("modules").IsSelected(),
MatchesRegexp(`D.*innerSubPath`),
MatchesRegexp(`M.*\.gitmodules`),
Equals("▼ modules").IsSelected(),
Equals(" D innerSubPath"),
Equals("M .gitmodules"),
).
NavigateToLine(Contains(".gitmodules"))
+7 -7
View File
@@ -71,15 +71,15 @@ var Reset = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().Focus().
Lines(
MatchesRegexp(` M.*my_submodule_path \(submodule\)`),
Contains("other_file").IsSelected(),
Equals(" M my_submodule_path (submodule)"),
Equals("?? other_file").IsSelected(),
).
// Verify we can't use range select on submodules
Press(keys.Universal.ToggleRangeSelect).
SelectPreviousItem().
Lines(
MatchesRegexp(` M.*my_submodule_path \(submodule\)`).IsSelected(),
Contains("other_file").IsSelected(),
Equals(" M my_submodule_path (submodule)").IsSelected(),
Equals("?? other_file").IsSelected(),
).
Press(keys.Universal.Remove).
Tap(func() {
@@ -87,8 +87,8 @@ var Reset = NewIntegrationTest(NewIntegrationTestArgs{
}).
Press(keys.Universal.ToggleRangeSelect).
Lines(
MatchesRegexp(` M.*my_submodule_path \(submodule\)`).IsSelected(),
Contains("other_file"),
Equals(" M my_submodule_path (submodule)").IsSelected(),
Equals("?? other_file"),
).
Press(keys.Universal.Remove).
Tap(func() {
@@ -98,7 +98,7 @@ var Reset = NewIntegrationTest(NewIntegrationTestArgs{
Confirm()
}).
Lines(
Contains("other_file").IsSelected(),
Equals("?? other_file").IsSelected(),
)
t.Views().Submodules().Focus().
+7 -7
View File
@@ -57,8 +57,8 @@ var UndoCommit = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains("A file"),
Contains(" M other-file"),
Equals("A file"),
Equals(" M other-file"),
)
t.Views().Commits().Focus().
@@ -71,7 +71,7 @@ var UndoCommit = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains(" M other-file"),
Equals(" M other-file"),
)
// Undo again, this time discarding the original change before redoing again
@@ -84,14 +84,14 @@ var UndoCommit = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().Focus().
Lines(
Contains("A file"),
Contains(" M other-file").IsSelected(),
Equals("A file"),
Equals(" M other-file").IsSelected(),
).
Press(keys.Universal.PrevItem).
Press(keys.Universal.Remove).
Tap(confirmDiscardFile).
Lines(
Contains(" M other-file"),
Equals(" M other-file"),
).
Press(keys.Universal.Redo).
Tap(confirmRedo)
@@ -104,7 +104,7 @@ var UndoCommit = NewIntegrationTest(NewIntegrationTestArgs{
t.Views().Files().
Lines(
Contains(" M other-file"),
Equals(" M other-file"),
)
},
})