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  }