mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-08-28 10:15:32 -05:00
`git worktree list` reports the main worktree as the common git dir with a trailing "/.git" removed, which equals the working tree only when the git dir sits inside it. In a submodule, a bare repo, or a repo using core.worktree it doesn't, so comparing the reported path against the working tree path matches nothing: no worktree is recognized as current or as main. Most visibly, inside a submodule lazygit claimed we were in a linked worktree named after the submodule, and offered to remove that "worktree". Comparing git dirs identifies a worktree unambiguously, so use that. A worktree whose directory is gone has no git dir to compare, and there we still have nothing better than its path. The submodule tests were asserting the linked-worktree suffix in the status view; it is gone now, and the repo name still says which submodule we're in. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package submodule
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
)
|
|
|
|
var EnterNested = NewIntegrationTest(NewIntegrationTestArgs{
|
|
Description: "Enter a nested submodule",
|
|
ExtraCmdArgs: []string{},
|
|
Skip: false,
|
|
SetupConfig: func(cfg *config.AppConfig) {},
|
|
SetupRepo: func(shell *Shell) {
|
|
setupNestedSubmodules(shell)
|
|
},
|
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
|
t.Views().Submodules().Focus().
|
|
Lines(
|
|
Equals("outerSubName").IsSelected(),
|
|
Equals(" - innerSubName"),
|
|
).
|
|
Tap(func() {
|
|
t.Views().Main().ContainsLines(
|
|
Contains("Name: outerSubName"),
|
|
Contains("Path: modules/outerSubPath"),
|
|
Contains("Url: ../outerSubmodule"),
|
|
)
|
|
}).
|
|
SelectNextItem().
|
|
Tap(func() {
|
|
t.Views().Main().ContainsLines(
|
|
Contains("Name: outerSubName/innerSubName"),
|
|
Contains("Path: modules/outerSubPath/modules/innerSubPath"),
|
|
Contains("Url: ../innerSubmodule"),
|
|
)
|
|
}).
|
|
// enter the nested submodule
|
|
PressEnter()
|
|
|
|
t.Views().Status().Content(Contains("innerSubPath"))
|
|
t.Views().Commits().ContainsLines(
|
|
Contains("initial inner commit"),
|
|
)
|
|
|
|
t.Views().Files().PressEscape()
|
|
t.Views().Status().Content(Contains("repo"))
|
|
},
|
|
})
|