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

@ -30,7 +30,10 @@ func init() {
if err != nil { if err != nil {
panic("Failed reading test data: " + err.Error()) 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) { func TestTestExecute(t *testing.T) {

@ -88,7 +88,7 @@ func runChecks(t check.NodeType) {
in, err := ioutil.ReadFile(file) in, err := ioutil.ReadFile(file)
if err != nil { 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) 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, "$etcdConfDir", viper.Get("etcdConfDir").(string), -1)
s = strings.Replace(s, "$flanneldConfDir", viper.Get("flanneldConfDir").(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 == "" { if groupList != "" && checkList == "" {
ids := cleanIDs(groupList) ids := cleanIDs(groupList)

Loading…
Cancel
Save