mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-11-22 04:42:37 +03:00
Use git ls-files to list all file suggestions
This commit is contained in:
@@ -451,3 +451,19 @@ func (self *WorkingTreeCommands) MergeFileForObjectIDs(strategy string, oursID s
|
||||
|
||||
return self.cmd.New(cmdArgs).RunWithOutput()
|
||||
}
|
||||
|
||||
// Returns all tracked files in the repo (not in the working tree). The returned entries are
|
||||
// relative paths to the repo root, using '/' as the path separator on all platforms.
|
||||
// Does not really belong in WorkingTreeCommands, but it's close enough, and we don't seem to have a
|
||||
// better place for it right now.
|
||||
func (self *WorkingTreeCommands) AllRepoFiles() ([]string, error) {
|
||||
cmdArgs := NewGitCmd("ls-files").Arg("-z").ToArgv()
|
||||
output, err := self.cmd.New(cmdArgs).DontLog().RunWithOutput()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if output == "" {
|
||||
return []string{}, nil
|
||||
}
|
||||
return strings.Split(strings.TrimRight(output, "\x00"), "\x00"), nil
|
||||
}
|
||||
|
||||
@@ -563,3 +563,32 @@ func TestWorkingTreeResetHard(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestWorkingTreeCommands_AllRepoFiles(t *testing.T) {
|
||||
scenarios := []struct {
|
||||
name string
|
||||
runner *oscommands.FakeCmdObjRunner
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
name: "no files",
|
||||
runner: oscommands.NewFakeRunner(t).
|
||||
ExpectGitArgs([]string{"ls-files", "-z"}, "", nil),
|
||||
expected: []string{},
|
||||
},
|
||||
{
|
||||
name: "two files",
|
||||
runner: oscommands.NewFakeRunner(t).
|
||||
ExpectGitArgs([]string{"ls-files", "-z"}, "dir/file1.txt\x00dir2/file2.go\x00", nil),
|
||||
expected: []string{"dir/file1.txt", "dir2/file2.go"},
|
||||
},
|
||||
}
|
||||
for _, s := range scenarios {
|
||||
t.Run(s.name, func(t *testing.T) {
|
||||
instance := buildWorkingTreeCommands(commonDeps{runner: s.runner})
|
||||
result, err := instance.AllRepoFiles()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, s.expected, result)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user