pulumi/pkg/compiler/parser_test.go
joeduffy e137837455 Revert back to T[], instead of []T, for array syntax
This change reverts the syntax for arrays back to T[] from []T.  The main
reason is that YAML doesn't permit unquoted strings beginning with [], meaning
any array type needs to be quoted as in "[]T", which is annoying compared to all
other primitive types which don't require quotes.  And, anyway, this syntax is
more familiar too.

I've also added a number of tests.
2016-12-07 13:24:05 -08:00

58 lines
1.4 KiB
Go

// Copyright 2016 Marapongo, Inc. All rights reserved.
package compiler
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/marapongo/mu/pkg/diag"
"github.com/marapongo/mu/pkg/errors"
)
func TestBadPrimitives(t *testing.T) {
sink := buildNoCodegen("testdata", "parser", "bad__primitives")
badarrs := []string{"[]string", "stri[]ng", "[]string", "[]string[]", "[]"}
badboths := []string{"map[]int[string]", "map[]int[]"}
badmaps := []string{"map[string", "map[string]", "map[]", "map[]int"}
assert.Equal(t, len(badarrs)+len(badboths)+len(badmaps), sink.Errors(),
"expected an error per badarrN/badbothN/badmapN case")
msg := 0
{
d := errors.ErrorIllegalArrayLikeSyntax
for _, bad := range badarrs {
assert.Equal(t,
fmt.Sprintf("%v: %v%v: %v\n",
diag.DefaultSinkErrorPrefix, diag.DefaultSinkIDPrefix, d.ID, fmt.Sprintf(d.Message, bad)),
sink.ErrorMsgs()[msg])
msg++
}
}
{
d := errors.ErrorIllegalMapLikeSyntax
for _, bad := range badboths {
assert.Equal(t,
fmt.Sprintf("%v: %v%v: %v\n",
diag.DefaultSinkErrorPrefix, diag.DefaultSinkIDPrefix, d.ID, fmt.Sprintf(d.Message, bad)),
sink.ErrorMsgs()[msg])
msg++
}
}
{
d := errors.ErrorIllegalMapLikeSyntax
for _, bad := range badmaps {
assert.Equal(t,
fmt.Sprintf("%v: %v%v: %v\n",
diag.DefaultSinkErrorPrefix, diag.DefaultSinkIDPrefix, d.ID, fmt.Sprintf(d.Message, bad)),
sink.ErrorMsgs()[msg])
msg++
}
}
}