| 1061 | } |
| 1062 | |
| 1063 | func TestCheck_env_keyword(t *testing.T) { |
| 1064 | env := map[string]any{ |
| 1065 | "num": 42, |
| 1066 | "str": "foo", |
| 1067 | "name": "str", |
| 1068 | } |
| 1069 | |
| 1070 | tests := []struct { |
| 1071 | input string |
| 1072 | want reflect.Kind |
| 1073 | }{ |
| 1074 | {`$env['str']`, reflect.String}, |
| 1075 | {`$env['num']`, reflect.Int}, |
| 1076 | {`$env[name]`, reflect.Interface}, |
| 1077 | } |
| 1078 | |
| 1079 | c := new(checker.Checker) |
| 1080 | for _, test := range tests { |
| 1081 | t.Run(test.input, func(t *testing.T) { |
| 1082 | tree, err := parser.Parse(test.input) |
| 1083 | require.NoError(t, err) |
| 1084 | |
| 1085 | rtype, err := c.Check(tree, conf.New(env)) |
| 1086 | require.NoError(t, err) |
| 1087 | require.True(t, rtype.Kind() == test.want, fmt.Sprintf("expected %s, got %s", test.want, rtype.Kind())) |
| 1088 | }) |
| 1089 | } |
| 1090 | } |
| 1091 | |
| 1092 | func TestCheck_builtin_without_call(t *testing.T) { |
| 1093 | tests := []struct { |