mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-01-16 17:11:46 +08:00
We move the code to push the branches context into CheckoutRef, this way it works consistently no matter where we call it from. Previously, checking out remote branches or tags would switch to the branches view, but checking out a commit did not. Note that it now also takes effect for undoing or redoing a checkout, which may be a bit questionable; but I still think it makes sense for this, too.
78 lines
2.0 KiB
Go
78 lines
2.0 KiB
Go
package commit
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
)
|
|
|
|
var Checkout = NewIntegrationTest(NewIntegrationTestArgs{
|
|
Description: "Checkout a commit as a detached head, or checkout an existing branch at a commit",
|
|
ExtraCmdArgs: []string{},
|
|
Skip: false,
|
|
SetupConfig: func(config *config.AppConfig) {
|
|
config.GetUserConfig().Git.LocalBranchSortOrder = "alphabetical"
|
|
},
|
|
SetupRepo: func(shell *Shell) {
|
|
shell.EmptyCommit("one")
|
|
shell.EmptyCommit("two")
|
|
shell.NewBranch("branch1")
|
|
shell.NewBranch("branch2")
|
|
shell.EmptyCommit("three")
|
|
shell.EmptyCommit("four")
|
|
},
|
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("four").IsSelected(),
|
|
Contains("three"),
|
|
Contains("two"),
|
|
Contains("one"),
|
|
).
|
|
PressPrimaryAction()
|
|
|
|
t.ExpectPopup().Menu().
|
|
Title(Contains("Checkout branch or commit")).
|
|
Lines(
|
|
MatchesRegexp("Checkout commit [a-f0-9]+ as detached head").IsSelected(),
|
|
Contains("Checkout branch"),
|
|
Contains("Cancel"),
|
|
).
|
|
Select(Contains("Checkout branch")).
|
|
Tooltip(Contains("Disabled: No branches found at selected commit.")).
|
|
Select(MatchesRegexp("Checkout commit [a-f0-9]+ as detached head")).
|
|
Confirm()
|
|
t.Views().Branches().
|
|
IsFocused().
|
|
Lines(
|
|
Contains("* (HEAD detached at").IsSelected(),
|
|
Contains("branch1"),
|
|
Contains("branch2"),
|
|
Contains("master"),
|
|
)
|
|
|
|
t.Views().Commits().
|
|
Focus().
|
|
NavigateToLine(Contains("two")).
|
|
PressPrimaryAction()
|
|
|
|
t.ExpectPopup().Menu().
|
|
Title(Contains("Checkout branch or commit")).
|
|
Lines(
|
|
MatchesRegexp("Checkout commit [a-f0-9]+ as detached head").IsSelected(),
|
|
Contains("Checkout branch 'branch1'"),
|
|
Contains("Checkout branch 'master'"),
|
|
Contains("Cancel"),
|
|
).
|
|
Select(Contains("Checkout branch 'master'")).
|
|
Confirm()
|
|
t.Views().Branches().
|
|
IsFocused().
|
|
Lines(
|
|
Contains("master").IsSelected(),
|
|
Contains("branch1"),
|
|
Contains("branch2"),
|
|
)
|
|
},
|
|
})
|