Skip to content

Commit

Permalink
error when spec.json does not match generated name
Browse files Browse the repository at this point in the history
  • Loading branch information
Mikulas committed Sep 28, 2020
1 parent 6e2ce84 commit d6734b4
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 7 deletions.
5 changes: 5 additions & 0 deletions pkg/spec/spec.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package spec

import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path/filepath"
Expand Down Expand Up @@ -50,6 +51,10 @@ func Parse(data []byte, name string) (*v1alpha1.Config, error) {
return nil, errors.Wrap(err, "parsing spec.json")
}

// only allow explicit metadata.name when matching generated value
if config.Metadata.Name != "" && config.Metadata.Name != name {
return nil, fmt.Errorf("invalid metadata.name, must match generated %q", name)
}
// set the name field
config.Metadata.Name = name

Expand Down
21 changes: 15 additions & 6 deletions pkg/tanka/parse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,20 +43,29 @@ func TestEvalJsonnet(t *testing.T) {

func TestEval(t *testing.T) {
cases := []struct {
baseDir string
expected interface{}
baseDir string
expectedError string
expected interface{}
}{
{
baseDir: "./testdata/cases/env/",
baseDir: "./testdata/cases/env-mismatch",
expectedError: `reading spec.json: invalid metadata.name, must match generated "cases/env-mismatch"`,
},
{
baseDir: "./testdata/cases/env",
expected: map[string]interface{}{
"tkName": "custom-name",
"tkName": "cases/env",
},
},
}

for _, test := range cases {
raw, _, e := eval(test.baseDir, jsonnet.Opts{})
assert.NoError(t, e)
assert.Equal(t, test.expected, raw)
if test.expectedError != "" {
assert.Equal(t, test.expectedError, e.Error())
} else {
assert.NoError(t, e)
assert.Equal(t, test.expected, raw)
}
}
}
5 changes: 5 additions & 0 deletions pkg/tanka/testdata/cases/env-mismatch/main.jsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
local tk = (import "tk");

{
tkName: tk.env.metadata.name,
}
7 changes: 7 additions & 0 deletions pkg/tanka/testdata/cases/env-mismatch/spec.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"apiVersion": "v1alpha1",
"kind": "Environment",
"metadata": {
"name": "mismatched-name"
}
}
2 changes: 1 addition & 1 deletion pkg/tanka/testdata/cases/env/spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
"apiVersion": "v1alpha1",
"kind": "Environment",
"metadata": {
"name": "custom-name"
"name": "cases/env"
}
}

0 comments on commit d6734b4

Please sign in to comment.