Better error handling when reading YAML files

pull/11/head
Liz Rice 7 years ago
parent f920d61a6a
commit b4237ccb73

@ -17,7 +17,6 @@ package check
import (
"encoding/json"
"fmt"
"os"
yaml "gopkg.in/yaml.v2"
)
@ -46,19 +45,16 @@ type Summary struct {
}
// NewControls instantiates a new master Controls object.
func NewControls(t NodeType, in []byte) *Controls {
var err error
func NewControls(t NodeType, in []byte) (*Controls, error) {
c := new(Controls)
err = yaml.Unmarshal(in, c)
err := yaml.Unmarshal(in, c)
if err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
return nil, fmt.Errorf("failed to unmarshal YAML: %s", err)
}
if t != c.Type {
fmt.Fprintf(os.Stderr, "non-%s controls file specified\n", t)
os.Exit(1)
return nil, fmt.Errorf("non-%s controls file specified", t)
}
// Prepare audit commands
@ -68,7 +64,7 @@ func NewControls(t NodeType, in []byte) *Controls {
}
}
return c
return c, nil
}
// RunGroup runs all checks in a group.

@ -30,7 +30,10 @@ func init() {
if err != nil {
panic("Failed reading test data: " + err.Error())
}
controls = NewControls(MASTER, in)
controls, err = NewControls(MASTER, in)
if err != nil {
panic("Failed creating test controls: " + err.Error())
}
}
func TestTestExecute(t *testing.T) {

@ -88,7 +88,7 @@ func runChecks(t check.NodeType) {
in, err := ioutil.ReadFile(file)
if err != nil {
fmt.Fprintf(os.Stderr, "error opening %s controls file: %s\n", t, err)
fmt.Fprintf(os.Stderr, "error opening %s controls file: %v\n", t, err)
os.Exit(1)
}
@ -97,7 +97,11 @@ func runChecks(t check.NodeType) {
s = strings.Replace(s, "$etcdConfDir", viper.Get("etcdConfDir").(string), -1)
s = strings.Replace(s, "$flanneldConfDir", viper.Get("flanneldConfDir").(string), -1)
controls := check.NewControls(t, []byte(s))
controls, err := check.NewControls(t, []byte(s))
if err != nil {
fmt.Fprintf(os.Stderr, "error setting up %s controls: %v\n", t, err)
os.Exit(1)
}
if groupList != "" && checkList == "" {
ids := cleanIDs(groupList)

Loading…
Cancel
Save