diff options
Diffstat (limited to 'java')
-rw-r--r-- | java/Android.bp | 1 | ||||
-rw-r--r-- | java/code_metadata_test.go | 125 | ||||
-rw-r--r-- | java/sdk_library.go | 1 | ||||
-rw-r--r-- | java/test_spec_test.go | 10 |
4 files changed, 132 insertions, 5 deletions
diff --git a/java/Android.bp b/java/Android.bp index aa63aa30a..d39a1954b 100644 --- a/java/Android.bp +++ b/java/Android.bp @@ -86,6 +86,7 @@ bootstrap_go_package { "app_import_test.go", "app_set_test.go", "app_test.go", + "code_metadata_test.go", "bootclasspath_fragment_test.go", "device_host_converter_test.go", "dex_test.go", diff --git a/java/code_metadata_test.go b/java/code_metadata_test.go new file mode 100644 index 000000000..4b05d9ea6 --- /dev/null +++ b/java/code_metadata_test.go @@ -0,0 +1,125 @@ +package java + +import ( + "strings" + "testing" + + "android/soong/android" + soongTesting "android/soong/testing" + "android/soong/testing/code_metadata_internal_proto" + "google.golang.org/protobuf/proto" +) + +func TestCodeMetadata(t *testing.T) { + bp := `code_metadata { + name: "module-name", + teamId: "12345", + code: [ + "foo", + ] + } + + java_sdk_library { + name: "foo", + srcs: ["a.java"], + }` + result := runCodeMetadataTest(t, android.FixtureExpectsNoErrors, bp) + + module := result.ModuleForTests( + "module-name", "", + ).Module().(*soongTesting.CodeMetadataModule) + + // Check that the provider has the right contents + data := result.ModuleProvider( + module, soongTesting.CodeMetadataProviderKey, + ).(soongTesting.CodeMetadataProviderData) + if !strings.HasSuffix( + data.IntermediatePath.String(), "/intermediateCodeMetadata.pb", + ) { + t.Errorf( + "Missing intermediates path in provider: %s", + data.IntermediatePath.String(), + ) + } + + buildParamsSlice := module.BuildParamsForTests() + var metadata = "" + for _, params := range buildParamsSlice { + if params.Rule.String() == "android/soong/android.writeFile" { + metadata = params.Args["content"] + } + } + + metadataList := make([]*code_metadata_internal_proto.CodeMetadataInternal_TargetOwnership, 0, 2) + teamId := "12345" + bpFilePath := "Android.bp" + targetName := "foo" + srcFile := []string{"a.java"} + expectedMetadataProto := code_metadata_internal_proto.CodeMetadataInternal_TargetOwnership{ + TrendyTeamId: &teamId, + TargetName: &targetName, + Path: &bpFilePath, + SourceFiles: srcFile, + } + metadataList = append(metadataList, &expectedMetadataProto) + + CodeMetadataMetadata := code_metadata_internal_proto.CodeMetadataInternal{TargetOwnershipList: metadataList} + protoData, _ := proto.Marshal(&CodeMetadataMetadata) + rawData := string(protoData) + formattedData := strings.ReplaceAll(rawData, "\n", "\\n") + expectedMetadata := "'" + formattedData + "\\n'" + + if metadata != expectedMetadata { + t.Errorf( + "Retrieved metadata: %s is not equal to expectedMetadata: %s", metadata, + expectedMetadata, + ) + } + + // Tests for all_test_spec singleton. + singleton := result.SingletonForTests("all_code_metadata") + rule := singleton.Rule("all_code_metadata_rule") + prebuiltOs := result.Config.PrebuiltOS() + expectedCmd := "out/soong/host/" + prebuiltOs + "/bin/metadata -rule code_metadata -inputFile out/soong/all_code_metadata_paths.rsp -outputFile out/soong/ownership/all_code_metadata.pb" + expectedOutputFile := "out/soong/ownership/all_code_metadata.pb" + expectedInputFile := "out/soong/.intermediates/module-name/intermediateCodeMetadata.pb" + if !strings.Contains( + strings.TrimSpace(rule.Output.String()), + expectedOutputFile, + ) { + t.Errorf( + "Retrieved singletonOutputFile: %s is not equal to expectedSingletonOutputFile: %s", + rule.Output.String(), expectedOutputFile, + ) + } + + if !strings.Contains( + strings.TrimSpace(rule.Inputs[0].String()), + expectedInputFile, + ) { + t.Errorf( + "Retrieved singletonInputFile: %s is not equal to expectedSingletonInputFile: %s", + rule.Inputs[0].String(), expectedInputFile, + ) + } + + if !strings.Contains( + strings.TrimSpace(rule.RuleParams.Command), + expectedCmd, + ) { + t.Errorf( + "Retrieved cmd: %s doesn't contain expectedCmd: %s", + rule.RuleParams.Command, expectedCmd, + ) + } +} +func runCodeMetadataTest( + t *testing.T, errorHandler android.FixtureErrorHandler, bp string, +) *android.TestResult { + return android.GroupFixturePreparers( + soongTesting.PrepareForTestWithTestingBuildComponents, prepareForJavaTest, + PrepareForTestWithJavaSdkLibraryFiles, FixtureWithLastReleaseApis("foo"), + ). + ExtendWithErrorHandler(errorHandler). + RunTestWithBp(t, bp) +} diff --git a/java/sdk_library.go b/java/sdk_library.go index fbfe509b8..4eaa3824f 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -1477,6 +1477,7 @@ func (module *SdkLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) } } ctx.SetProvider(android.AdditionalSdkInfoProvider, android.AdditionalSdkInfo{additionalSdkInfo}) + ctx.SetProvider(android.SrcsFileProviderKey, android.SrcsFileProviderData{SrcPaths: module.uniqueSrcFiles}) } func (module *SdkLibrary) AndroidMkEntries() []android.AndroidMkEntries { diff --git a/java/test_spec_test.go b/java/test_spec_test.go index 39aff4cef..7f06785b0 100644 --- a/java/test_spec_test.go +++ b/java/test_spec_test.go @@ -27,7 +27,7 @@ func TestTestSpec(t *testing.T) { java_test { name: "java-test-module-name-two", }` - result := runTest(t, android.FixtureExpectsNoErrors, bp) + result := runTestSpecTest(t, android.FixtureExpectsNoErrors, bp) module := result.ModuleForTests( "module-name", "", @@ -78,7 +78,7 @@ func TestTestSpec(t *testing.T) { if metadata != expectedMetadata { t.Errorf( - "Retrieved metadata: %s is not equal to expectedMetadata: %s", metadata, + "Retrieved metadata: %s doesn't contain expectedMetadata: %s", metadata, expectedMetadata, ) } @@ -121,11 +121,11 @@ func TestTestSpec(t *testing.T) { } } -func runTest( - t *testing.T, errorHandler android.FixtureErrorHandler, bp string, +func runTestSpecTest( + t *testing.T, errorHandler android.FixtureErrorHandler, bp string, ) *android.TestResult { return android.GroupFixturePreparers( - soongTesting.PrepareForTestWithTestSpecBuildComponents, + soongTesting.PrepareForTestWithTestingBuildComponents, PrepareForIntegrationTestWithJava, ). ExtendWithErrorHandler(errorHandler). |