summaryrefslogtreecommitdiffstats
path: root/pkg/integration
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2023-02-22 19:36:31 +1100
committerJesse Duffield <jessedduffield@gmail.com>2023-02-22 19:36:31 +1100
commit78f3a7a4786bf5f70af3489e6c4f2e44cddbd978 (patch)
tree4e1920587bb05585816107e05ab3c42a8fa9bfc6 /pkg/integration
parent526c9dea9b298d69a3fafec3303549b0d6292af4 (diff)
migrate interactive rebase integration tests
Diffstat (limited to 'pkg/integration')
-rw-r--r--pkg/integration/tests/interactive_rebase/move.go84
-rw-r--r--pkg/integration/tests/interactive_rebase/move_in_rebase.go96
-rw-r--r--pkg/integration/tests/interactive_rebase/one.go71
-rw-r--r--pkg/integration/tests/interactive_rebase/rebase.go122
-rw-r--r--pkg/integration/tests/interactive_rebase/reword_first_commit.go3
-rw-r--r--pkg/integration/tests/interactive_rebase/reword_last_commit.go38
-rw-r--r--pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go126
-rw-r--r--pkg/integration/tests/interactive_rebase/swap_with_conflict.go33
-rw-r--r--pkg/integration/tests/tests_gen.go7
9 files changed, 508 insertions, 72 deletions
diff --git a/pkg/integration/tests/interactive_rebase/move.go b/pkg/integration/tests/interactive_rebase/move.go
new file mode 100644
index 000000000..e7679a793
--- /dev/null
+++ b/pkg/integration/tests/interactive_rebase/move.go
@@ -0,0 +1,84 @@
+package interactive_rebase
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var Move = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Directly move a commit all the way down and all the way back up",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.CreateNCommits(4)
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("commit 04").IsSelected(),
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveDownCommit).
+ Lines(
+ Contains("commit 03"),
+ Contains("commit 04").IsSelected(),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveDownCommit).
+ Lines(
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("commit 04").IsSelected(),
+ Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveDownCommit).
+ Lines(
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ Contains("commit 04").IsSelected(),
+ ).
+ // assert nothing happens upon trying to move beyond the last commit
+ Press(keys.Commits.MoveDownCommit).
+ Lines(
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ Contains("commit 04").IsSelected(),
+ ).
+ Press(keys.Commits.MoveUpCommit).
+ Lines(
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("commit 04").IsSelected(),
+ Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveUpCommit).
+ Lines(
+ Contains("commit 03"),
+ Contains("commit 04").IsSelected(),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveUpCommit).
+ Lines(
+ Contains("commit 04").IsSelected(),
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ ).
+ // assert nothing happens upon trying to move beyond the first commit
+ Press(keys.Commits.MoveUpCommit).
+ Lines(
+ Contains("commit 04").IsSelected(),
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ )
+ },
+})
diff --git a/pkg/integration/tests/interactive_rebase/move_in_rebase.go b/pkg/integration/tests/interactive_rebase/move_in_rebase.go
new file mode 100644
index 000000000..daeedbf87
--- /dev/null
+++ b/pkg/integration/tests/interactive_rebase/move_in_rebase.go
@@ -0,0 +1,96 @@
+package interactive_rebase
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var MoveInRebase = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Via a single interactive rebase move a commit all the way up then back down then slightly back up again and apply the change",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.CreateNCommits(4)
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("commit 04").IsSelected(),
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ ).
+ NavigateToListItem(Contains("commit 01")).
+ Press(keys.Universal.Edit).
+ Lines(
+ Contains("commit 04"),
+ Contains("commit 03"),
+ Contains("commit 02"),
+ Contains("YOU ARE HERE").Contains("commit 01").IsSelected(),
+ ).
+ SelectPreviousItem().
+ Press(keys.Commits.MoveUpCommit).
+ Lines(
+ Contains("commit 04"),
+ Contains("commit 02").IsSelected(),
+ Contains("commit 03"),
+ Contains("YOU ARE HERE").Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveUpCommit).
+ Lines(
+ Contains("commit 02").IsSelected(),
+ Contains("commit 04"),
+ Contains("commit 03"),
+ Contains("YOU ARE HERE").Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveUpCommit).
+ // assert we can't move past the top
+ Lines(
+ Contains("commit 02").IsSelected(),
+ Contains("commit 04"),
+ Contains("commit 03"),
+ Contains("YOU ARE HERE").Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveDownCommit).
+ Lines(
+ Contains("commit 04"),
+ Contains("commit 02").IsSelected(),
+ Contains("commit 03"),
+ Contains("YOU ARE HERE").Contains("commit 01"),
+ ).
+ Press(keys.Commits.MoveDownCommit).
+ Lines(
+ Contains("commit 04"),
+ Contains("commit 03"),
+ Contains("commit 02").IsSelected(),
+ Contains("YOU ARE HERE").Contains("commit 01"),
+ ).
+ // assert we can't move past the bottom
+ Press(keys.Commits.MoveDownCommit).
+ Lines(
+ Contains("commit 04"),
+ Contains("commit 03"),
+ Contains("commit 02").IsSelected(),
+ Contains("YOU ARE HERE").Contains("commit 01"),
+ ).
+ // move it back up one so that we land in a different order than we started with
+ Press(keys.Commits.MoveUpCommit).
+ Lines(
+ Contains("commit 04"),
+ Contains("commit 02").IsSelected(),
+ Contains("commit 03"),
+ Contains("YOU ARE HERE").Contains("commit 01"),
+ ).
+ Tap(func() {
+ t.Actions().ContinueRebase()
+ }).
+ Lines(
+ Contains("commit 04"),
+ Contains("commit 02").IsSelected(),
+ Contains("commit 03"),
+ DoesNotContain("YOU ARE HERE").Contains("commit 01"),
+ )
+ },
+})
diff --git a/pkg/integration/tests/interactive_rebase/one.go b/pkg/integration/tests/interactive_rebase/one.go
deleted file mode 100644
index d6d01239a..000000000
--- a/pkg/integration/tests/interactive_rebase/one.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package interactive_rebase
-
-import (
- "github.com/jesseduffield/lazygit/pkg/config"
- . "github.com/jesseduffield/lazygit/pkg/integration/components"
-)
-
-var One = NewIntegrationTest(NewIntegrationTestArgs{
- Description: "Begins an interactive rebase, then fixups, drops, and squashes some commits",
- ExtraCmdArgs: "",
- Skip: false,
- SetupConfig: func(config *config.AppConfig) {},
- SetupRepo: func(shell *Shell) {
- shell.
- CreateNCommits(5) // these will appears at commit 05, 04, 04, down to 01
- },
- Run: func(t *TestDriver, keys config.KeybindingConfig) {
- t.Views().Commits().
- Focus().
- Lines(
- Contains("commit 05"),
- Contains("commit 04"),
- Contains("commit 03"),
- Contains("commit 02"),
- Contains("commit 01"),
- ).
- NavigateToListItem(Contains("commit 02")).
- Press(keys.Universal.Edit).
- Lines(
- MatchesRegexp("pick.*commit 05"),
- MatchesRegexp("pick.*commit 04"),
- MatchesRegexp("pick.*commit 03"),
- MatchesRegexp("YOU ARE HERE.*commit 02").IsSelected(),
- Contains("commit 01"),
- ).
- SelectPreviousItem().
- Press(keys.Commits.MarkCommitAsFixup).
- Lines(
- MatchesRegexp("pick.*commit 05"),
- MatchesRegexp("pick.*commit 04"),
- MatchesRegexp("fixup.*commit 03").IsSelected(),
- MatchesRegexp("YOU ARE HERE.*commit 02"),
- Contains("commit 01"),
- ).
- SelectPreviousItem().
- Press(keys.Universal.Remove).
- Lines(
- MatchesRegexp("pick.*commit 05"),
- MatchesRegexp("drop.*commit 04").IsSelected(),
- MatchesRegexp("fixup.*commit 03"),
- MatchesRegexp("YOU ARE HERE.*commit 02"),
- Contains("commit 01"),
- ).
- SelectPreviousItem().
- Press(keys.Commits.SquashDown).
- Lines(
- MatchesRegexp("squash.*commit 05").IsSelected(),
- MatchesRegexp("drop.*commit 04"),
- MatchesRegexp("fixup.*commit 03"),
- MatchesRegexp("YOU ARE HERE.*commit 02"),
- Contains("commit 01"),
- ).
- Tap(func() {
- t.Actions().ContinueRebase()
- }).
- Lines(
- Contains("commit 02"),
- Contains("commit 01"),
- )
- },
-})
diff --git a/pkg/integration/tests/interactive_rebase/rebase.go b/pkg/integration/tests/interactive_rebase/rebase.go
new file mode 100644
index 000000000..3951d7826
--- /dev/null
+++ b/pkg/integration/tests/interactive_rebase/rebase.go
@@ -0,0 +1,122 @@
+package interactive_rebase
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var Rebase = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Begins an interactive rebase, then fixups, drops, and squashes some commits",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.EmptyCommit("initial commit")
+ shell.EmptyCommit("first commit to edit")
+ shell.EmptyCommit("commit to squash")
+ shell.EmptyCommit("second commit to edit")
+ shell.EmptyCommit("commit to drop")
+
+ shell.CreateFileAndAdd("fixup-commit-file", "fixup-commit-file")
+ shell.Commit("commit to fixup")
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("commit to fixup"),
+ Contains("commit to drop"),
+ Contains("second commit to edit"),
+ Contains("commit to squash"),
+ Contains("first commit to edit"),
+ Contains("initial commit"),
+ ).
+ NavigateToListItem(Contains("first commit to edit")).
+ Press(keys.Universal.Edit).
+ Lines(
+ MatchesRegexp("pick.*commit to fixup"),
+ MatchesRegexp("pick.*commit to drop"),
+ MatchesRegexp("pick.*second commit to edit"),
+ MatchesRegexp("pick.*commit to squash"),
+ MatchesRegexp("YOU ARE HERE.*first commit to edit").IsSelected(),
+ Contains("initial commit"),
+ ).
+ SelectPreviousItem().
+ Press(keys.Commits.SquashDown).
+ Lines(
+ MatchesRegexp("pick.*commit to fixup"),
+ MatchesRegexp("pick.*commit to drop"),
+ MatchesRegexp("pick.*second commit to edit"),
+ MatchesRegexp("squash.*commit to squash").IsSelected(),
+ MatchesRegexp("YOU ARE HERE.*first commit to edit"),
+ Contains("initial commit"),
+ ).
+ SelectPreviousItem().
+ Press(keys.Universal.Edit).
+ Lines(
+ MatchesRegexp("pick.*commit to fixup"),
+ MatchesRegexp("pick.*commit to drop"),
+ MatchesRegexp("edit.*second commit to edit").IsSelected(),
+ MatchesRegexp("squash.*commit to squash"),
+ MatchesRegexp("YOU ARE HERE.*first commit to edit"),
+ Contains("initial commit"),
+ ).
+ SelectPreviousItem().
+ Press(keys.Universal.Remove).
+ Lines(
+ MatchesRegexp("pick.*commit to fixup"),
+ MatchesRegexp("drop.*commit to drop").IsSelected(),
+ MatchesRegexp("edit.*second commit to edit"),
+ MatchesRegexp("squash.*commit to squash"),
+ MatchesRegexp("YOU ARE HERE.*first commit to edit"),
+ Contains("initial commit"),
+ ).
+ SelectPreviousItem().
+ Press(keys.Commits.MarkCommitAsFixup).
+ Lines(
+ MatchesRegexp("fixup.*commit to fixup").IsSelected(),
+ MatchesRegexp("drop.*commit to drop"),
+ MatchesRegexp("edit.*second commit to edit"),
+ MatchesRegexp("squash.*commit to squash"),
+ MatchesRegexp("YOU ARE HERE.*first commit to edit"),
+ Contains("initial commit"),
+ ).
+ Tap(func() {
+ t.Actions().ContinueRebase()
+ }).
+ Lines(
+ MatchesRegexp("fixup.*commit to fixup").IsSelected(),
+ MatchesRegexp("drop.*commit to drop"),
+ MatchesRegexp("YOU ARE HERE.*second commit to edit"),
+ MatchesRegexp("first commit to edit"),
+ Contains("initial commit"),
+ ).
+ Tap(func() {
+ t.Actions().ContinueRebase()
+ }).
+ Lines(
+ Contains("second commit to edit").IsSelected(),
+ Contains("first commit to edit"),
+ Contains("initial commit"),
+ ).
+ Tap(func() {
+ // commit 4 was squashed into 6 so we assert that their messages have been concatenated
+ t.Views().Main().Content(
+ Contains("second commit to edit").
+ // file from fixup commit is present
+ Contains("fixup-commit-file").
+ // but message is not (because it's a fixup, not a squash)
+ DoesNotContain("commit to fixup"),
+ )
+ }).
+ SelectNextItem().
+ Tap(func() {
+ // commit 4 was squashed into 6 so we assert that their messages have been concatenated
+ t.Views().Main().Content(
+ Contains("first commit to edit").
+ // message from squashed commit has been concatenated with message other commit
+ Contains("commit to squash"),
+ )
+ })
+ },
+})
diff --git a/pkg/integration/tests/interactive_rebase/reword_first_commit.go b/pkg/integration/tests/interactive_rebase/reword_first_commit.go
index 9e631da09..d4835fcd8 100644
--- a/pkg/integration/tests/interactive_rebase/reword_first_commit.go
+++ b/pkg/integration/tests/interactive_rebase/reword_first_commit.go
@@ -5,6 +5,9 @@ import (
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
+// Rewording the first commit is tricky because you can't rebase from its parent commit,
+// hence having a specific test for this
+
var RewordFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Rewords the first commit, just to show that it's possible",
ExtraCmdArgs: "",
diff --git a/pkg/integration/tests/interactive_rebase/reword_last_commit.go b/pkg/integration/tests/interactive_rebase/reword_last_commit.go
new file mode 100644
index 000000000..9a4329219
--- /dev/null
+++ b/pkg/integration/tests/interactive_rebase/reword_last_commit.go
@@ -0,0 +1,38 @@
+package interactive_rebase
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var RewordLastCommit = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Rewords the last (HEAD) commit",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.
+ CreateNCommits(2)
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("commit 02").IsSelected(),
+ Contains("commit 01"),
+ ).
+ Press(keys.Commits.RenameCommit).
+ Tap(func() {
+ t.ExpectPopup().Prompt().
+ Title(Equals("reword commit")).
+ InitialText(Equals("commit 02")).
+ Clear().
+ Type("renamed 02").
+ Confirm()
+ }).
+ Lines(
+ Contains("renamed 02"),
+ Contains("commit 01"),
+ )
+ },
+})
diff --git a/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go b/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go
new file mode 100644
index 000000000..e177dd0cb
--- /dev/null
+++ b/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go
@@ -0,0 +1,126 @@
+package interactive_rebase
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var SwapInRebaseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Via an edit-triggered rebase, swap two commits, causing a conflict. Then resolve the conflict and continue",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.CreateFileAndAdd("myfile", "one")
+ shell.Commit("commit one")
+ shell.UpdateFileAndAdd("myfile", "two")
+ shell.Commit("commit two")
+ shell.UpdateFileAndAdd("myfile", "three")
+ shell.Commit("commit three")
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("commit three").IsSelected(),
+ Contains("commit two"),
+ Contains("commit one"),
+ ).
+ NavigateToListItem(Contains("commit one")).
+ Press(keys.Universal.Edit).
+ Lines(
+ Contains("commit three"),
+ Contains("commit two"),
+ Contains("YOU ARE HERE").Contains("commit one").IsSelected(),
+ ).
+ SelectPreviousItem().
+ Press(keys.Commits.MoveUpCommit).
+ Lines(
+ Contains("commit two").IsSelected(),
+ Contains("commit three"),
+ Contains("YOU ARE HERE").Contains("commit one"),
+ ).
+ Tap(func() {
+ t.Actions().ContinueRebase()
+ })
+
+ handleConflictsFromSwap(t)
+ },
+})
+
+func handleConflictsFromSwap(t *TestDriver) {
+ continueMerge := func() {
+ t.ExpectPopup().Confirmation().
+ Title(Equals("continue")).
+ Content(Contains("all merge conflicts resolved. Continue?")).
+ Confirm()
+ }
+
+ acceptConflicts := func() {
+ t.ExpectPopup().Confirmation().
+ Title(Equals("Auto-merge failed")).
+ Content(Contains("Conflicts!")).
+ Confirm()
+ }
+
+ acceptConflicts()
+
+ t.Views().Files().
+ IsFocused().
+ Lines(
+ Contains("UU myfile"),
+ ).
+ PressEnter()
+
+ t.Views().MergeConflicts().
+ IsFocused().
+ TopLines(
+ Contains("<<<<<<< HEAD"),
+ Contains("one"),
+ Contains("======="),
+ Contains("three"),
+ Contains(">>>>>>>"),
+ ).
+ SelectNextItem().
+ PressPrimaryAction() // pick "three"
+
+ continueMerge()
+
+ acceptConflicts()
+
+ t.Views().Files().
+ IsFocused().
+ Lines(
+ Contains("UU myfile"),
+ ).
+ PressEnter()
+
+ t.Views().MergeConflicts().
+ IsFocused().
+ TopLines(
+ Contains("<<<<<<< HEAD"),
+ Contains("three"),
+ Contains("======="),
+ Contains("two"),
+ Contains(">>>>>>>"),
+ ).
+ SelectNextItem().
+ PressPrimaryAction() // pick "two"
+
+ continueMerge()
+
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("commit two").IsSelected(),
+ Contains("commit three"),
+ Contains("commit one"),
+ ).
+ Tap(func() {
+ t.Views().Main().Content(Contains("-three").Contains("+two"))
+ }).
+ SelectNextItem().
+ Tap(func() {
+ t.Views().Main().Content(Contains("-one").Contains("+three"))
+ })
+}
diff --git a/pkg/integration/tests/interactive_rebase/swap_with_conflict.go b/pkg/integration/tests/interactive_rebase/swap_with_conflict.go
new file mode 100644
index 000000000..5f156a5c8
--- /dev/null
+++ b/pkg/integration/tests/interactive_rebase/swap_with_conflict.go
@@ -0,0 +1,33 @@
+package interactive_rebase
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var SwapWithConflict = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Directly swap two commits, causing a conflict. Then resolve the conflict and continue",
+ ExtraCmdArgs: "",
+ Skip: false,
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.CreateFileAndAdd("myfile", "one")
+ shell.Commit("commit one")
+ shell.UpdateFileAndAdd("myfile", "two")
+ shell.Commit("commit two")
+ shell.UpdateFileAndAdd("myfile", "three")
+ shell.Commit("commit three")
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("commit three").IsSelected(),
+ Contains("commit two"),
+ Contains("commit one"),
+ ).
+ Press(keys.Commits.MoveDownCommit)
+
+ handleConflictsFromSwap(t)
+ },
+})
diff --git a/pkg/integration/tests/tests_gen.go b/pkg/integration/tests/tests_gen.go
index 6a8e8e5af..6a7e36373 100644
--- a/pkg/integration/tests/tests_gen.go
+++ b/pkg/integration/tests/tests_gen.go
@@ -74,11 +74,16 @@ var tests = []*components.IntegrationTest{
interactive_rebase.EditFirstCommit,
interactive_rebase.FixupFirstCommit,
interactive_rebase.FixupSecondCommit,
- interactive_rebase.One,
+ interactive_rebase.Move,
+ interactive_rebase.MoveInRebase,
+ interactive_rebase.Rebase,
interactive_rebase.RewordFirstCommit,
+ interactive_rebase.RewordLastCommit,
interactive_rebase.SquashDownFirstCommit,
interactive_rebase.SquashDownSecondCommit,
interactive_rebase.SquashFixupsAboveFirstCommit,
+ interactive_rebase.SwapInRebaseWithConflict,
+ interactive_rebase.SwapWithConflict,
misc.ConfirmOnQuit,
misc.InitialOpen,
patch_building.CopyPatchToClipboard,