blob: 18d8c2dd09d50dddfe9a2a369babde5d761d2ccb [file] [log] [blame] [edit]
package rule
import (
"testing"
bzl "github.com/bazelbuild/buildtools/build"
"github.com/google/go-cmp/cmp"
)
func TestExprFromValue(t *testing.T) {
for name, tt := range map[string]struct {
val interface{}
want bzl.Expr
}{
"glob value": {
val: GlobValue{
Patterns: []string{"a", "b"},
},
want: &bzl.CallExpr{
X: &bzl.LiteralExpr{Token: "glob"},
List: []bzl.Expr{
&bzl.ListExpr{
List: []bzl.Expr{
&bzl.StringExpr{Value: "a"},
&bzl.StringExpr{Value: "b"},
},
},
},
},
},
"glob value with excludes": {
val: GlobValue{
Patterns: []string{"a", "b"},
Excludes: []string{"c", "d"},
},
want: &bzl.CallExpr{
X: &bzl.LiteralExpr{Token: "glob"},
List: []bzl.Expr{
&bzl.ListExpr{
List: []bzl.Expr{
&bzl.StringExpr{Value: "a"},
&bzl.StringExpr{Value: "b"},
},
},
&bzl.AssignExpr{
LHS: &bzl.LiteralExpr{Token: "exclude"},
Op: "=",
RHS: &bzl.ListExpr{
List: []bzl.Expr{
&bzl.StringExpr{Value: "c"},
&bzl.StringExpr{Value: "d"},
},
},
},
},
},
},
} {
t.Run(name, func(t *testing.T) {
got := ExprFromValue(tt.val)
if diff := cmp.Diff(tt.want, got); diff != "" {
t.Errorf("ExprFromValue() mismatch (-want +got):\n%s", diff)
}
})
}
}