xref: /aosp_15_r20/build/soong/java/generated_java_library_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1 // Copyright 2018 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 
15 package java
16 
17 import (
18 	"testing"
19 
20 	"android/soong/android"
21 )
22 
23 func JavaGenLibTestFactory() android.Module {
24 	callbacks := &JavaGenLibTestCallbacks{}
25 	return GeneratedJavaLibraryModuleFactory("test_java_gen_lib", callbacks, &callbacks.properties)
26 }
27 
28 type JavaGenLibTestProperties struct {
29 	Foo string
30 }
31 
32 type JavaGenLibTestCallbacks struct {
33 	properties JavaGenLibTestProperties
34 }
35 
36 func (callbacks *JavaGenLibTestCallbacks) DepsMutator(module *GeneratedJavaLibraryModule, ctx android.BottomUpMutatorContext) {
37 }
38 
39 func (callbacks *JavaGenLibTestCallbacks) GenerateSourceJarBuildActions(module *GeneratedJavaLibraryModule, ctx android.ModuleContext) (android.Path, android.Path) {
40 	return android.PathForOutput(ctx, "blah.srcjar"), android.PathForOutput(ctx, "blah.pb")
41 }
42 
43 func testGenLib(t *testing.T, errorHandler android.FixtureErrorHandler, bp string) *android.TestResult {
44 	return android.GroupFixturePreparers(
45 		PrepareForIntegrationTestWithJava,
46 		android.FixtureRegisterWithContext(func(ctx android.RegistrationContext) {
47 			ctx.RegisterModuleType("test_java_gen_lib", JavaGenLibTestFactory)
48 		}),
49 	).
50 		ExtendWithErrorHandler(errorHandler).
51 		RunTestWithBp(t, bp)
52 }
53 
54 func TestGenLib(t *testing.T) {
55 	bp := `
56 				test_java_gen_lib {
57 					name: "javagenlibtest",
58                     foo: "bar",  // Note: This won't parse if the property didn't get added
59 				}
60 			`
61 	result := testGenLib(t, android.FixtureExpectsNoErrors, bp)
62 
63 	javagenlibtest := result.ModuleForTests("javagenlibtest", "android_common").Module().(*GeneratedJavaLibraryModule)
64 	android.AssertPathsEndWith(t, "Generated_srcjars", []string{"/blah.srcjar"}, javagenlibtest.Library.properties.Generated_srcjars)
65 }
66