github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/hooks/yaml_test.go (about) 1 package hooks_test 2 3 import ( 4 "testing" 5 6 "github.com/helmwave/helmwave/pkg/hooks" 7 "github.com/stretchr/testify/suite" 8 "gopkg.in/yaml.v3" 9 ) 10 11 type YAMLTestSuite struct { 12 suite.Suite 13 } 14 15 func TestYAMLTestSuite(t *testing.T) { 16 t.Parallel() 17 suite.Run(t, new(YAMLTestSuite)) 18 } 19 20 func (s *YAMLTestSuite) TestEmptyStructure() { 21 lifecycle := hooks.Lifecycle{} 22 str := `{}` 23 24 err := yaml.Unmarshal([]byte(str), &lifecycle) 25 26 s.Require().NoError(err) 27 28 s.Require().Empty(lifecycle.PreBuild) 29 s.Require().Empty(lifecycle.PostBuild) 30 s.Require().Empty(lifecycle.PreUp) 31 s.Require().Empty(lifecycle.PostUp) 32 s.Require().Empty(lifecycle.PreRollback) 33 s.Require().Empty(lifecycle.PostRollback) 34 s.Require().Empty(lifecycle.PreDown) 35 s.Require().Empty(lifecycle.PostDown) 36 } 37 38 func (s *YAMLTestSuite) TestHooksUnmarshal() { 39 lifecycle := hooks.Lifecycle{} 40 str := ` 41 pre_build: 42 - test123 43 ` 44 45 err := yaml.Unmarshal([]byte(str), &lifecycle) 46 47 s.Require().NoError(err) 48 49 s.Require().Len(lifecycle.PreBuild, 1) 50 s.Require().Empty(lifecycle.PostBuild) 51 s.Require().Empty(lifecycle.PreUp) 52 s.Require().Empty(lifecycle.PostUp) 53 s.Require().Empty(lifecycle.PreRollback) 54 s.Require().Empty(lifecycle.PostRollback) 55 s.Require().Empty(lifecycle.PreDown) 56 s.Require().Empty(lifecycle.PostDown) 57 58 hook := lifecycle.PreBuild[0] 59 s.Require().NotNil(hook) 60 s.Require().IsType(hooks.NewHook(), hook) 61 } 62 63 func (s *YAMLTestSuite) TestUnmarshalShortForm() { 64 hook := hooks.NewHook() 65 str := `test 123 456` 66 67 err := yaml.Unmarshal([]byte(str), hook) 68 69 s.Require().NoError(err) 70 s.Require().Equal("test", hook.Cmd) 71 s.Require().Equal([]string{"123", "456"}, hook.Args) 72 s.Require().False(hook.AllowFailure) 73 s.Require().True(hook.Show) 74 } 75 76 func (s *YAMLTestSuite) TestUnmarshalLongForm() { 77 hook := hooks.NewHook() 78 str := ` 79 cmd: test 123 80 args: 81 - 456 82 show: false 83 allow_failure: true 84 ` 85 86 err := yaml.Unmarshal([]byte(str), hook) 87 88 s.Require().NoError(err) 89 s.Require().Equal("test 123", hook.Cmd) 90 s.Require().Equal([]string{"456"}, hook.Args) 91 s.Require().True(hook.AllowFailure) 92 s.Require().False(hook.Show) 93 }