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  }