summaryrefslogtreecommitdiff
path: root/config/reader_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'config/reader_test.go')
-rw-r--r--config/reader_test.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/config/reader_test.go b/config/reader_test.go
index e11e7af..51269ea 100644
--- a/config/reader_test.go
+++ b/config/reader_test.go
@@ -11,6 +11,7 @@ import (
func ExampleResolveIncludes() {
cfg, _ := config.ReadConfig([]byte(`---
+ version: v1
variants:
varA: { includes: [varB, varC] }
varB: { includes: [varD, varE] }
@@ -26,8 +27,37 @@ func ExampleResolveIncludes() {
// Output: [varF varD varE varB varC varA]
}
+func TestReadConfig_ErrorsOnUnknownYAML(t *testing.T) {
+ _, err := config.ReadConfig([]byte(`---
+ version: v1
+ newphone: whodis
+ variants:
+ foo: {}`))
+
+ assert.EqualError(t,
+ err,
+ "yaml: unmarshal errors:\n"+
+ " line 2: field newphone not found in struct config.Config",
+ )
+}
+
+func TestReadConfig_ValidateVersionBeforeStrictUnmarshal(t *testing.T) {
+ _, err := config.ReadConfig([]byte(`---
+ version: foo
+ newphone: whodis
+ variants:
+ foo: {}`))
+
+ if assert.True(t, config.IsValidationError(err)) {
+ msg := config.HumanizeValidationError(err)
+
+ assert.Equal(t, `version: config version "foo" is unsupported`, msg)
+ }
+}
+
func TestResolveIncludesPreventsInfiniteRecursion(t *testing.T) {
cfg, err := config.ReadConfig([]byte(`---
+ version: v1
variants:
varA: { includes: [varB] }
varB: { includes: [varA] }`))
@@ -41,6 +71,7 @@ func TestResolveIncludesPreventsInfiniteRecursion(t *testing.T) {
func TestMultiLevelIncludes(t *testing.T) {
cfg, err := config.ReadConfig([]byte(`---
+ version: v1
base: nodejs-slim
variants:
build:
@@ -70,6 +101,7 @@ func TestMultiLevelIncludes(t *testing.T) {
func TestMultiIncludes(t *testing.T) {
cfg, err := config.ReadConfig([]byte(`---
+ version: v1
variants:
mammal:
base: neutral