diff options
Diffstat (limited to 'src/tools/javatests/com/google/devtools')
4 files changed, 69 insertions, 8 deletions
diff --git a/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/BUILD b/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/BUILD index c2b38d1..84d1663 100644 --- a/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/BUILD +++ b/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/BUILD @@ -11,16 +11,12 @@ java_test( name = "GenerateSdkDependenciesManifestCommandTest", size = "small", srcs = ["GenerateSdkDependenciesManifestCommandTest.java"], - data = [ - "testdata/com.example.firstsdkconfig.json", - "testdata/com.example.secondsdkconfig.json", - "testdata/expected_manifest_multiple_sdks.xml", - "testdata/expected_manifest_single_sdk.xml", - "testdata/test_key", - ], + data = glob(["testdata/*"]), deps = [ "//src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/utils", - "@rules_android_maven//:junit_junit", + "@rules_android_maven//:com_android_tools_build_bundletool", + "@rules_android_maven//:com_google_protobuf_protobuf_java_util", "@rules_android_maven//:com_google_truth_truth", + "@rules_android_maven//:junit_junit", ], ) diff --git a/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/GenerateSdkDependenciesManifestCommandTest.java b/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/GenerateSdkDependenciesManifestCommandTest.java index 7dc04e7..749320e 100644 --- a/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/GenerateSdkDependenciesManifestCommandTest.java +++ b/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/GenerateSdkDependenciesManifestCommandTest.java @@ -19,8 +19,13 @@ import static com.google.common.truth.Truth.assertThat; import static com.google.devtools.build.android.sandboxedsdktoolbox.utils.Runner.runCommand; import static com.google.devtools.build.android.sandboxedsdktoolbox.utils.TestData.JAVATESTS_DIR; import static com.google.devtools.build.android.sandboxedsdktoolbox.utils.TestData.readFromAbsolutePath; +import static com.google.devtools.build.android.sandboxedsdktoolbox.utils.Zip.createZipWithSingleEntry; +import com.android.bundle.SdkMetadataOuterClass.SdkMetadata; import com.google.devtools.build.android.sandboxedsdktoolbox.utils.CommandResult; +import com.google.protobuf.util.JsonFormat; +import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import org.junit.Rule; import org.junit.Test; @@ -42,6 +47,9 @@ public final class GenerateSdkDependenciesManifestCommandTest { TEST_DATA_DIR.resolve("com.example.firstsdkconfig.json"); private static final Path SECOND_SDK_CONFIG_JSON_PATH = TEST_DATA_DIR.resolve("com.example.secondsdkconfig.json"); + private static final Path ARCHIVE_CONFIG_JSON_PATH = + TEST_DATA_DIR.resolve("com.example.archivedsdkmetadata.json"); + /* The test key was generated with this command, its password is "android" keytool -genkeypair \ @@ -109,4 +117,43 @@ public final class GenerateSdkDependenciesManifestCommandTest { .isEqualTo( readFromAbsolutePath(TEST_DATA_DIR.resolve("expected_manifest_multiple_sdks.xml"))); } + + @Test + public void generateManifest_forSdksAndArchives_success() throws Exception { + String manifestPackage = "com.example.generatedmanifest"; + // Create a zip with a single file containing the SdkMetadata proto message, serialized. + Path archiveConfigPath = testFolder.getRoot().toPath().resolve("sdk.asar"); + createZipWithSingleEntry(archiveConfigPath, "SdkMetadata.pb", readSdkMetadata().toByteArray()); + Path outputFile = testFolder.newFile().toPath(); + + CommandResult result = + runCommand( + "generate-sdk-dependencies-manifest", + "--manifest-package", + manifestPackage, + "--sdk-module-configs", + FIRST_SDK_CONFIG_JSON_PATH.toString(), + "--sdk-archives", + archiveConfigPath.toString(), + "--debug-keystore", + TEST_KEY_PATH.toString(), + "--debug-keystore-pass", + "android", + "--debug-keystore-alias", + "androiddebugkey", + "--output-manifest", + outputFile.toString()); + + assertThat(result.getStatusCode()).isEqualTo(0); + assertThat(result.getOutput()).isEmpty(); + assertThat(readFromAbsolutePath(outputFile)) + .isEqualTo( + readFromAbsolutePath(TEST_DATA_DIR.resolve("expected_manifest_with_archived_sdk.xml"))); + } + + private static SdkMetadata readSdkMetadata() throws IOException { + SdkMetadata.Builder metadata = SdkMetadata.newBuilder(); + JsonFormat.parser().merge(Files.newBufferedReader(ARCHIVE_CONFIG_JSON_PATH), metadata); + return metadata.build(); + } } diff --git a/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/testdata/com.example.archivedsdkmetadata.json b/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/testdata/com.example.archivedsdkmetadata.json new file mode 100644 index 0000000..d3be443 --- /dev/null +++ b/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/testdata/com.example.archivedsdkmetadata.json @@ -0,0 +1,11 @@ +{ + "package_name": "com.example.archivedsdk", + "sdk_version": { + "major": 33, + "minor": 2, + "patch": 1 + }, + + // We always use the debug key digest instead of the one provided in the ASAR. + "certificate_digest": "fake digest that should be ignored." +}
\ No newline at end of file diff --git a/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/testdata/expected_manifest_with_archived_sdk.xml b/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/testdata/expected_manifest_with_archived_sdk.xml new file mode 100644 index 0000000..e3bab8f --- /dev/null +++ b/src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/testdata/expected_manifest_with_archived_sdk.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.generatedmanifest"> + <application> + <uses-sdk-library android:certDigest="91:8E:A3:7D:7D:D0:E0:A0:14:9F:21:28:83:95:8A:F0:80:E6:F9:7B:4D:5A:39:01:76:02:E8:2D:7D:FF:A9:10" android:name="com.example.firstsdkconfig" android:versionMajor="20003"/> + <uses-sdk-library android:certDigest="91:8E:A3:7D:7D:D0:E0:A0:14:9F:21:28:83:95:8A:F0:80:E6:F9:7B:4D:5A:39:01:76:02:E8:2D:7D:FF:A9:10" android:name="com.example.archivedsdk" android:versionMajor="330002"/> + </application> +</manifest>
\ No newline at end of file |