Add tests for core library neverallow rules
Bug: 134566750
Test: m
Change-Id: I65e2afdf726937c29fc4f62a317024dc133254bf
diff --git a/android/neverallow.go b/android/neverallow.go
index 9314483..ee3bf4a 100644
--- a/android/neverallow.go
+++ b/android/neverallow.go
@@ -95,6 +95,9 @@
"external/icu",
"external/okhttp",
"external/wycheproof",
+
+ // Not really a core library but still needs access to same capabilities.
+ "development",
}
// Core library constraints. The no_standard_libs can only be used in core
@@ -102,7 +105,7 @@
// visibility rules.
rules := []*rule{
neverallow().
- notIn(append(coreLibraryProjects, "development")...).
+ notIn(coreLibraryProjects...).
with("no_standard_libs", "true"),
}
diff --git a/android/neverallow_test.go b/android/neverallow_test.go
index 00c51ea..c60de21 100644
--- a/android/neverallow_test.go
+++ b/android/neverallow_test.go
@@ -148,6 +148,38 @@
},
expectedError: "java_device_for_host can only be used in whitelisted projects",
},
+ // Libcore rule tests
+ {
+ name: "no_standard_libs: true inside core libraries",
+ fs: map[string][]byte{
+ "libcore/Blueprints": []byte(`
+ java_library {
+ name: "inside_core_libraries",
+ no_standard_libs: true,
+ }`),
+ },
+ },
+ {
+ name: "no_standard_libs: true outside core libraries",
+ fs: map[string][]byte{
+ "Blueprints": []byte(`
+ java_library {
+ name: "outside_core_libraries",
+ no_standard_libs: true,
+ }`),
+ },
+ expectedError: "module \"outside_core_libraries\": violates neverallow",
+ },
+ {
+ name: "no_standard_libs: false",
+ fs: map[string][]byte{
+ "Blueprints": []byte(`
+ java_library {
+ name: "outside_core_libraries",
+ no_standard_libs: false,
+ }`),
+ },
+ },
}
func TestNeverallow(t *testing.T) {
@@ -227,7 +259,8 @@
}
type mockJavaLibraryProperties struct {
- Libs []string
+ Libs []string
+ No_standard_libs *bool
}
type mockJavaLibraryModule struct {