--- a/plans/plans.go Mon Sep 04 21:04:34 2017 -0500
+++ b/plans/plans.go Mon Sep 04 21:46:07 2017 -0500
@@ -102,8 +102,7 @@
absStageName := fmt.Sprintf("%s/%s", path, stage.Name)
stageLogger := logging.NewAdapter(absStageName)
- if (planErr == nil || stage.Always) && stage.Enabled {
+ if stage.ShouldRun(planErr) { stageLogger.Info("stage starting")
err := stage.Execute(absStageName, stageLogger, tasks, planEnv, st)
@@ -116,8 +115,6 @@
stageLogger.Info("stage finished")
- stageLogger.Info("skipping (disabled)")
--- a/stages/stages.go Mon Sep 04 21:04:34 2017 -0500
+++ b/stages/stages.go Mon Sep 04 21:46:07 2017 -0500
@@ -49,8 +49,11 @@
+ fmt.Printf("enabled: %#v\n", raw.Enabled) + // validate the run attribute // If the always attribute is set, convert it to run syntax
@@ -63,10 +66,16 @@
// now validate the run attribute
- if s.Run != "on-success" || s.Run != "on-failure" || s.Run != "always" {
return fmt.Errorf("Invalid value '%s' for run attribute", s.Run)
+ // All good, return success --- a/stages/stages_test.go Mon Sep 04 21:04:34 2017 -0500
+++ b/stages/stages_test.go Mon Sep 04 21:46:07 2017 -0500
@@ -40,7 +40,7 @@
func (s *stagesSuite) TestShouldRunOnFailEnabled(t sweet.T) {
+ stage := Stage{Enabled: true} err := errors.New("testing")
@@ -68,7 +68,7 @@
func (s *stagesSuite) TestShouldRunOnSuccessEnabled(t sweet.T) {
+ stage := Stage{Enabled: true} Expect(stage.ShouldRun(nil)).To(BeTrue())
--- a/stages/unmarshal_test.go Mon Sep 04 21:04:34 2017 -0500
+++ b/stages/unmarshal_test.go Mon Sep 04 21:46:07 2017 -0500
@@ -25,6 +25,17 @@
type unmarshalSuite struct{}
+func (s *unmarshalSuite) TestDefaults(t sweet.T) { + // we need a non empty string to get go-yaml to call our UnmarshalYAML + err := yaml.Unmarshal([]byte(data), &stage) + Expect(err).To(BeNil()) + Expect(stage.Run).To(Equal("on-success")) func (s *unmarshalSuite) TestAlwaysAttribute(t sweet.T) {
@@ -36,14 +47,6 @@
Expect(stage.Run).To(Equal("always"))
-func (s *unmarshalSuite) TestDefaults(t sweet.T) {
- err := yaml.Unmarshal([]byte(""), &stage)
- Expect(err).To(BeNil())
- Expect(stage.Run).To(Equal("on-success"))
func (s *unmarshalSuite) TestInvalidRun(t sweet.T) {