diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-11-11 12:16:38 +1100 |
---|---|---|
committer | Andrew Hynes <andrew.hynes@colabsoftware.com> | 2022-11-12 18:09:15 -0330 |
commit | 97ced9e14fe1754c5647c8c693e70fbf7c52807a (patch) | |
tree | ad8aa418aacc6aedb3954ed8bba8f95d9c8d7a30 /pkg | |
parent | ea0968677048b3236e3797e947e4d458096750ed (diff) |
fix could-not-access error
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/commands/git_commands/working_tree.go | 2 | ||||
-rw-r--r-- | pkg/commands/models/file.go | 5 | ||||
-rw-r--r-- | pkg/gui/filetree/file_node.go | 4 | ||||
-rw-r--r-- | pkg/integration/components/shell.go | 9 | ||||
-rw-r--r-- | pkg/integration/tests/file/dir_with_untracked_file.go | 32 | ||||
-rw-r--r-- | pkg/integration/tests/tests.go | 2 |
6 files changed, 53 insertions, 1 deletions
diff --git a/pkg/commands/git_commands/working_tree.go b/pkg/commands/git_commands/working_tree.go index 8fd1fb177..9c02d4300 100644 --- a/pkg/commands/git_commands/working_tree.go +++ b/pkg/commands/git_commands/working_tree.go @@ -241,7 +241,7 @@ func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain if cached { cachedArg = " --cached" } - if !node.GetIsTracked() && !node.GetHasStagedChanges() && !cached { + if !node.GetIsTracked() && !node.GetHasStagedChanges() && !cached && node.GetIsFile() { trackedArg = "--no-index -- /dev/null" } if plain { diff --git a/pkg/commands/models/file.go b/pkg/commands/models/file.go index eeb540def..dbe015cf1 100644 --- a/pkg/commands/models/file.go +++ b/pkg/commands/models/file.go @@ -29,6 +29,7 @@ type IFile interface { GetIsTracked() bool GetPath() string GetPreviousPath() string + GetIsFile() bool } func (f *File) IsRename() bool { @@ -92,6 +93,10 @@ func (f *File) GetPreviousPath() string { return f.PreviousName } +func (f *File) GetIsFile() bool { + return true +} + type StatusFields struct { HasStagedChanges bool HasUnstagedChanges bool diff --git a/pkg/gui/filetree/file_node.go b/pkg/gui/filetree/file_node.go index 2ff707113..abfdbafe6 100644 --- a/pkg/gui/filetree/file_node.go +++ b/pkg/gui/filetree/file_node.go @@ -42,6 +42,10 @@ func (self *FileNode) GetIsTracked() bool { return self.SomeFile(func(file *models.File) bool { return file.Tracked }) } +func (self *FileNode) GetIsFile() bool { + return self.IsFile() +} + func (self *FileNode) GetPreviousPath() string { if self.File == nil { return "" diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index 1d8182edb..95b601783 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -45,6 +45,15 @@ func (s *Shell) CreateFile(path string, content string) *Shell { return s } +func (s *Shell) CreateDir(path string) *Shell { + fullPath := filepath.Join(s.dir, path) + if err := os.MkdirAll(fullPath, 0o755); err != nil { + panic(fmt.Sprintf("error creating directory: %s\n%s", fullPath, err)) + } + + return s +} + func (s *Shell) UpdateFile(path string, content string) *Shell { fullPath := filepath.Join(s.dir, path) err := os.WriteFile(fullPath, []byte(content), 0o644) diff --git a/pkg/integration/tests/file/dir_with_untracked_file.go b/pkg/integration/tests/file/dir_with_untracked_file.go new file mode 100644 index 000000000..c67745c65 --- /dev/null +++ b/pkg/integration/tests/file/dir_with_untracked_file.go @@ -0,0 +1,32 @@ +package file + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var DirWithUntrackedFile = NewIntegrationTest(NewIntegrationTestArgs{ + // notably, we currently _don't_ actually see the untracked file in the diff. Not sure how to get around that. + Description: "When selecting a directory that contains an untracked file, we should not get an error", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) { + config.UserConfig.Gui.ShowFileTree = true + }, + SetupRepo: func(shell *Shell) { + shell.CreateDir("dir") + shell.CreateFile("dir/file", "foo") + shell.GitAddAll() + shell.Commit("first commit") + shell.CreateFile("dir/untracked", "bar") + shell.UpdateFile("dir/file", "baz") + }, + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { + assert.CommitCount(1) + + assert.MatchMainViewContent(NotContains("error: Could not access")) + // we show baz because it's a modified file but we don't show bar because it's untracked + // (though it would be cool if we could show that too) + assert.MatchMainViewContent(Contains("baz")) + }, +}) diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index e26836b59..0765c8600 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -15,6 +15,7 @@ import ( "github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick" "github.com/jesseduffield/lazygit/pkg/integration/tests/commit" "github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands" + "github.com/jesseduffield/lazygit/pkg/integration/tests/file" "github.com/jesseduffield/lazygit/pkg/integration/tests/interactive_rebase" "github.com/jesseduffield/lazygit/pkg/integration/tests/stash" "github.com/jesseduffield/lazygit/pkg/utils" @@ -43,6 +44,7 @@ var tests = []*components.IntegrationTest{ stash.Stash, stash.StashIncludingUntrackedFiles, stash.Rename, + file.DirWithUntrackedFile, } func GetTests() []*components.IntegrationTest { |