Check the contents of an SDK snapshot's generated Android.bp

Test: m nothing
Bug: 143678475
Change-Id: I407d83c79d6b1ad8082e560726f0bfa7cacab3f0
diff --git a/sdk/sdk.go b/sdk/sdk.go
index ac6fce9..321d5ab 100644
--- a/sdk/sdk.go
+++ b/sdk/sdk.go
@@ -44,6 +44,9 @@
 	properties sdkProperties
 
 	snapshotFile android.OptionalPath
+
+	// The builder, preserved for testing.
+	builderForTests *snapshotBuilder
 }
 
 type sdkProperties struct {
diff --git a/sdk/sdk_test.go b/sdk/sdk_test.go
index b40ec13..a4f54ef 100644
--- a/sdk/sdk_test.go
+++ b/sdk/sdk_test.go
@@ -491,9 +491,98 @@
 		}
 	`)
 
+	sdk := ctx.ModuleForTests("mysdk", "android_common").Module().(*sdk)
+
+	checkSnapshotAndroidBpContents(t, sdk, `// This is auto-generated. DO NOT EDIT.
+
+java_import {
+    name: "mysdk_myjavalib@current",
+    sdk_member_name: "myjavalib",
+    jars: ["java/myjavalib.jar"],
+}
+
+java_import {
+    name: "myjavalib",
+    prefer: false,
+    jars: ["java/myjavalib.jar"],
+}
+
+prebuilt_stubs_sources {
+    name: "mysdk_myjavaapistubs@current",
+    sdk_member_name: "myjavaapistubs",
+    srcs: ["java/myjavaapistubs_stubs_sources"],
+}
+
+prebuilt_stubs_sources {
+    name: "myjavaapistubs",
+    srcs: ["java/myjavaapistubs_stubs_sources"],
+    prefer: false,
+}
+
+cc_prebuilt_library_shared {
+    name: "mysdk_mynativelib@current",
+    sdk_member_name: "mynativelib",
+    arch: {
+        arm64: {
+            srcs: ["arm64/lib/mynativelib.so"],
+            export_include_dirs: [
+                "arm64/include/include",
+                "arm64/include_gen/mynativelib",
+            ],
+        },
+        arm: {
+            srcs: ["arm/lib/mynativelib.so"],
+            export_include_dirs: [
+                "arm/include/include",
+                "arm/include_gen/mynativelib",
+            ],
+        },
+    },
+    stl: "none",
+    system_shared_libs: [],
+}
+
+cc_prebuilt_library_shared {
+    name: "mynativelib",
+    prefer: false,
+    arch: {
+        arm64: {
+            srcs: ["arm64/lib/mynativelib.so"],
+            export_include_dirs: [
+                "arm64/include/include",
+                "arm64/include_gen/mynativelib",
+            ],
+        },
+        arm: {
+            srcs: ["arm/lib/mynativelib.so"],
+            export_include_dirs: [
+                "arm/include/include",
+                "arm/include_gen/mynativelib",
+            ],
+        },
+    },
+    stl: "none",
+    system_shared_libs: [],
+}
+
+sdk_snapshot {
+    name: "mysdk@current",
+    java_libs: [
+        "mysdk_myjavalib@current",
+    ],
+    stubs_sources: [
+        "mysdk_myjavaapistubs@current",
+    ],
+    native_shared_libs: [
+        "mysdk_mynativelib@current",
+    ],
+}
+
+`)
+
 	var copySrcs []string
 	var copyDests []string
-	buildParams := ctx.ModuleForTests("mysdk", "android_common").Module().BuildParamsForTests()
+	buildParams := sdk.BuildParamsForTests()
 	var zipBp android.BuildParams
 	for _, bp := range buildParams {
 		ruleString := bp.Rule.String()
@@ -536,6 +625,14 @@
 	}
 }
 
+func checkSnapshotAndroidBpContents(t *testing.T, s *sdk, expectedContents string) {
+	t.Helper()
+	androidBpContents := strings.NewReplacer("\\n", "\n").Replace(s.GetAndroidBpContentsForTests())
+	if androidBpContents != expectedContents {
+		t.Errorf("Android.bp contents do not match, expected %s, actual %s", expectedContents, androidBpContents)
+	}
+}
+
 var buildDir string
 
 func setUp() {
diff --git a/sdk/update.go b/sdk/update.go
index 6d7b3ec..e45bd49 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -249,6 +249,7 @@
 		filesToZip:    []android.Path{bp.path},
 		androidBpFile: bp,
 	}
+	s.builderForTests = builder
 
 	// copy exported AIDL files and stub jar files
 	javaLibs := s.javaLibs(ctx)
@@ -350,6 +351,10 @@
 	return outputZipFile
 }
 
+func (s *sdk) GetAndroidBpContentsForTests() string {
+	return s.builderForTests.androidBpFile.content.String()
+}
+
 func buildSharedNativeLibSnapshot(ctx android.ModuleContext, info *nativeLibInfo, builder android.SnapshotBuilder) {
 	// a function for emitting include dirs
 	printExportedDirCopyCommandsForNativeLibs := func(lib archSpecificNativeLibInfo) {