blob: 0a147f44be8d6c59a20e134a4961d9fb8b597a18 [file] [edit]
package osutils
import (
"os"
"reflect"
"testing"
)
func TestRun(t *testing.T) {
tests := []struct {
desc string
cmd string
args []string
wantErr bool
hideStderr bool
wantStdout string
wantStderr string
}{
{
desc: "Executes command successfully and returns output",
cmd: "echo",
args: []string{"-n", "Hello world"},
wantErr: false,
hideStderr: false,
wantStdout: "Hello world",
},
{
desc: "Fails and returns error when command with unknown argument is given",
cmd: "ls",
wantErr: true,
args: []string{"nonexistent"},
hideStderr: false,
},
{
desc: "Does not error when hideStderr is true",
cmd: "ls",
wantErr: false,
args: []string{"nonexistent"},
hideStderr: true,
},
{
desc: "Fails and returns error when unknown command is given ",
cmd: "Echo",
wantErr: true,
args: []string{"Hello world"},
hideStderr: false,
},
}
for _, test := range tests {
t.Run(test.desc, func(t *testing.T) {
stdout, err := Run(test.cmd, test.args, test.hideStderr)
if gotErr := err != nil; gotErr != test.wantErr {
t.Errorf("TestRun(%s): Error: %s\n gotErr: %t\n wantErr: %t", test.desc, err, gotErr, test.wantErr)
}
if stdout != test.wantStdout {
t.Errorf("TestRun(%s): returned unexpected difference;\n gotStdout: %v\n wantStdout: %v\n", test.desc, stdout, test.wantStdout)
}
})
}
}
func TestParseFileExists(t *testing.T) {
tmpFile, err := os.CreateTemp("", "os-file")
if err != nil {
t.Fatalf("Failed to create temp file: %v", err)
}
defer os.Remove(tmpFile.Name())
if _, err := tmpFile.WriteString(`ID=cos`); err != nil {
t.Fatalf("Failed to write into temp file: %v", err)
}
parsedFile, err := Parse(tmpFile.Name())
if err != nil {
t.Fatalf("Unable to read os file: %v", err)
}
want := map[string]string{
"ID": "cos",
}
if !reflect.DeepEqual(parsedFile, want) {
t.Errorf("TestParseFileExists returned unexpected difference;\n Want: %s\n, got:%s\n", want, parsedFile)
}
}
func TestParseFileNotExists(t *testing.T) {
_, err := Parse("os-file-nonexistent")
if err == nil {
t.Fatalf("Expected error when reading from nonexistent file.")
}
}