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  }