aboutsummaryrefslogtreecommitdiff
path: root/src/tools/javatests/com/google/devtools
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/javatests/com/google/devtools')
-rw-r--r--src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/BUILD12
-rw-r--r--src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/GenerateSdkDependenciesManifestCommandTest.java47
-rw-r--r--src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/testdata/com.example.archivedsdkmetadata.json11
-rw-r--r--src/tools/javatests/com/google/devtools/build/android/sandboxedsdktoolbox/sdkdependenciesmanifest/testdata/expected_manifest_with_archived_sdk.xml7
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