Add tests for core library neverallow rules

am: b6c6bdd1c2

Change-Id: I038cac7caec29afb74bda6c2f3e57f7aafe42632
This commit is contained in:
Paul Duffin
2019-06-12 03:06:54 -07:00
committed by android-build-merger
2 changed files with 38 additions and 2 deletions

View File

@@ -95,6 +95,9 @@ func createLibcoreRules() []*rule {
"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 @@ func createLibcoreRules() []*rule {
// visibility rules.
rules := []*rule{
neverallow().
notIn(append(coreLibraryProjects, "development")...).
notIn(coreLibraryProjects...).
with("no_standard_libs", "true"),
}

View File

@@ -148,6 +148,38 @@ var neverallowTests = []struct {
},
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 @@ func (p *mockCcLibraryModule) GenerateAndroidBuildActions(ModuleContext) {
}
type mockJavaLibraryProperties struct {
Libs []string
Libs []string
No_standard_libs *bool
}
type mockJavaLibraryModule struct {