fix(versioner): handle invalid empty command (#10836)
Same same Signed-off-by: Jakob Borg <jakob@kastelo.net>
This commit is contained in:
@@ -111,6 +111,9 @@ func (v external) prepareCommand(filePath string) (*exec.Cmd, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("command is invalid: %w", err)
|
return nil, fmt.Errorf("command is invalid: %w", err)
|
||||||
}
|
}
|
||||||
|
if len(words) == 0 {
|
||||||
|
return nil, errors.New("command is empty")
|
||||||
|
}
|
||||||
|
|
||||||
context := map[string]string{
|
context := map[string]string{
|
||||||
"%FOLDER_FILESYSTEM%": string(v.filesystem.Type()),
|
"%FOLDER_FILESYSTEM%": string(v.filesystem.Type()),
|
||||||
|
|||||||
@@ -109,6 +109,20 @@ func TestExternalCommandSplit(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestExternalWhitespaceCommand(t *testing.T) {
|
||||||
|
// A whitespace-only command splits into zero words; prepareCommand must
|
||||||
|
// return an error rather than panicking on words[0].
|
||||||
|
e := external{
|
||||||
|
filesystem: fs.NewFilesystem(fs.FilesystemTypeFake, "TestExternalWhitespaceCommand"),
|
||||||
|
}
|
||||||
|
for _, cmd := range []string{" ", "\t", "\n", " \t \n"} {
|
||||||
|
e.command = cmd
|
||||||
|
if _, err := e.prepareCommand("file"); err == nil {
|
||||||
|
t.Errorf("expected error for command %q, got nil", cmd)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func prepForRemoval(t *testing.T, file string) {
|
func prepForRemoval(t *testing.T, file string) {
|
||||||
if err := os.RemoveAll("testdata"); err != nil {
|
if err := os.RemoveAll("testdata"); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user