1
16
17 package warn
18
19 import "testing"
20
21 func TestBzlVisibility(t *testing.T) {
22 checkFindings(t, "bzl-visibility", `
23 load("//foo/bar/internal/baz:module.bzl", "foo")
24 load("//foo/bar/private/baz:module.bzl", "bar")
25 load("//foo/bar/external/baz:module.bzl", "baz")
26
27 foo()
28 bar()
29 baz()
30 `,
31 []string{
32 `:1: Module "//foo/bar/internal/baz:module.bzl" can only be loaded from files located inside "//foo/bar", not from "//test/package/`,
33 `:2: Module "//foo/bar/private/baz:module.bzl" can only be loaded from files located inside "//foo/bar", not from "//test/package/`,
34 },
35 scopeEverywhere)
36
37 checkFindings(t, "bzl-visibility", `
38 load("//foo/bar/internal:module.bzl", "foo")
39 load("//foo/bar/private:module.bzl", "bar")
40 load("//foo/bar/external:module.bzl", "baz")
41
42 foo()
43 bar()
44 baz()
45 `,
46 []string{
47 `:1: Module "//foo/bar/internal:module.bzl" can only be loaded from files located inside "//foo/bar", not from "//test/package/`,
48 `:2: Module "//foo/bar/private:module.bzl" can only be loaded from files located inside "//foo/bar", not from "//test/package/`,
49 },
50 scopeEverywhere)
51
52 checkFindings(t, "bzl-visibility", `
53 load("@repo//foo/bar/internal:module.bzl", "foo")
54 load("@repo//foo/bar/private:module.bzl", "bar")
55 load("@repo//foo/bar/external:module.bzl", "baz")
56 load("@repo/internal:module.bzl", "qux") # incorrect, but shouldn't cause buildifier crashes
57
58
59 foo()
60 bar()
61 baz()
62 qux()
63 `,
64 []string{
65 `:1: Module "@repo//foo/bar/internal:module.bzl" can only be loaded from files located inside "//foo/bar", not from "//test/package/`,
66 `:2: Module "@repo//foo/bar/private:module.bzl" can only be loaded from files located inside "//foo/bar", not from "//test/package/`,
67 `:4: Module "@repo/internal:module.bzl" can only be loaded from files located inside "@repo", not from "//test/package/`,
68 },
69 scopeEverywhere)
70
71 checkFindings(t, "bzl-visibility", `
72 load("//test/internal/foo:module.bzl", "foo")
73 load("//test/private/foo:module.bzl", "bar")
74 load("//test/external/foo:module.bzl", "baz")
75 load("//test/internal:module.bzl", "foo")
76 load("//test/private:module.bzl", "bar")
77 load("//test/external:module.bzl", "baz")
78 `,
79 []string{},
80 scopeEverywhere)
81
82 checkFindings(t, "bzl-visibility", `
83 load("@repo//test/internal/foo:module.bzl", "foo")
84 load("@repo//test/private/foo:module.bzl", "bar")
85 load("@repo//test/external/foo:module.bzl", "baz")
86 load("@repo//test/internal:module.bzl", "foo")
87 load("@repo//test/private:module.bzl", "bar")
88 load("@repo//test/external:module.bzl", "baz")
89 `,
90 []string{},
91 scopeEverywhere)
92 }
93
94 func TestBzlVisibilityJavatest(t *testing.T) {
95 defer setUpTestPackage("foo/javatests/bar")()
96
97 checkFindings(t, "bzl-visibility", `
98 load("//foo/java/bar/internal/baz:module.bzl", "foo")
99 load("//foo/java/bar/private/baz:module.bzl", "bar")
100 load("//foo/javatests/bar/internal/baz:module.bzl", "foo1")
101 load("//foo/javatests/bar/private/baz:module.bzl", "bar1")
102
103 foo()
104 bar()
105 foo1()
106 bar1()
107 `,
108 []string{},
109 scopeEverywhere)
110 }
111
View as plain text