summaryrefslogtreecommitdiff
path: root/recipe/recipe_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'recipe/recipe_test.go')
-rw-r--r--recipe/recipe_test.go182
1 files changed, 0 insertions, 182 deletions
diff --git a/recipe/recipe_test.go b/recipe/recipe_test.go
deleted file mode 100644
index 01457e9..0000000
--- a/recipe/recipe_test.go
+++ /dev/null
@@ -1,182 +0,0 @@
-package recipe_test
-
-import (
- "github.com/go-debos/debos/recipe"
- "github.com/stretchr/testify/assert"
- "io/ioutil"
- "os"
- "testing"
-)
-
-type testRecipe struct {
- recipe string
- err string
-}
-
-// Test if incorrect file has been passed
-func TestParse_incorrect_file(t *testing.T) {
- var err error
-
- var tests = []struct {
- filename string
- err string
- }{
- {
- "non-existing.yaml",
- "open non-existing.yaml: no such file or directory",
- },
- {
- "/proc",
- "read /proc: is a directory",
- },
- }
-
- for _, test := range tests {
- r := recipe.Recipe{}
- err = r.Parse(test.filename)
- assert.EqualError(t, err, test.err)
- }
-}
-
-// Check common recipe syntax
-func TestParse_syntax(t *testing.T) {
-
- var tests = []testRecipe{
- // Test if all actions are supported
- {`
-architecture: arm64
-
-actions:
- - action: apt
- - action: debootstrap
- - action: download
- - action: filesystem-deploy
- - action: image-partition
- - action: ostree-commit
- - action: ostree-deploy
- - action: overlay
- - action: pack
- - action: raw
- - action: run
- - action: unpack
-`,
- "", // Do not expect failure
- },
- // Test of unknown action in list
- {`
-architecture: arm64
-
-actions:
- - action: test_unknown_action
-`,
- "Unknown action: test_unknown_action",
- },
- // Test if 'architecture' property absence
- {`
-actions:
- - action: raw
-`,
- "Recipe file must have 'architecture' property",
- },
- // Test if no actions listed
- {`
-architecture: arm64
-`,
- "Recipe file must have at least one action",
- },
- // Test of wrong syntax in Yaml
- {`wrong`,
- "yaml: unmarshal errors:\n line 1: cannot unmarshal !!str `wrong` into recipe.Recipe",
- },
- // Test if no actions listed
- {`
-architecture: arm64
-`,
- "Recipe file must have at least one action",
- },
- }
-
- for _, test := range tests {
- runTest(t, test)
- }
-}
-
-// Check template engine
-func TestParse_template(t *testing.T) {
-
- var test = testRecipe{
- // Test template variables
- `
-{{ $action:= or .action "download" }}
-architecture: arm64
-actions:
- - action: {{ $action }}
-`,
- "", // Do not expect failure
- }
-
- { // Test of embedded template
- r := runTest(t, test)
- assert.Equalf(t, r.Actions[0].String(), "download",
- "Fail to use embedded variable definition from recipe:%s\n",
- test.recipe)
- }
-
- { // Test of user-defined template variable
- var templateVars = map[string]string{
- "action": "pack",
- }
-
- r := runTest(t, test, templateVars)
- assert.Equalf(t, r.Actions[0].String(), "pack",
- "Fail to redefine variable with user-defined map:%s\n",
- test.recipe)
- }
-}
-
-// Test of 'sector' function embedded to recipe package
-func TestParse_sector(t *testing.T) {
- var testSector = testRecipe{
- // Fail with unknown action
- `
-architecture: arm64
-
-actions:
- - action: {{ sector 42 }}
-`,
- "Unknown action: 21504",
- }
- runTest(t, testSector)
-}
-
-func runTest(t *testing.T, test testRecipe, templateVars ...map[string]string) recipe.Recipe {
- file, err := ioutil.TempFile(os.TempDir(), "recipe")
- assert.Empty(t, err)
- defer os.Remove(file.Name())
-
- file.WriteString(test.recipe)
- file.Close()
-
- r := recipe.Recipe{}
- if len(templateVars) == 0 {
- err = r.Parse(file.Name())
- } else {
- err = r.Parse(file.Name(), templateVars[0])
- }
-
- failed := false
-
- if len(test.err) > 0 {
- // Expected error?
- failed = !assert.EqualError(t, err, test.err)
- } else {
- // Unexpected error
- failed = !assert.Empty(t, err)
- }
-
- if failed {
- t.Logf("Failed recipe:%s\n", test.recipe)
- }
-
- return r
-}