`Dependencies` in module_bp_java_deps.json currently only contains the `libs` and `static_libs` of the corresponding module. This is only a subset of the dependencies which are required to compile the java module. Most notably, the SDK deps (determined using `sdk_version`) are missing. This CL adds all the compile dependencies to the json file. Implementation details: 1. Add a `compileDepNames` to java.Module in base.go. Almost all the module types in java package are composed with the java.Module struct. 2. Populate this property in java.Module.collectDeps. This function is used by java.Module.compile to determine the classpath used for compilation. 3. Return `compileDepNames` in java.Module.CompilerDeps. Since `compileDepNames` is populated in `GenerateAndroidBuildActions`, update existing unit tests that check for correctness of IDEInfo.Deps Bug: 353811607 Test: m nothing --no-skip-soong-tests Test: cat out/soong/module_bp_java_deps.json | jq '."DebuggingRestrictionController".dependencies' [ "android_system_stubs_current", <-- missing previously "core-lambda-stubs", <-- missing previously "core-public-stubs-system-modules", <-- missing previously "com.google.android.material_material", ... ... ] Change-Id: I166c0eaf6e87ca7adc98bb4e21447cf82612d103
106 lines
3.0 KiB
Go
106 lines
3.0 KiB
Go
// Copyright 2018 Google Inc. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package java
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"android/soong/android"
|
|
)
|
|
|
|
func TestCollectJavaLibraryPropertiesAddLibsDeps(t *testing.T) {
|
|
ctx, _ := testJava(t,
|
|
`
|
|
java_library {name: "Foo"}
|
|
java_library {name: "Bar"}
|
|
java_library {
|
|
name: "javalib",
|
|
libs: ["Foo", "Bar"],
|
|
}
|
|
`)
|
|
module := ctx.ModuleForTests("javalib", "android_common").Module().(*Library)
|
|
dpInfo := &android.IdeInfo{}
|
|
|
|
module.IDEInfo(dpInfo)
|
|
|
|
for _, expected := range []string{"Foo", "Bar"} {
|
|
if !android.InList(expected, dpInfo.Deps) {
|
|
t.Errorf("Library.IDEInfo() Deps = %v, %v not found", dpInfo.Deps, expected)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCollectJavaLibraryPropertiesAddStaticLibsDeps(t *testing.T) {
|
|
ctx, _ := testJava(t,
|
|
`
|
|
java_library {name: "Foo"}
|
|
java_library {name: "Bar"}
|
|
java_library {
|
|
name: "javalib",
|
|
static_libs: ["Foo", "Bar"],
|
|
}
|
|
`)
|
|
module := ctx.ModuleForTests("javalib", "android_common").Module().(*Library)
|
|
dpInfo := &android.IdeInfo{}
|
|
|
|
module.IDEInfo(dpInfo)
|
|
|
|
for _, expected := range []string{"Foo", "Bar"} {
|
|
if !android.InList(expected, dpInfo.Deps) {
|
|
t.Errorf("Library.IDEInfo() Deps = %v, %v not found", dpInfo.Deps, expected)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestCollectJavaLibraryPropertiesAddScrs(t *testing.T) {
|
|
expected := []string{"Foo", "Bar"}
|
|
module := LibraryFactory().(*Library)
|
|
module.expandIDEInfoCompiledSrcs = append(module.expandIDEInfoCompiledSrcs, expected...)
|
|
dpInfo := &android.IdeInfo{}
|
|
|
|
module.IDEInfo(dpInfo)
|
|
|
|
if !reflect.DeepEqual(dpInfo.Srcs, expected) {
|
|
t.Errorf("Library.IDEInfo() Srcs = %v, want %v", dpInfo.Srcs, expected)
|
|
}
|
|
}
|
|
|
|
func TestCollectJavaLibraryPropertiesAddAidlIncludeDirs(t *testing.T) {
|
|
expected := []string{"Foo", "Bar"}
|
|
module := LibraryFactory().(*Library)
|
|
module.deviceProperties.Aidl.Include_dirs = append(module.deviceProperties.Aidl.Include_dirs, expected...)
|
|
dpInfo := &android.IdeInfo{}
|
|
|
|
module.IDEInfo(dpInfo)
|
|
|
|
if !reflect.DeepEqual(dpInfo.Aidl_include_dirs, expected) {
|
|
t.Errorf("Library.IDEInfo() Aidl_include_dirs = %v, want %v", dpInfo.Aidl_include_dirs, expected)
|
|
}
|
|
}
|
|
|
|
func TestCollectJavaLibraryPropertiesAddJarjarRules(t *testing.T) {
|
|
expected := "Jarjar_rules.txt"
|
|
module := LibraryFactory().(*Library)
|
|
module.expandJarjarRules = android.PathForTesting(expected)
|
|
dpInfo := &android.IdeInfo{}
|
|
|
|
module.IDEInfo(dpInfo)
|
|
|
|
if dpInfo.Jarjar_rules[0] != expected {
|
|
t.Errorf("Library.IDEInfo() Jarjar_rules = %v, want %v", dpInfo.Jarjar_rules[0], expected)
|
|
}
|
|
}
|