From df2b9e76245da80797c40b2ed0a5bfb582234246 Mon Sep 17 00:00:00 2001 From: kalipso Date: Tue, 31 Oct 2023 13:11:52 +0100 Subject: [PATCH] [actions/unix_command] check if commands can be found during test run --- actions/unix_command.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/actions/unix_command.go b/actions/unix_command.go index 01775d5..3df195f 100644 --- a/actions/unix_command.go +++ b/actions/unix_command.go @@ -14,8 +14,33 @@ type Command struct { ActionChan ActionResultChan } +func isCommandAvailable(name string) bool { + cmd := exec.Command("/bin/sh", "-c", "command -v "+name) + if err := cmd.Run(); err != nil { + return false + } + + return true +} + func (c Command) DryExecute() { - fmt.Printf("Test Executing Command:\n%s ", c.Command) + fmt.Printf("Test Executing Command:\n%s\n", c.Command) + command, _, err := c.splitCommandString() + + if err != nil { + fmt.Printf("Error during argument parsing of command '%s'\n", c.Command) + fmt.Println(err) + return + } + + isAvailable := isCommandAvailable(command) + + if !isAvailable { + fmt.Printf("Command %s not found\n", command) + c.ActionChan <- fmt.Errorf("Command %s not found!", command) + return + } + c.ActionChan <- nil } @@ -48,6 +73,7 @@ func (c Command) Execute() { if err != nil { fmt.Println(err.Error()) + c.ActionChan <- err } fmt.Println(string(stdout[:]))