1// Copyright 2022 Google Inc. All rights reserved. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package java 16 17import ( 18 "testing" 19 20 "android/soong/android" 21) 22 23func TestR8(t *testing.T) { 24 result := PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd.RunTestWithBp(t, ` 25 android_app { 26 name: "app", 27 srcs: ["foo.java"], 28 libs: ["lib"], 29 static_libs: ["static_lib"], 30 platform_apis: true, 31 } 32 33 java_library { 34 name: "lib", 35 srcs: ["foo.java"], 36 } 37 38 java_library { 39 name: "static_lib", 40 srcs: ["foo.java"], 41 } 42 `) 43 44 app := result.ModuleForTests("app", "android_common") 45 lib := result.ModuleForTests("lib", "android_common") 46 staticLib := result.ModuleForTests("static_lib", "android_common") 47 48 appJavac := app.Rule("javac") 49 appR8 := app.Rule("r8") 50 libHeader := lib.Output("turbine-combined/lib.jar").Output 51 staticLibHeader := staticLib.Output("turbine-combined/static_lib.jar").Output 52 53 android.AssertStringDoesContain(t, "expected lib header jar in app javac classpath", 54 appJavac.Args["classpath"], libHeader.String()) 55 android.AssertStringDoesContain(t, "expected static_lib header jar in app javac classpath", 56 appJavac.Args["classpath"], staticLibHeader.String()) 57 58 android.AssertStringDoesContain(t, "expected lib header jar in app r8 classpath", 59 appR8.Args["r8Flags"], libHeader.String()) 60 android.AssertStringDoesNotContain(t, "expected no static_lib header jar in app javac classpath", 61 appR8.Args["r8Flags"], staticLibHeader.String()) 62} 63 64func TestD8(t *testing.T) { 65 result := PrepareForTestWithJavaDefaultModulesWithoutFakeDex2oatd.RunTestWithBp(t, ` 66 java_library { 67 name: "foo", 68 srcs: ["foo.java"], 69 libs: ["lib"], 70 static_libs: ["static_lib"], 71 installable: true, 72 } 73 74 java_library { 75 name: "lib", 76 srcs: ["foo.java"], 77 } 78 79 java_library { 80 name: "static_lib", 81 srcs: ["foo.java"], 82 } 83 `) 84 85 foo := result.ModuleForTests("foo", "android_common") 86 lib := result.ModuleForTests("lib", "android_common") 87 staticLib := result.ModuleForTests("static_lib", "android_common") 88 89 fooJavac := foo.Rule("javac") 90 fooD8 := foo.Rule("d8") 91 libHeader := lib.Output("turbine-combined/lib.jar").Output 92 staticLibHeader := staticLib.Output("turbine-combined/static_lib.jar").Output 93 94 android.AssertStringDoesContain(t, "expected lib header jar in foo javac classpath", 95 fooJavac.Args["classpath"], libHeader.String()) 96 android.AssertStringDoesContain(t, "expected static_lib header jar in foo javac classpath", 97 fooJavac.Args["classpath"], staticLibHeader.String()) 98 99 android.AssertStringDoesContain(t, "expected lib header jar in foo d8 classpath", 100 fooD8.Args["d8Flags"], libHeader.String()) 101 android.AssertStringDoesNotContain(t, "expected no static_lib header jar in foo javac classpath", 102 fooD8.Args["d8Flags"], staticLibHeader.String()) 103} 104