mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-08-24 19:39:16 +02:00
Add test for auto-forwarding branches that are checked out by another worktree
The test shows that we are currently auto-forwarding branches even if they are checked out by another worktree; this is quite bad, because when you switch to that other worktree you'll see that the files that are touched by the fetched commits are all modified (which we don't test here).
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package sync
|
||||
|
||||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/config"
|
||||
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||
)
|
||||
|
||||
var FetchAndAutoForwardBranchesAllBranchesCheckedOutInOtherWorktree = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Description: "Fetch from remote and auto-forward branches with config set to 'allBranches'; check that this skips branches checked out by another worktree",
|
||||
ExtraCmdArgs: []string{},
|
||||
Skip: false,
|
||||
SetupConfig: func(config *config.AppConfig) {
|
||||
config.GetUserConfig().Git.AutoForwardBranches = "allBranches"
|
||||
config.GetUserConfig().Git.LocalBranchSortOrder = "alphabetical"
|
||||
},
|
||||
SetupRepo: func(shell *Shell) {
|
||||
shell.CreateNCommits(3)
|
||||
shell.NewBranch("feature")
|
||||
shell.NewBranch("diverged")
|
||||
shell.CloneIntoRemote("origin")
|
||||
shell.SetBranchUpstream("master", "origin/master")
|
||||
shell.SetBranchUpstream("feature", "origin/feature")
|
||||
shell.SetBranchUpstream("diverged", "origin/diverged")
|
||||
shell.Checkout("master")
|
||||
shell.HardReset("HEAD^")
|
||||
shell.Checkout("feature")
|
||||
shell.HardReset("HEAD~2")
|
||||
shell.Checkout("diverged")
|
||||
shell.HardReset("HEAD~2")
|
||||
shell.EmptyCommit("local")
|
||||
shell.NewBranch("checked-out")
|
||||
|
||||
shell.AddWorktreeCheckout("master", "../linked-worktree")
|
||||
},
|
||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||
t.Views().Branches().
|
||||
Lines(
|
||||
Contains("checked-out").IsSelected(),
|
||||
Contains("diverged ↓2↑1"),
|
||||
Contains("feature ↓2").DoesNotContain("↑"),
|
||||
Contains("master (worktree) ↓1").DoesNotContain("↑"),
|
||||
)
|
||||
|
||||
t.Views().Files().
|
||||
IsFocused().
|
||||
Press(keys.Files.Fetch)
|
||||
|
||||
// AutoForwardBranches is "allBranches": both master and feature get forwarded
|
||||
t.Views().Branches().
|
||||
Lines(
|
||||
Contains("checked-out").IsSelected(),
|
||||
Contains("diverged ↓2↑1"),
|
||||
Contains("feature ✓"),
|
||||
/* EXPECTED:
|
||||
Contains("master (worktree) ↓1"),
|
||||
ACTUAL: */
|
||||
Contains("master (worktree) ✓"),
|
||||
)
|
||||
},
|
||||
})
|
@@ -383,6 +383,7 @@ var tests = []*components.IntegrationTest{
|
||||
submodule.Reset,
|
||||
submodule.ResetFolder,
|
||||
sync.FetchAndAutoForwardBranchesAllBranches,
|
||||
sync.FetchAndAutoForwardBranchesAllBranchesCheckedOutInOtherWorktree,
|
||||
sync.FetchAndAutoForwardBranchesNone,
|
||||
sync.FetchAndAutoForwardBranchesOnlyMainBranches,
|
||||
sync.FetchPrune,
|
||||
|
Reference in New Issue
Block a user