105 lines
1.8 KiB
Go
105 lines
1.8 KiB
Go
|
// Copyright 2024 Matthew Rich <matthewrich.conf@gmail.com>. All rights reserved.
|
||
|
|
||
|
|
||
|
package command
|
||
|
|
||
|
import (
|
||
|
_ "fmt"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
_ "os"
|
||
|
_ "strings"
|
||
|
"testing"
|
||
|
"bytes"
|
||
|
)
|
||
|
|
||
|
/*
|
||
|
func TestNewContainerProvider(t *testing.T) {
|
||
|
c := NewContainerProvider(nil, nil)
|
||
|
assert.NotNil(t, c)
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
func TestContainerCommandLoad(t *testing.T) {
|
||
|
c := NewCommand()
|
||
|
assert.NotNil(t, c)
|
||
|
|
||
|
decl := `
|
||
|
path: find
|
||
|
args:
|
||
|
- "{{ .Path }}"
|
||
|
`
|
||
|
|
||
|
assert.Nil(t, c.LoadDecl(decl))
|
||
|
assert.Equal(t, "find", c.Path)
|
||
|
}
|
||
|
|
||
|
func TestContainerCommandTemplate(t *testing.T) {
|
||
|
c := NewCommand()
|
||
|
assert.NotNil(t, c)
|
||
|
|
||
|
decl := `
|
||
|
path: find
|
||
|
args:
|
||
|
- "{{ .Path }}"
|
||
|
`
|
||
|
|
||
|
assert.Nil(t, c.LoadDecl(decl))
|
||
|
assert.Equal(t, "find", c.Path)
|
||
|
assert.Equal(t, 1, len(c.Args))
|
||
|
|
||
|
f := struct { Path string } {
|
||
|
Path: "./",
|
||
|
}
|
||
|
|
||
|
args, templateErr := c.Template(f)
|
||
|
assert.Nil(t, templateErr)
|
||
|
assert.Equal(t, 1, len(args))
|
||
|
|
||
|
assert.Equal(t, "./", string(args[0]))
|
||
|
|
||
|
out, err := c.Execute(f)
|
||
|
assert.Nil(t, err)
|
||
|
assert.Greater(t, len(out), 0)
|
||
|
}
|
||
|
|
||
|
func TestContainerCommandStdin(t *testing.T) {
|
||
|
var expected string = "stdin test data"
|
||
|
var stdinBuffer bytes.Buffer
|
||
|
stdinBuffer.WriteString(expected)
|
||
|
|
||
|
c := NewCommand()
|
||
|
assert.NotNil(t, c)
|
||
|
|
||
|
decl := `
|
||
|
path: cat
|
||
|
stdinavailable: true
|
||
|
`
|
||
|
|
||
|
assert.Nil(t, c.LoadDecl(decl))
|
||
|
assert.Equal(t, "cat", c.Path)
|
||
|
|
||
|
c.SetStdinReader(&stdinBuffer)
|
||
|
out, err := c.Execute(nil)
|
||
|
assert.Nil(t, err)
|
||
|
assert.Equal(t, expected, string(out))
|
||
|
}
|
||
|
|
||
|
func TestContainerCommandExitCode(t *testing.T) {
|
||
|
c := NewCommand()
|
||
|
assert.NotNil(t, c)
|
||
|
decl := `
|
||
|
path: ls
|
||
|
args:
|
||
|
- "amissingfile"
|
||
|
`
|
||
|
|
||
|
assert.Nil(t, c.LoadDecl(decl))
|
||
|
assert.Equal(t, "ls", c.Path)
|
||
|
|
||
|
out, err := c.Execute(nil)
|
||
|
assert.NotNil(t, err)
|
||
|
assert.Greater(t, c.ExitCode, 0)
|
||
|
assert.Equal(t, string(out), c.Stdout)
|
||
|
assert.Equal(t, string("ls: amissingfile: No such file or directory\n"), c.Stderr)
|
||
|
}
|