summaryrefslogtreecommitdiff
path: root/build/instructions_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'build/instructions_test.go')
-rw-r--r--build/instructions_test.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/build/instructions_test.go b/build/instructions_test.go
new file mode 100644
index 0000000..dbab4b5
--- /dev/null
+++ b/build/instructions_test.go
@@ -0,0 +1,51 @@
+package build_test
+
+import (
+ "testing"
+
+ "gopkg.in/stretchr/testify.v1/assert"
+
+ "phabricator.wikimedia.org/source/blubber.git/build"
+)
+
+func TestRun(t *testing.T) {
+ i := build.Run{"echo %s %s", []string{"foo bar", "baz"}}
+
+ assert.Equal(t, []string{`echo "foo bar" "baz"`}, i.Compile())
+}
+
+func TestRunWithInnerAndOuterArguments(t *testing.T) {
+ i := build.Run{"useradd -d %s -u %s", []string{"/foo", "666", "bar"}}
+
+ assert.Equal(t, []string{`useradd -d "/foo" -u "666" "bar"`}, i.Compile())
+}
+
+func TestRunAll(t *testing.T) {
+ i := build.RunAll{[]build.Run{
+ {"echo %s", []string{"foo"}},
+ {"cat %s", []string{"/bar"}},
+ {"baz", []string{}},
+ }}
+
+ assert.Equal(t, []string{`echo "foo" && cat "/bar" && baz`}, i.Compile())
+}
+
+func TestCopy(t *testing.T) {
+ i := build.Copy{[]string{"source1", "source2"}, "dest"}
+
+ assert.Equal(t, []string{`"source1"`, `"source2"`, `"dest"`}, i.Compile())
+}
+
+func TestEnv(t *testing.T) {
+ i := build.Env{map[string]string{
+ "fooname": "foovalue",
+ "barname": "barvalue",
+ "quxname": "quxvalue",
+ }}
+
+ assert.Equal(t, []string{
+ `barname="barvalue"`,
+ `fooname="foovalue"`,
+ `quxname="quxvalue"`,
+ }, i.Compile())
+}