Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var FetchPrune = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Fetch from the remote with the 'prune' option set in the git config", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.SetConfig("fetch.prune", "true") shell.EmptyCommit("my commit message") shell.NewBranch("branch_to_remove") shell.Checkout("master") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.SetBranchUpstream("branch_to_remove", "origin/branch_to_remove") shell.RemoveRemoteBranch("origin", "branch_to_remove") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Branches(). Lines( Contains("master"), Contains("branch_to_remove").DoesNotContain("upstream gone"), ) t.Views().Files(). IsFocused(). Press(keys.Files.Fetch) t.Views().Branches(). Lines( Contains("master"), Contains("branch_to_remove").Contains("upstream gone"), ) }, })
View Source
var FetchWhenSortedByDate = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Fetch a branch while sort order is by date; verify that branch stays selected", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell. EmptyCommitWithDate("commit", "2023-04-07 10:00:00"). EmptyCommitWithDate("commit", "2023-04-07 12:00:00"). NewBranch("branch1"). EmptyCommitWithDate("commit", "2023-04-07 11:00:00"). NewBranch("branch2"). Checkout("master"). CloneIntoRemote("origin"). SetBranchUpstream("master", "origin/master"). HardReset("HEAD^"). Checkout("branch1") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Branches(). Focus(). Press(keys.Branches.SortOrder) t.ExpectPopup().Menu().Title(Equals("Sort order")). Select(Contains("-committerdate")). Confirm() t.Views().Branches(). Lines( Contains("* branch1").IsSelected(), Contains("branch2"), Contains("master ↓1"), ). NavigateToLine(Contains("master")). Press(keys.Branches.FetchRemote). Lines( Contains("* branch1"), Contains("master").IsSelected(), Contains("branch2"), ) }, })
View Source
var ForcePush = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push to a remote with new commits, requiring a force push", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.EmptyCommit("two") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Equals("↓1 repo → master")) t.Views().Files().IsFocused().Press(keys.Universal.Push) t.ExpectPopup().Confirmation(). Title(Equals("Force push")). Content(Equals("Your branch has diverged from the remote branch. Press <esc> to cancel, or <enter> to force push.")). Confirm() t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Equals("✓ repo → master")) t.Views().Remotes().Focus(). Lines(Contains("origin")). PressEnter() t.Views().RemoteBranches().IsFocused(). Lines(Contains("master")). PressEnter() t.Views().SubCommits().IsFocused(). Lines(Contains("one")) }, })
View Source
var ForcePushMultipleMatching = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Force push to multiple branches because the user has push.default matching", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) { }, SetupRepo: func(shell *Shell) { shell.SetConfig("push.default", "matching") createTwoBranchesReadyToForcePush(shell) }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Equals("↓1 repo → master")) t.Views().Branches(). Lines( Contains("master ↓1"), Contains("other_branch ↓1"), ) t.Views().Files().IsFocused().Press(keys.Universal.Push) t.ExpectPopup().Confirmation(). Title(Equals("Force push")). Content(Equals("Your branch has diverged from the remote branch. Press <esc> to cancel, or <enter> to force push.")). Confirm() t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Equals("✓ repo → master")) t.Views().Branches(). Lines( Contains("master ✓"), Contains("other_branch ✓"), ) }, })
View Source
var ForcePushMultipleUpstream = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Force push to only the upstream branch of the current branch because the user has push.default upstream", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.SetConfig("push.default", "upstream") createTwoBranchesReadyToForcePush(shell) }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Equals("↓1 repo → master")) t.Views().Branches(). Lines( Contains("master ↓1"), Contains("other_branch ↓1"), ) t.Views().Files().IsFocused().Press(keys.Universal.Push) t.ExpectPopup().Confirmation(). Title(Equals("Force push")). Content(Equals("Your branch has diverged from the remote branch. Press <esc> to cancel, or <enter> to force push.")). Confirm() t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Equals("✓ repo → master")) t.Views().Branches(). Lines( Contains("master ✓"), Contains("other_branch ↓1"), ) }, })
View Source
var ForcePushRemoteBranchNotStoredLocally = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push a branch whose remote branch is not stored locally, requiring a force push", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.EmptyCommit("two") shell.Clone("some-remote") shell.HardReset("HEAD^") shell.SetConfig("branch.master.remote", "../some-remote") shell.SetConfig("branch.master.pushRemote", "../some-remote") shell.SetConfig("branch.master.merge", "refs/heads/master") shell.CreateFileAndAdd("file1", "file1 content") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Contains("? repo → master")) t.Views().Files().IsFocused().Press(keys.Universal.Push) t.ExpectPopup().Confirmation(). Title(Equals("Force push")). Content(Equals("Your branch has diverged from the remote branch. Press <esc> to cancel, or <enter> to force push.")). Confirm() t.Views().Files().IsFocused().Press(keys.Files.CommitChanges) t.ExpectPopup().CommitMessagePanel().Type("new").Confirm() t.Views().Commits(). Lines( Contains("new"), Contains("one"), ) t.Views().Files().IsFocused().Press(keys.Universal.Push) t.Views().Remotes().Focus(). Press(keys.Universal.New) t.ExpectPopup().Prompt(). Title(Equals("New remote name:")).Type("some-remote").Confirm() t.ExpectPopup().Prompt(). Title(Equals("New remote url:")).Type("../some-remote").Confirm() t.Views().Remotes().Lines( Contains("some-remote").IsSelected(), ). PressEnter() t.Views().RemoteBranches().IsFocused().Lines( Contains("master").IsSelected(), ). PressEnter() t.Views().SubCommits().IsFocused().Lines( Contains("new"), Contains("one"), ) }, })
View Source
var ForcePushTriangular = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push to a remote, requiring a force push because the branch is behind the remote push branch but not the upstream", ExtraCmdArgs: []string{}, Skip: false, GitVersion: AtLeast("2.22.0"), SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.SetConfig("push.default", "current") shell.EmptyCommit("one") shell.CloneIntoRemote("origin") shell.NewBranch("feature") shell.SetBranchUpstream("feature", "origin/master") shell.EmptyCommit("two") shell.PushBranch("origin", "feature") shell.HardReset("HEAD^") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Contains("✓ repo → feature")) t.Views().Files().IsFocused().Press(keys.Universal.Push) t.ExpectPopup().Confirmation(). Title(Equals("Force push")). Content(Equals("Your branch has diverged from the remote branch. Press <esc> to cancel, or <enter> to force push.")). Confirm() t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Contains("✓ repo → feature")) t.Views().Remotes().Focus(). Lines(Contains("origin")). PressEnter() t.Views().RemoteBranches().IsFocused(). Lines( Contains("feature"), Contains("master"), ). PressEnter() t.Views().SubCommits().IsFocused(). Lines(Contains("one")) }, })
View Source
var Pull = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Pull a commit from the remote", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.EmptyCommit("two") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Equals("↓1 repo → master")) t.Views().Files().IsFocused().Press(keys.Universal.Pull) t.Views().Commits(). Lines( Contains("two"), Contains("one"), ) t.Views().Status().Content(Equals("✓ repo → master")) }, })
View Source
var PullAndSetUpstream = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Pull a commit from the remote, setting the upstream branch in the process", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.EmptyCommit("two") shell.CloneIntoRemote("origin") shell.HardReset("HEAD^") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("one"), ) t.Views().Status().Content(Equals("repo → master")) t.Views().Files().IsFocused().Press(keys.Universal.Pull) t.ExpectPopup().Prompt(). Title(Equals("Enter upstream as '<remote> <branchname>'")). SuggestionLines(Equals("origin master")). ConfirmFirstSuggestion() t.Views().Commits(). Lines( Contains("two"), Contains("one"), ) t.Views().Status().Content(Equals("✓ repo → master")) }, })
View Source
var PullMerge = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Pull with a merge strategy", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.CreateFileAndAdd("file", "content1") shell.Commit("one") shell.UpdateFileAndAdd("file", "content2") shell.Commit("two") shell.EmptyCommit("three") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^^") shell.EmptyCommit("four") shell.SetConfig("pull.rebase", "false") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("four"), Contains("one"), ) t.Views().Status().Content(Equals("↓2↑1 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Pull) t.Views().Status().Content(Equals("↑2 repo → master")) t.Views().Commits(). Lines( Contains("Merge branch 'master' of ../origin"), Contains("three"), Contains("two"), Contains("four"), Contains("one"), ) }, })
View Source
var PullMergeConflict = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Pull with a merge strategy, where a conflict occurs", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.CreateFileAndAdd("file", "content1") shell.Commit("one") shell.UpdateFileAndAdd("file", "content2") shell.Commit("two") shell.EmptyCommit("three") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^^") shell.UpdateFileAndAdd("file", "content4") shell.Commit("four") shell.SetConfig("pull.rebase", "false") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("four"), Contains("one"), ) t.Views().Status().Content(Equals("↓2↑1 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Pull) t.Common().AcknowledgeConflicts() t.Views().Files(). IsFocused(). Lines( Contains("UU").Contains("file"), ). PressEnter() t.Views().MergeConflicts(). IsFocused(). TopLines( Contains("<<<<<<< HEAD"), Contains("content4"), Contains("======="), Contains("content2"), Contains(">>>>>>>"), ). PressPrimaryAction() t.Common().ContinueOnConflictsResolved() t.Views().Status().Content(Equals("↑2 repo → master")) t.Views().Commits(). Focus(). Lines( Contains("Merge branch 'master' of ../origin").IsSelected(), Contains("three"), Contains("two"), Contains("four"), Contains("one"), ) t.Views().Main(). Content( Contains("- content4"). Contains(" -content2"). Contains("++content4"), ) }, })
View Source
var PullRebase = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Pull with a rebase strategy", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.CreateFileAndAdd("file", "content1") shell.Commit("one") shell.UpdateFileAndAdd("file", "content2") shell.Commit("two") shell.CreateFileAndAdd("file3", "content3") shell.Commit("three") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^^") shell.CreateFileAndAdd("file4", "content4") shell.Commit("four") shell.SetConfig("pull.rebase", "true") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("four"), Contains("one"), ) t.Views().Status().Content(Equals("↓2↑1 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Pull) t.Views().Status().Content(Equals("↑1 repo → master")) t.Views().Commits(). Lines( Contains("four"), Contains("three"), Contains("two"), Contains("one"), ) }, })
View Source
var PullRebaseConflict = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Pull with a rebase strategy, where a conflict occurs", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.CreateFileAndAdd("file", "content1") shell.Commit("one") shell.UpdateFileAndAdd("file", "content2") shell.Commit("two") shell.EmptyCommit("three") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^^") shell.UpdateFileAndAdd("file", "content4") shell.Commit("four") shell.SetConfig("pull.rebase", "true") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("four"), Contains("one"), ) t.Views().Status().Content(Equals("↓2↑1 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Pull) t.Common().AcknowledgeConflicts() t.Views().Files(). IsFocused(). Lines( Contains("UU").Contains("file"), ). PressEnter() t.Views().MergeConflicts(). IsFocused(). TopLines( Contains("<<<<<<< HEAD"), Contains("content2"), Contains("======="), Contains("content4"), Contains(">>>>>>>"), ). SelectNextItem(). PressPrimaryAction() t.Common().ContinueOnConflictsResolved() t.Views().Status().Content(Equals("↑1 repo → master")) t.Views().Commits(). Focus(). Lines( Contains("four").IsSelected(), Contains("three"), Contains("two"), Contains("one"), ) t.Views().Main(). Content( Contains("-content2"). Contains("+content4"), ) }, })
View Source
var PullRebaseInteractiveConflict = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Pull with an interactive rebase strategy, where a conflict occurs", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.CreateFileAndAdd("file", "content1") shell.Commit("one") shell.UpdateFileAndAdd("file", "content2") shell.Commit("two") shell.CreateFileAndAdd("file3", "content3") shell.Commit("three") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^^") shell.UpdateFileAndAdd("file", "content4") shell.Commit("four") shell.CreateFileAndAdd("file5", "content5") shell.Commit("five") shell.SetConfig("pull.rebase", "interactive") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("five"), Contains("four"), Contains("one"), ) t.Views().Status().Content(Equals("↓2↑2 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Pull) t.Common().AcknowledgeConflicts() t.Views().Commits(). Lines( Contains("pick").Contains("five"), Contains("conflict").Contains("YOU ARE HERE").Contains("four"), Contains("three"), Contains("two"), Contains("one"), ) t.Views().Files(). IsFocused(). Lines( Contains("UU").Contains("file"), ). PressEnter() t.Views().MergeConflicts(). IsFocused(). TopLines( Contains("<<<<<<< HEAD"), Contains("content2"), Contains("======="), Contains("content4"), Contains(">>>>>>>"), ). SelectNextItem(). PressPrimaryAction() t.Common().ContinueOnConflictsResolved() t.Views().Status().Content(Equals("↑2 repo → master")) t.Views().Commits(). Focus(). Lines( Contains("five").IsSelected(), Contains("four"), Contains("three"), Contains("two"), Contains("one"), ). SelectNextItem() t.Views().Main(). Content( Contains("-content2"). Contains("+content4"), ) }, })
View Source
var PullRebaseInteractiveConflictDrop = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Pull with an interactive rebase strategy, where a conflict occurs. Also drop a commit while rebasing", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.CreateFileAndAdd("file", "content1") shell.Commit("one") shell.UpdateFileAndAdd("file", "content2") shell.Commit("two") shell.CreateFileAndAdd("file3", "content3") shell.Commit("three") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^^") shell.UpdateFileAndAdd("file", "content4") shell.Commit("four") shell.CreateFileAndAdd("fil5", "content5") shell.Commit("five") shell.SetConfig("pull.rebase", "interactive") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("five"), Contains("four"), Contains("one"), ) t.Views().Status().Content(Equals("↓2↑2 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Pull) t.Common().AcknowledgeConflicts() t.Views().Commits(). Focus(). Lines( Contains("pick").Contains("five").IsSelected(), Contains("conflict").Contains("YOU ARE HERE").Contains("four"), Contains("three"), Contains("two"), Contains("one"), ). Press(keys.Universal.Remove). Lines( Contains("drop").Contains("five").IsSelected(), Contains("conflict").Contains("YOU ARE HERE").Contains("four"), Contains("three"), Contains("two"), Contains("one"), ) t.Views().Files(). Focus(). Lines( Contains("UU").Contains("file"), ). PressEnter() t.Views().MergeConflicts(). IsFocused(). TopLines( Contains("<<<<<<< HEAD"), Contains("content2"), Contains("======="), Contains("content4"), Contains(">>>>>>>"), ). SelectNextItem(). PressPrimaryAction() t.Common().ContinueOnConflictsResolved() t.Views().Status().Content(Equals("↑1 repo → master")) t.Views().Commits(). Focus(). Lines( Contains("four").IsSelected(), Contains("three"), Contains("two"), Contains("one"), ) t.Views().Main(). Content( Contains("-content2"). Contains("+content4"), ) }, })
View Source
var Push = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push a commit to a pre-configured upstream", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) { }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.EmptyCommit("two") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Status().Content(Equals("↑1 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Push) assertSuccessfullyPushed(t) }, })
View Source
var PushAndAutoSetUpstream = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push a commit and set the upstream automatically as configured by git", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) { }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.CloneIntoRemote("origin") shell.EmptyCommit("two") shell.SetConfig("push.default", "current") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Status().Content(Equals("repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Push) assertSuccessfullyPushed(t) }, })
View Source
var PushAndSetUpstream = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push a commit and set the upstream via a prompt", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.CloneIntoRemote("origin") shell.EmptyCommit("two") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Status().Content(Equals("repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Push) t.ExpectPopup().Prompt(). Title(Equals("Enter upstream as '<remote> <branchname>'")). SuggestionLines(Equals("origin master")). ConfirmFirstSuggestion() assertSuccessfullyPushed(t) }, })
View Source
var PushFollowTags = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push with --follow-tags configured in git config", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) { }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.EmptyCommit("two") shell.CreateAnnotatedTag("mytag", "message", "HEAD") shell.SetConfig("push.followTags", "true") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Status().Content(Equals("↑1 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Push) t.Views().Status().Content(Equals("✓ repo → master")) t.Views().Remotes(). Focus(). Lines( Contains("origin"), ). PressEnter() t.Views().RemoteBranches(). IsFocused(). Lines( Contains("master"), ). PressEnter() t.Views().SubCommits(). IsFocused(). Lines( Contains("two").Contains("mytag"), Contains("one"), ) }, })
View Source
var PushNoFollowTags = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push with --follow-tags NOT configured in git config", ExtraCmdArgs: []string{}, Skip: true, SetupConfig: func(config *config.AppConfig) { }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.EmptyCommit("two") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.CreateAnnotatedTag("mytag", "message", "HEAD") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Status().Content(Equals("✓ repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Push) t.Views().Status().Content(Equals("✓ repo → master")) t.Views().Remotes(). Focus(). Lines( Contains("origin"), ). PressEnter() t.Views().RemoteBranches(). IsFocused(). Lines( Contains("master"), ). PressEnter() t.Views().SubCommits(). IsFocused(). Lines( Contains("two").DoesNotContain("mytag"), Contains("one"), ) }, })
View Source
var PushTag = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push a specific tag", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) { }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.EmptyCommit("two") shell.CloneIntoRemote("origin") shell.CreateAnnotatedTag("mytag", "message", "HEAD") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Tags(). Focus(). Lines( Contains("mytag"), ). Press(keys.Branches.PushTag) t.ExpectPopup().Prompt(). Title(Equals("Remote to push tag 'mytag' to:")). InitialText(Equals("origin")). SuggestionLines( Contains("origin"), ). Confirm() t.Views().Remotes(). Focus(). Lines( Contains("origin"), ). PressEnter() t.Views().RemoteBranches(). IsFocused(). Lines( Contains("master"), ). PressEnter() t.Views().SubCommits(). IsFocused(). Lines( Contains("two").Contains("mytag"), Contains("one"), ) }, })
View Source
var PushWithCredentialPrompt = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Push a commit to a pre-configured upstream, where credentials are required", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) { }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.EmptyCommit("two") shell.CopyHelpFile("pre-push", ".git/hooks/pre-push") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Status().Content(Equals("↑1 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Push) t.ExpectPopup().Prompt(). Title(Equals("Username")). Type("username"). Confirm() t.ExpectPopup().Prompt(). Title(Equals("Password")). Type("incorrect password"). Confirm() t.ExpectPopup().Alert(). Title(Equals("Error")). Content(Contains("incorrect username/password")). Confirm() t.Views().Status().Content(Equals("↑1 repo → master")) t.Views().Files(). IsFocused(). Press(keys.Universal.Push) t.ExpectPopup().Prompt(). Title(Equals("Username")). Type("username"). Confirm() t.ExpectPopup().Prompt(). Title(Equals("Password")). Type("password"). Confirm() t.Views().Status().Content(Equals("✓ repo → master")) assertSuccessfullyPushed(t) }, })
View Source
var RenameBranchAndPull = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Rename a branch to no longer match its upstream, then pull from the upstream", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("one") shell.EmptyCommit("two") shell.CloneIntoRemote("origin") shell.SetBranchUpstream("master", "origin/master") shell.HardReset("HEAD^") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Commits(). Lines( Contains("one"), ) t.Views().Branches(). Focus(). Lines( Contains("master"), ). Press(keys.Branches.RenameBranch). Tap(func() { t.ExpectPopup().Confirmation(). Title(Equals("Rename branch")). Content(Equals("This branch is tracking a remote. This action will only rename the local branch name, not the name of the remote branch. Continue?")). Confirm() t.ExpectPopup().Prompt(). Title(Contains("Enter new branch name")). InitialText(Equals("master")). Type("-local"). Confirm() }). Press(keys.Universal.Pull) t.Views().Commits(). Lines( Contains("two"), Contains("one"), ) }, })
Functions ¶
This section is empty.
Types ¶
This section is empty.
Source Files
¶
- fetch_prune.go
- fetch_when_sorted_by_date.go
- force_push.go
- force_push_multiple_matching.go
- force_push_multiple_upstream.go
- force_push_remote_branch_not_stored_locally.go
- force_push_triangular.go
- pull.go
- pull_and_set_upstream.go
- pull_merge.go
- pull_merge_conflict.go
- pull_rebase.go
- pull_rebase_conflict.go
- pull_rebase_interactive_conflict.go
- pull_rebase_interactive_conflict_drop.go
- push.go
- push_and_auto_set_upstream.go
- push_and_set_upstream.go
- push_follow_tags.go
- push_no_follow_tags.go
- push_tag.go
- push_with_credential_prompt.go
- rename_branch_and_pull.go
- shared.go
Click to show internal directories.
Click to hide internal directories.