github.com/tiagovtristao/plz@v13.4.0+incompatible/src/parse/rules_test.go (about) 1 package parse 2 3 import ( 4 "strings" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 9 "github.com/thought-machine/please/src/core" 10 ) 11 12 func TestRuleArgs(t *testing.T) { 13 env := getRuleArgs(core.NewDefaultBuildState(), nil) 14 assert.True(t, len(env.Functions) > 20) // Don't care exactly how many there are, but it should have a fair few. 15 rule := env.Functions["cc_library"] 16 assert.True(t, len(rule.Args) > 5) 17 assert.NotEqual(t, "", rule.Comment) 18 assert.NotEqual(t, "", rule.Docstring) 19 assert.Equal(t, "cc", rule.Language) 20 // Some of this is getting a bit more specific than I'd like, but we have to test it on *something*, 21 // and it'd not be hard to update if the rule does change. 22 arg := rule.Args[0] 23 assert.Equal(t, "name", arg.Name) 24 assert.True(t, arg.Required) 25 assert.False(t, arg.Deprecated) 26 assert.Equal(t, []string{"str"}, arg.Types) 27 assert.Equal(t, "Name of the rule", arg.Comment) 28 arg = rule.Args[2] 29 assert.Equal(t, "hdrs", arg.Name) 30 assert.False(t, arg.Required) 31 assert.False(t, arg.Deprecated) 32 assert.Equal(t, []string{"list"}, arg.Types) 33 assert.Equal(t, "Header files. These will be made available to dependent rules, so the distinction between srcs and hdrs is important.", arg.Comment) 34 } 35 36 func TestMultilineComment(t *testing.T) { 37 env := getRuleArgs(core.NewDefaultBuildState(), nil) 38 rule := env.Functions["new_http_archive"] 39 assert.True(t, strings.Count(rule.Comment, "\n") > 1) 40 }