github.com/benchkram/bob@v0.0.0-20240314204020-b7a57f2f9be9/bobrun/run_test.go (about)

     1  package bobrun
     2  
     3  import (
     4  	"testing"
     5  
     6  	"gopkg.in/yaml.v3"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  var withLowercase = `
    12  type: binary
    13  path: ./build/server
    14  dependson:
    15        - build
    16        - database
    17  `
    18  
    19  var withCamelCase = `
    20  type: binary
    21  path: ./build/server
    22  dependsOn:
    23        - build
    24        - database
    25  `
    26  
    27  var withBoth = `
    28  type: binary
    29  path: ./build/server
    30  dependsOn:
    31        - build
    32        - database
    33  dependson:
    34        - build
    35        - database
    36  `
    37  
    38  func TestRun_UnmarshalYAMLDependsOn(t *testing.T) {
    39  	type test struct {
    40  		input string
    41  		msg   string
    42  	}
    43  
    44  	tests := []test{
    45  		{input: withLowercase, msg: "Should equal values from `dependson`"},
    46  		{input: withCamelCase, msg: "Should equal values from `dependsOn`"},
    47  	}
    48  
    49  	for _, tc := range tests {
    50  		var run Run
    51  
    52  		err := yaml.Unmarshal([]byte(tc.input), &run)
    53  
    54  		assert.Nil(t, err, "No error should occur on Unmarshal")
    55  		assert.Equal(t, []string{"build", "database"}, run.DependsOn, tc.msg)
    56  	}
    57  }
    58  
    59  func TestRun_UnmarshalYAMLWithBothDependsOn(t *testing.T) {
    60  	t.Log("When both values exists for a run should fail with error")
    61  
    62  	var run Run
    63  	err := yaml.Unmarshal([]byte(withBoth), &run)
    64  	assert.EqualError(t, err, "both `dependson` and `dependsOn` nodes detected near line 2")
    65  }