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 40ccf14a1..9c43d53e6 100644 --- a/android/neverallow_test.go +++ b/android/neverallow_test.go @@ -178,6 +178,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) { @@ -200,6 +212,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",