forked from bazelbuild/bazel-gazelle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lang_test.go
74 lines (60 loc) · 2.43 KB
/
lang_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package visibility_test
import (
"fmt"
"testing"
"github.com/bazelbuild/bazel-gazelle/language/bazel/visibility"
"github.com/bazelbuild/bazel-gazelle/config"
"github.com/bazelbuild/bazel-gazelle/label"
"github.com/bazelbuild/bazel-gazelle/language"
"github.com/bazelbuild/bazel-gazelle/rule"
"github.com/stretchr/testify/require"
)
func TestNoopsBecauseILoveCoverage(t *testing.T) {
ext := visibility.NewLanguage()
ext.RegisterFlags(nil /* flagset */, "command", nil /* config */)
ext.Resolve(nil /* config */, nil /* RuleIndex */, nil /* RemoteCache */, nil /* Rule */, nil /* imports */, label.New("repo", "pkg", "name"))
ext.Fix(nil /* config */, nil /* File */)
require.Nil(t, ext.CheckFlags(nil /* flagset */, nil /* config */))
require.Nil(t, ext.Imports(nil /* rule */, nil /* rule */, nil /* file */))
require.Nil(t, ext.Embeds(nil /* rule */, label.New("repo", "pkg", "name")))
require.Nil(t, ext.Loads())
require.NotNil(t, ext.KnownDirectives())
require.NotNil(t, ext.Name())
}
func Test_NoDirective(t *testing.T) {
cfg := config.New()
file := rule.EmptyFile("path", "pkg")
ext := visibility.NewLanguage()
ext.Configure(cfg, "rel", file)
res := ext.GenerateRules(language.GenerateArgs{Config: cfg})
require.Len(t, res.Imports, 0)
require.Len(t, res.Gen, 0)
}
func Test_NewDirective(t *testing.T) {
testVis := "//src:__subpackages__"
cfg := config.New()
file, err := rule.LoadData("path", "pkg", []byte(fmt.Sprintf("# gazelle:default_visibility %s", testVis)))
require.Nil(t, err)
ext := visibility.NewLanguage()
ext.Configure(cfg, "rel", file)
res := ext.GenerateRules(language.GenerateArgs{Config: cfg})
require.Len(t, res.Gen, 1)
require.Len(t, res.Imports, 1)
require.Len(t, res.Gen[0].AttrStrings("default_visibility"), 1)
require.Equal(t, testVis, res.Gen[0].AttrStrings("default_visibility")[0])
}
func Test_ReplacementDirective(t *testing.T) {
testVis := "//src:__subpackages__"
cfg := config.New()
file, err := rule.LoadData("path", "pkg", []byte(fmt.Sprintf(`
# gazelle:default_visibility %s
package(default_visibility = "//not-src:__subpackages__")
`, testVis)))
require.Nil(t, err)
ext := visibility.NewLanguage()
ext.Configure(cfg, "rel", file)
res := ext.GenerateRules(language.GenerateArgs{Config: cfg})
require.Len(t, res.Gen, 1)
require.Len(t, res.Imports, 1)
require.Len(t, res.Gen[0].AttrStrings("default_visibility"), 1)
require.Equal(t, testVis, res.Gen[0].AttrStrings("default_visibility")[0])