--- a/plans/plans.go Wed Dec 27 01:13:19 2017 -0600
+++ b/plans/plans.go Wed Dec 27 01:37:46 2017 -0600
@@ -18,6 +18,7 @@
@@ -32,6 +33,10 @@
"bitbucket.org/rw_grim/convey/yaml"
+ ErrNoStages = errors.New("no stages found") Environment yaml.StringOrSlice `yaml:"environment"`
Stages []stages.Stage `yaml:"stages"`
@@ -138,3 +143,11 @@
+func (p *Plan) Valid() error { + if len(p.Stages) == 0 { --- a/plans/plans_test.go Wed Dec 27 01:13:19 2017 -0600
+++ b/plans/plans_test.go Wed Dec 27 01:37:46 2017 -0600
@@ -63,3 +63,28 @@
Expect(p.Environment).To(Equal(cYaml.StringOrSlice{"foo=bar"}))
+func (s *planSuite) TestStagesRequired(t sweet.T) { + err := yaml.Unmarshal([]byte(data), &p) + Expect(err).To(BeNil()) + Expect(err).To(Equal(ErrNoStages)) + Expect(len(p.Stages)).To(Equal(0)) +func (s *planSuite) TestValid(t sweet.T) { + err := yaml.Unmarshal([]byte(data), &p) + Expect(err).To(BeNil()) + Expect(err).To(BeNil()) --- a/runners/default.go Wed Dec 27 01:13:19 2017 -0600
+++ b/runners/default.go Wed Dec 27 01:37:46 2017 -0600
@@ -30,7 +30,13 @@
/* now look for the plan */
for _, planName := range plans {
if plan, found := cfg.Plans[planName]; found {
- err := plan.Execute(planName, cfg.Tasks, cfg.Environment, st)
+ logger.Errorf("%s", err) + err = plan.Execute(planName, cfg.Tasks, cfg.Environment, st)