interactive_rebase

package
v0.0.0-...-8fc5405 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2023 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BASE_BRANCH = "base-branch"
	TOP_BRANCH  = "top-branch"
	BASE_COMMIT = "base-commit"
	TOP_COMMIT  = "top-commit"
)

Variables

View Source
var AdvancedInteractiveRebase = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "It begins an interactive rebase and verifies to have the possibility of editing the commits of the branch before proceeding with the actual rebase",
	ExtraCmdArgs: "",
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.
			NewBranch(BASE_BRANCH).
			EmptyCommit(BASE_COMMIT).
			NewBranch(TOP_BRANCH).
			EmptyCommit(TOP_COMMIT)
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains(TOP_COMMIT),
				Contains(BASE_COMMIT),
			)

		t.Views().Branches().
			Focus().
			NavigateToLine(Contains(BASE_BRANCH)).
			Press(keys.Branches.RebaseBranch)

		t.ExpectPopup().Menu().
			Title(Equals(fmt.Sprintf("Rebase '%s' onto '%s'", TOP_BRANCH, BASE_BRANCH))).
			Select(Contains("interactive rebase")).
			Confirm()
		t.Views().Commits().
			IsFocused().
			Lines(
				Contains(TOP_COMMIT),
				Contains(BASE_COMMIT).Contains("YOU ARE HERE"),
			).
			NavigateToLine(Contains(TOP_COMMIT)).
			Press(keys.Universal.Edit).
			Lines(
				Contains(TOP_COMMIT).Contains("edit"),
				Contains(BASE_COMMIT).Contains("YOU ARE HERE"),
			).
			Tap(func() {
				t.Common().ContinueRebase()
			}).
			Lines(
				Contains(TOP_COMMIT).Contains("YOU ARE HERE"),
				Contains(BASE_COMMIT),
			)
	},
})
View Source
var AmendFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Amends a staged file to the first (initial) commit.",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.
			CreateNCommits(2).
			CreateFileAndAdd("fixup-file", "fixup content")
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("commit 02"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 01")).
			Press(keys.Commits.AmendToCommit).
			Tap(func() {
				t.ExpectPopup().Confirmation().
					Title(Equals("Amend Commit")).
					Content(Contains("Are you sure you want to amend this commit with your staged files?")).
					Confirm()
			}).
			Lines(
				Contains("commit 02"),
				Contains("commit 01").IsSelected(),
			)

		t.Views().Main().
			Content(Contains("fixup content"))
	},
})
View Source
var AmendHeadCommitDuringRebase = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Amends the current head commit from the commits panel during a rebase.",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.CreateNCommits(3)
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("commit 03"),
				Contains("commit 02"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 02")).
			Press(keys.Universal.Edit).
			Lines(
				Contains("commit 03"),
				Contains("<-- YOU ARE HERE --- commit 02").IsSelected(),
				Contains("commit 01"),
			)

		t.Shell().CreateFile("fixup-file", "fixup content")
		t.Views().Files().
			Focus().
			Press(keys.Files.RefreshFiles).
			Lines(
				Contains("??").Contains("fixup-file").IsSelected(),
			).
			PressPrimaryAction()

		t.Views().Commits().
			Focus().
			Press(keys.Commits.AmendToCommit).
			Tap(func() {
				t.ExpectPopup().Confirmation().
					Title(Equals("Amend Last Commit")).
					Content(Contains("Are you sure you want to amend last commit?")).
					Confirm()
			}).
			Lines(
				Contains("commit 03"),
				Contains("<-- YOU ARE HERE --- commit 02").IsSelected(),
				Contains("commit 01"),
			)

		t.Views().Main().
			Content(Contains("fixup content"))
	},
})
View Source
var AmendMerge = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Amends a staged file to a merge commit.",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.
			NewBranch("development-branch").
			CreateFileAndAdd("initial-file", "initial file content").
			Commit("initial commit").
			NewBranch("feature-branch").
			CreateFileAndAdd("new-feature-file", "new content").
			Commit("new feature commit").
			Checkout("development-branch").
			Merge("feature-branch").
			CreateFileAndAdd(postMergeFilename, postMergeFileContent)
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		mergeCommitMessage := "Merge branch 'feature-branch' into development-branch"

		t.Views().Commits().
			Lines(
				Contains(mergeCommitMessage),
				Contains("new feature commit"),
				Contains("initial commit"),
			)

		t.Views().Commits().
			Focus().
			Press(keys.Commits.AmendToCommit)

		t.ExpectPopup().Confirmation().
			Title(Equals("Amend Last Commit")).
			Content(Contains("Are you sure you want to amend last commit?")).
			Confirm()

		t.Views().Commits().
			Lines(
				Contains(mergeCommitMessage),
				Contains("new feature commit"),
				Contains("initial commit"),
			)

		t.Views().Main().
			Content(Contains(postMergeFilename)).
			Content(Contains("++" + postMergeFileContent))
	},
})
View Source
var AmendNonHeadCommitDuringRebase = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Tries to amend a commit that is not the head while already rebasing, resulting in an error message",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.CreateNCommits(3)
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("commit 03"),
				Contains("commit 02"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 02")).
			Press(keys.Universal.Edit).
			Lines(
				Contains("commit 03"),
				Contains("<-- YOU ARE HERE --- commit 02"),
				Contains("commit 01"),
			)

		for _, commit := range []string{"commit 01", "commit 03"} {
			t.Views().Commits().
				NavigateToLine(Contains(commit)).
				Press(keys.Commits.AmendToCommit)

			t.ExpectPopup().Alert().
				Title(Equals("Error")).
				Content(Contains("Can't perform this action during a rebase")).
				Confirm()
		}
	},
})
View Source
var DropTodoCommitWithUpdateRef = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Drops a commit during interactive rebase when there is an update-ref in the git-rebase-todo file",
	ExtraCmdArgs: "",
	Skip:         false,
	GitVersion:   From("2.38.0"),
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.
			CreateNCommits(3).
			NewBranch("mybranch").
			CreateNCommitsStartingAt(3, 4)

		shell.SetConfig("rebase.updateRefs", "true")
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("(*) commit 06").IsSelected(),
				Contains("commit 05"),
				Contains("commit 04"),
				Contains("(*) commit 03"),
				Contains("commit 02"),
				Contains("commit 01"),
			).
			Tap(func() {
				t.GlobalPress(keys.Universal.ExecuteCustomCommand)
				t.ExpectPopup().Prompt().
					Title(Equals("Custom Command:")).
					Type(`git -c core.editor="perl -i -lpe 'print \"break\" if $.==1'" rebase -i HEAD~5`).
					Confirm()
			}).
			Focus().
			Lines(
				Contains("pick").Contains("(*) commit 06"),
				Contains("pick").Contains("commit 05"),
				Contains("pick").Contains("commit 04"),
				Contains("update-ref").Contains("master"),
				Contains("pick").Contains("(*) commit 03"),
				Contains("pick").Contains("commit 02"),
				Contains("<-- YOU ARE HERE --- commit 01"),
			).
			NavigateToLine(Contains("commit 05")).
			Press(keys.Universal.Remove)

		t.Common().ContinueRebase()

		t.Views().Commits().
			IsFocused().
			Lines(
				Contains("(*) commit 06"),
				Contains("commit 04"),
				Contains("(*) commit 03"),
				Contains("commit 02"),
				Contains("commit 01"),
			)
	},
})
View Source
var EditFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Edits the first commit, just to show that it's possible",
	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"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 01")).
			Press(keys.Universal.Edit).
			Lines(
				Contains("commit 02"),
				MatchesRegexp("YOU ARE HERE.*commit 01").IsSelected(),
			).
			Tap(func() {
				t.Common().ContinueRebase()
			}).
			Lines(
				Contains("commit 02"),
				Contains("commit 01"),
			)
	},
})
View Source
var EditNonTodoCommitDuringRebase = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Tries to edit a non-todo commit while already rebasing, resulting in an error message",
	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.Universal.Edit).
			Lines(
				Contains("<-- YOU ARE HERE --- commit 02"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 01")).
			Press(keys.Universal.Edit)

		t.ExpectPopup().Alert().
			Title(Equals("Error")).
			Content(Contains("Can't perform this action during a rebase")).
			Confirm()
	},
})
View Source
var FixupFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Tries to fixup the first commit, which results in an error message",
	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"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 01")).
			Press(keys.Commits.MarkCommitAsFixup).
			Tap(func() {
				t.ExpectPopup().Alert().
					Title(Equals("Error")).
					Content(Equals("There's no commit below to squash into")).
					Confirm()
			}).
			Lines(
				Contains("commit 02"),
				Contains("commit 01"),
			)
	},
})
View Source
var FixupSecondCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Fixup the second commit into the first (initial)",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.
			CreateFileAndAdd("file1.txt", "File1 Content\n").Commit("First Commit").
			CreateFileAndAdd("file2.txt", "Fixup Content\n").Commit("Fixup Commit Message").
			CreateFileAndAdd("file3.txt", "File3 Content\n").Commit("Third Commit")
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("Third Commit"),
				Contains("Fixup Commit Message"),
				Contains("First Commit"),
			).
			NavigateToLine(Contains("Fixup Commit Message")).
			Press(keys.Commits.MarkCommitAsFixup).
			Tap(func() {
				t.ExpectPopup().Confirmation().
					Title(Equals("Fixup")).
					Content(Equals("Are you sure you want to 'fixup' this commit? It will be merged into the commit below")).
					Confirm()
			}).
			Lines(
				Contains("Third Commit"),
				Contains("First Commit").IsSelected(),
			)

		t.Views().Main().
			Content(Contains("First Commit")).
			Content(DoesNotContain("Fixup Commit Message")).
			Content(Contains("+File1 Content")).
			Content(Contains("+Fixup Content"))
	},
})
View Source
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(),
			).
			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"),
			).
			Press(keys.Commits.MoveUpCommit).
			Lines(
				Contains("commit 04").IsSelected(),
				Contains("commit 03"),
				Contains("commit 02"),
				Contains("commit 01"),
			)
	},
})
View Source
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"),
			).
			NavigateToLine(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).
			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"),
			).
			Press(keys.Commits.MoveDownCommit).
			Lines(
				Contains("commit 04"),
				Contains("commit 03"),
				Contains("commit 02").IsSelected(),
				Contains("YOU ARE HERE").Contains("commit 01"),
			).
			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.Common().ContinueRebase()
			}).
			Lines(
				Contains("commit 04"),
				Contains("commit 02").IsSelected(),
				Contains("commit 03"),
				DoesNotContain("YOU ARE HERE").Contains("commit 01"),
			)
	},
})
View Source
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"),
			).
			NavigateToLine(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.Common().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.Common().ContinueRebase()
			}).
			Lines(
				Contains("second commit to edit").IsSelected(),
				Contains("first commit to edit"),
				Contains("initial commit"),
			).
			Tap(func() {

				t.Views().Main().Content(
					Contains("second commit to edit").
						Contains("fixup-commit-file").
						DoesNotContain("commit to fixup"),
				)
			}).
			SelectNextItem().
			Tap(func() {

				t.Views().Main().Content(
					Contains("first commit to edit").
						Contains("commit to squash"),
				)
			})
	},
})
View Source
var RewordFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Rewords the first commit, just to show that it's possible",
	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"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 01")).
			Press(keys.Commits.RenameCommit).
			Tap(func() {
				t.ExpectPopup().Prompt().
					Title(Equals("reword commit")).
					InitialText(Equals("commit 01")).
					Clear().
					Type("renamed 01").
					Confirm()
			}).
			Lines(
				Contains("commit 02"),
				Contains("renamed 01"),
			)
	},
})
View Source
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"),
			)
	},
})
View Source
var RewordYouAreHereCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Rewords the current HEAD commit in an interactive rebase",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.
			CreateNCommits(3)
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("commit 03").IsSelected(),
				Contains("commit 02"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 02")).
			Press(keys.Universal.Edit).
			Lines(
				Contains("commit 03"),
				Contains("<-- YOU ARE HERE --- 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("commit 03"),
				Contains("<-- YOU ARE HERE --- renamed 02").IsSelected(),
				Contains("commit 01"),
			)
	},
})
View Source
var RewordYouAreHereCommitWithEditor = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Rewords the current HEAD commit in an interactive rebase with editor",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig: func(config *config.AppConfig) {
	},
	SetupRepo: func(shell *Shell) {
		shell.
			CreateNCommits(3).
			SetConfig("core.editor", "sh -c 'echo renamed 02 >.git/COMMIT_EDITMSG'")
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("commit 03").IsSelected(),
				Contains("commit 02"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 02")).
			Press(keys.Universal.Edit).
			Lines(
				Contains("commit 03"),
				Contains("<-- YOU ARE HERE --- commit 02").IsSelected(),
				Contains("commit 01"),
			).
			Press(keys.Commits.RenameCommitWithEditor).
			Tap(func() {
				t.ExpectPopup().Confirmation().
					Title(Equals("Reword in editor")).
					Content(Contains("Are you sure you want to reword this commit in your editor?")).
					Confirm()
			}).
			Lines(
				Contains("commit 03"),
				Contains("<-- YOU ARE HERE --- renamed 02").IsSelected(),
				Contains("commit 01"),
			)
	},
})
View Source
var SquashDownFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Tries to squash down the first commit, which results in an error message",
	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"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 01")).
			Press(keys.Commits.SquashDown).
			Tap(func() {
				t.ExpectPopup().Alert().
					Title(Equals("Error")).
					Content(Equals("There's no commit below to squash into")).
					Confirm()
			}).
			Lines(
				Contains("commit 02"),
				Contains("commit 01"),
			)
	},
})
View Source
var SquashDownSecondCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Squash down the second commit into the first (initial)",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.
			CreateNCommits(3)
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("commit 03"),
				Contains("commit 02"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 02")).
			Press(keys.Commits.SquashDown).
			Tap(func() {
				t.ExpectPopup().Confirmation().
					Title(Equals("Squash")).
					Content(Equals("Are you sure you want to squash this commit into the commit below?")).
					Confirm()
			}).
			Lines(
				Contains("commit 03"),
				Contains("commit 01").IsSelected(),
			)

		t.Views().Main().
			Content(Contains("    commit 01\n    \n    commit 02")).
			Content(Contains("+file01 content")).
			Content(Contains("+file02 content"))
	},
})
View Source
var SquashFixupsAboveFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{
	Description:  "Squashes all fixups above the first (initial) commit.",
	ExtraCmdArgs: "",
	Skip:         false,
	SetupConfig:  func(config *config.AppConfig) {},
	SetupRepo: func(shell *Shell) {
		shell.
			CreateNCommits(2).
			CreateFileAndAdd("fixup-file", "fixup content")
	},
	Run: func(t *TestDriver, keys config.KeybindingConfig) {
		t.Views().Commits().
			Focus().
			Lines(
				Contains("commit 02"),
				Contains("commit 01"),
			).
			NavigateToLine(Contains("commit 01")).
			Press(keys.Commits.CreateFixupCommit).
			Tap(func() {
				t.ExpectPopup().Confirmation().
					Title(Equals("Create fixup commit")).
					Content(Contains("Are you sure you want to create a fixup! commit for commit")).
					Confirm()
			}).
			NavigateToLine(Contains("commit 01")).
			Press(keys.Commits.SquashAboveCommits).
			Tap(func() {
				t.ExpectPopup().Confirmation().
					Title(Equals("Squash all 'fixup!' commits above selected commit (autosquash)")).
					Content(Contains("Are you sure you want to squash all fixup! commits above")).
					Confirm()
			}).
			Lines(
				Contains("commit 02"),
				Contains("commit 01").IsSelected(),
			)

		t.Views().Main().
			Content(Contains("fixup content"))
	},
})
View Source
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"),
			).
			NavigateToLine(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.Common().ContinueRebase()
			})

		handleConflictsFromSwap(t)
	},
})
View Source
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)
	},
})

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL