Allow per test rules in neverallow_test.go
Makes testing individual rules easier by allowing them to be specified
per test rather than having to add them to the global defaults.
Bug: 138428610
Test: m nothing
Change-Id: Ic65a55dee2a02b6d33254753c047295dd5804408
diff --git a/android/neverallow_test.go b/android/neverallow_test.go
index 1a75e3d..4584585 100644
--- a/android/neverallow_test.go
+++ b/android/neverallow_test.go
@@ -20,16 +20,19 @@
"github.com/google/blueprint"
)
-func init() {
- // Add extra rules needed for testing.
- AddNeverAllowRules(
- NeverAllow().InDirectDeps("not_allowed_in_direct_deps"),
- )
-}
-
var neverallowTests = []struct {
- name string
- fs map[string][]byte
+ // The name of the test.
+ name string
+
+ // Optional test specific rules. If specified then they are used instead of the default rules.
+ rules []Rule
+
+ // Additional contents to add to the virtual filesystem used by the tests.
+ fs map[string][]byte
+
+ // The expected error patterns. If empty then no errors are expected, otherwise each error
+ // reported must be matched by at least one of these patterns. A pattern matches if the error
+ // message contains the pattern. A pattern does not have to match the whole error message.
expectedErrors []string
}{
// Test General Functionality
@@ -37,6 +40,9 @@
// in direct deps tests
{
name: "not_allowed_in_direct_deps",
+ rules: []Rule{
+ NeverAllow().InDirectDeps("not_allowed_in_direct_deps"),
+ },
fs: map[string][]byte{
"top/Blueprints": []byte(`
cc_library {
@@ -53,7 +59,7 @@
},
},
- // Test specific rules
+ // Test android specific rules
// include_dir rule tests
{
@@ -247,11 +253,15 @@
}
func TestNeverallow(t *testing.T) {
- config := TestConfig(buildDir, nil)
-
for _, test := range neverallowTests {
+ // Create a test per config to allow for test specific config, e.g. test rules.
+ config := TestConfig(buildDir, nil)
t.Run(test.name, func(t *testing.T) {
+ // If the test has its own rules then use them instead of the default ones.
+ if test.rules != nil {
+ setTestNeverallowRules(config, test.rules)
+ }
_, errs := testNeverallow(config, test.fs)
CheckErrorsAgainstExpectations(t, errs, test.expectedErrors)
})