diff --git a/pkg/integration/tests/diff/copy_to_clipboard.go b/pkg/integration/tests/diff/copy_to_clipboard.go index 34f2bb95c..0dd53007e 100644 --- a/pkg/integration/tests/diff/copy_to_clipboard.go +++ b/pkg/integration/tests/diff/copy_to_clipboard.go @@ -2,6 +2,7 @@ package diff import ( "os" + "path/filepath" "github.com/jesseduffield/lazygit/pkg/config" . "github.com/jesseduffield/lazygit/pkg/integration/components" @@ -22,6 +23,12 @@ var CopyToClipboard = NewIntegrationTest(NewIntegrationTestArgs{ config.GetUserConfig().OS.CopyToClipboardCmd = "printf '%s' {{text}} > clipboard" }, SetupRepo: func(shell *Shell) { + // Run the test in a linked worktree so that we catch bugs where we + // use the main repo's path instead of the current worktree's path. + shell.EmptyCommit("initial commit") + shell.AddWorktree("HEAD", "../linked-worktree", "mybranch") + shell.Chdir("../linked-worktree") + shell.CreateDir("dir") shell.CreateFileAndAdd("dir/file1", "1st line\n") shell.Commit("1") @@ -38,6 +45,7 @@ var CopyToClipboard = NewIntegrationTest(NewIntegrationTestArgs{ Contains("3").IsSelected(), Contains("2"), Contains("1"), + Contains("initial commit"), ). SelectNextItem(). PressEnter() @@ -80,9 +88,12 @@ var CopyToClipboard = NewIntegrationTest(NewIntegrationTestArgs{ Confirm(). Tap(func() { t.ExpectToast(Equals("File path copied to clipboard")) - repoDir, _ := os.Getwd() + worktreeDir, _ := os.Getwd() // On windows the following path would have backslashes, but we don't run integration tests on windows yet. - expectClipboard(t, Equals(repoDir+"/dir/file1")) + /* EXPECTED: + expectClipboard(t, Equals(worktreeDir+"/dir/file1")) + ACTUAL: */ + expectClipboard(t, Equals(filepath.Dir(worktreeDir)+"/repo/dir/file1")) }) }). Press(keys.Files.CopyFileInfoToClipboard). diff --git a/pkg/integration/tests/file/copy_menu.go b/pkg/integration/tests/file/copy_menu.go index 8151cfa10..5474614f6 100644 --- a/pkg/integration/tests/file/copy_menu.go +++ b/pkg/integration/tests/file/copy_menu.go @@ -2,6 +2,7 @@ package file import ( "os" + "path/filepath" "github.com/jesseduffield/lazygit/pkg/config" . "github.com/jesseduffield/lazygit/pkg/integration/components" @@ -21,7 +22,13 @@ var CopyMenu = NewIntegrationTest(NewIntegrationTestArgs{ SetupConfig: func(config *config.AppConfig) { config.GetUserConfig().OS.CopyToClipboardCmd = "printf '%s' {{text}} > clipboard" }, - SetupRepo: func(shell *Shell) {}, + SetupRepo: func(shell *Shell) { + // Run the test in a linked worktree so that we catch bugs where we + // use the main repo's path instead of the current worktree's path. + shell.EmptyCommit("initial commit") + shell.AddWorktree("HEAD", "../linked-worktree", "mybranch") + shell.Chdir("../linked-worktree") + }, Run: func(t *TestDriver, keys config.KeybindingConfig) { // Disabled item t.Views().Files(). @@ -130,9 +137,12 @@ var CopyMenu = NewIntegrationTest(NewIntegrationTestArgs{ t.ExpectToast(Equals("File path copied to clipboard")) - repoDir, _ := os.Getwd() + worktreeDir, _ := os.Getwd() // On windows the following path would have backslashes, but we don't run integration tests on windows yet. - expectClipboard(t, Equals(repoDir+"/dir/1-unstaged_file")) + /* EXPECTED: + expectClipboard(t, Equals(worktreeDir+"/dir/1-unstaged_file")) + ACTUAL: */ + expectClipboard(t, Equals(filepath.Dir(worktreeDir)+"/repo/dir/1-unstaged_file")) }) // Selected path diff on a single (unstaged) file