48 lines
800 B
Go
48 lines
800 B
Go
package strictyaml
|
|
|
|
import (
|
|
"io"
|
|
"testing"
|
|
|
|
"github.com/letsencrypt/boulder/test"
|
|
)
|
|
|
|
var (
|
|
emptyConfig = []byte(``)
|
|
validConfig = []byte(`
|
|
a: c
|
|
d: c
|
|
`)
|
|
invalidConfig1 = []byte(`
|
|
x: y
|
|
`)
|
|
|
|
invalidConfig2 = []byte(`
|
|
a: c
|
|
d: c
|
|
x:
|
|
- hey
|
|
`)
|
|
)
|
|
|
|
func TestStrictYAMLUnmarshal(t *testing.T) {
|
|
var config struct {
|
|
A string `yaml:"a"`
|
|
D string `yaml:"d"`
|
|
}
|
|
|
|
err := Unmarshal(validConfig, &config)
|
|
test.AssertNotError(t, err, "yaml: unmarshal errors")
|
|
test.AssertNotError(t, err, "EOF")
|
|
|
|
err = Unmarshal(invalidConfig1, &config)
|
|
test.AssertError(t, err, "yaml: unmarshal errors")
|
|
|
|
err = Unmarshal(invalidConfig2, &config)
|
|
test.AssertError(t, err, "yaml: unmarshal errors")
|
|
|
|
// Test an empty buffer (config file)
|
|
err = Unmarshal(emptyConfig, &config)
|
|
test.AssertErrorIs(t, err, io.EOF)
|
|
}
|