From b815ada8c0c231be8e32e2dd4db7fbb33140f885 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Tue, 11 Jun 2019 13:54:26 +0100 Subject: [PATCH] Never allow java_library_host with no_standard_libs: true This combination makes no sense. Bug: 134566750 Test: m droid Change-Id: Ib37bbac165395c003d23225e0469ba60fa6a56ea --- android/neverallow.go | 10 ++++++++++ android/neverallow_test.go | 13 +++++++++++++ java/sdk_test.go | 7 ------- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/android/neverallow.go b/android/neverallow.go index ee3bf4a5e..ecff62d05 100644 --- a/android/neverallow.go +++ b/android/neverallow.go @@ -52,6 +52,7 @@ func createNeverAllows() []*rule { rules = append(rules, createTrebleRules()...) rules = append(rules, createLibcoreRules()...) rules = append(rules, createJavaDeviceForHostRules()...) + rules = append(rules, createJavaLibraryHostRules()...) return rules } @@ -127,6 +128,15 @@ func createJavaDeviceForHostRules() []*rule { } } +func createJavaLibraryHostRules() []*rule { + return []*rule{ + neverallow(). + moduleType("java_library_host"). + with("no_standard_libs", "true"). + because("no_standard_libs makes no sense with java_library_host"), + } +} + func neverallowMutator(ctx BottomUpMutatorContext) { m, ok := ctx.Module().(Module) if !ok { diff --git a/android/neverallow_test.go b/android/neverallow_test.go index c60de217c..41751e7c7 100644 --- a/android/neverallow_test.go +++ b/android/neverallow_test.go @@ -180,6 +180,18 @@ var neverallowTests = []struct { }`), }, }, + // java_library_host rule tests + { + name: "java_library_host with no_standard_libs: true", + fs: map[string][]byte{ + "libcore/Blueprints": []byte(` + java_library_host { + name: "inside_core_libraries", + no_standard_libs: true, + }`), + }, + expectedError: "module \"inside_core_libraries\": violates neverallow", + }, } func TestNeverallow(t *testing.T) { @@ -208,6 +220,7 @@ func testNeverallow(t *testing.T, config Config, fs map[string][]byte) (*TestCon ctx := NewTestContext() ctx.RegisterModuleType("cc_library", ModuleFactoryAdaptor(newMockCcLibraryModule)) ctx.RegisterModuleType("java_library", ModuleFactoryAdaptor(newMockJavaLibraryModule)) + ctx.RegisterModuleType("java_library_host", ModuleFactoryAdaptor(newMockJavaLibraryModule)) ctx.RegisterModuleType("java_device_for_host", ModuleFactoryAdaptor(newMockJavaLibraryModule)) ctx.PostDepsMutators(registerNeverallowMutator) ctx.Register() diff --git a/java/sdk_test.go b/java/sdk_test.go index 142d6f55e..23d7a98be 100644 --- a/java/sdk_test.go +++ b/java/sdk_test.go @@ -136,13 +136,6 @@ func TestClasspath(t *testing.T) { bootclasspath: []string{"jdk8/jre/lib/jce.jar", "jdk8/jre/lib/rt.jar"}, classpath: []string{}, }, - { - name: "host nostdlib", - moduleType: "java_library_host", - host: android.Host, - properties: `no_standard_libs: true`, - classpath: []string{}, - }, { name: "host supported default",