github.com/chyroc/anb@v0.3.0/internal/config/if_test.go (about) 1 package config 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestIfExpr_IsTrue(t *testing.T) { 10 as := assert.New(t) 11 12 tests := []struct { 13 name string 14 r IfExpr 15 val Any 16 want bool 17 ErrContain string 18 }{ 19 // {name: "", r: "", want: true}, 20 } 21 for _, tt := range tests { 22 t.Run(tt.name, func(t *testing.T) { 23 got, err := tt.r.IsTrue(Any{}) 24 if tt.ErrContain != "" { 25 as.NotNil(err) 26 as.Contains(err.Error(), tt.ErrContain) 27 } else { 28 as.Nil(err) 29 as.Equal(tt.want, got) 30 } 31 }) 32 } 33 } 34 35 func Test_RunBoolScript(t *testing.T) { 36 as := assert.New(t) 37 38 chTestDir() 39 40 tests := []struct { 41 name string 42 script string 43 val Any 44 want bool 45 ErrContain string 46 }{ 47 {name: "1", script: "false", want: false}, 48 {name: "2", script: "true", want: true}, 49 50 {name: "3", script: `exist("./README.md")`, want: true}, 51 {name: "4", script: `!exist("./README.md")`, want: false}, 52 {name: "5", script: `exist("./fake.data")`, want: false}, 53 {name: "6", script: `!exist("./fake.data")`, want: true}, 54 55 {name: "7", script: `exist("./README.md") && exist("./LICENSE")`, want: true}, 56 {name: "8", script: `exist("./README.md") && exist("./fake.data")`, want: false}, 57 {name: "9", script: `exist("./README.md") || exist("./fake.data")`, want: true}, 58 {name: "10", script: `(exist("./README.md") || exist("./fake.data")) && exist("./README.md")`, want: true}, 59 {name: "11", script: `(exist("./README.md") || exist("./fake.data")) && exist("./fake.data")`, want: false}, 60 61 {name: "12", script: "1 == 1", want: true}, 62 {name: "13", script: "1 == 2", want: false}, 63 {name: "14", script: `"x" == "x"`, want: true}, 64 {name: "15", script: `"x" == "y"`, want: false}, 65 } 66 for _, tt := range tests { 67 t.Run(tt.name, func(t *testing.T) { 68 got, err := ExecBoolScript(tt.script, tt.val) 69 if tt.ErrContain != "" { 70 as.NotNil(err, tt.name) 71 as.Contains(err.Error(), tt.ErrContain, tt.name) 72 } else { 73 as.Nil(err, tt.name) 74 as.Equal(tt.want, got, tt.name) 75 } 76 }) 77 } 78 }