Merge "Fix signature test issue caused by https://r.android.com/1613103" into sc-dev
diff --git a/tests/signature/api-check/shared-libs-api/src/android/signature/cts/api/SignatureMultiLibsTest.java b/tests/signature/api-check/shared-libs-api/src/android/signature/cts/api/SignatureMultiLibsTest.java
index 4c0a31a..d9d1cb6 100644
--- a/tests/signature/api-check/shared-libs-api/src/android/signature/cts/api/SignatureMultiLibsTest.java
+++ b/tests/signature/api-check/shared-libs-api/src/android/signature/cts/api/SignatureMultiLibsTest.java
@@ -47,7 +47,7 @@
             ApiDocumentParser apiDocumentParser = new ApiDocumentParser(TAG);
 
             parseApiResourcesAsStream(apiDocumentParser,
-                    Stream.concat(Arrays.stream(systemApiFiles), Arrays.stream(previousApiFiles))
+                    Stream.concat(Arrays.stream(expectedApiFiles), Arrays.stream(previousApiFiles))
                     .toArray(String[]::new))
                     .forEach(complianceChecker::checkSignatureCompliance);
 
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
index 9707dd8..0eeef1a 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
@@ -119,7 +119,7 @@
         mResultObserver.onTestComplete(); // Will throw is there are failures
     }
 
-    static String[] getCommaSeparatedList(Bundle instrumentationArgs, String key) {
+    static String[] getCommaSeparatedListOptional(Bundle instrumentationArgs, String key) {
         String argument = instrumentationArgs.getString(key);
         if (argument == null) {
             return new String[0];
@@ -127,6 +127,14 @@
         return argument.split(",");
     }
 
+    static String[] getCommaSeparatedListRequired(Bundle instrumentationArgs, String key) {
+        String argument = instrumentationArgs.getString(key);
+        if (argument == null) {
+            throw new IllegalStateException("Could not find required argument '" + key + "'");
+        }
+        return argument.split(",");
+    }
+
     private Stream<VirtualPath> readResource(String resourceName) {
         try {
             ResourcePath resourcePath =
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/HiddenApiTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/HiddenApiTest.java
index 43cca41..6928e38 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/HiddenApiTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/HiddenApiTest.java
@@ -28,7 +28,6 @@
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.text.ParseException;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.function.Predicate;
@@ -45,8 +44,8 @@
 
     @Override
     protected void initializeFromArgs(Bundle instrumentationArgs) {
-        hiddenapiFiles = getCommaSeparatedList(instrumentationArgs, "hiddenapi-files");
-        hiddenapiTestFlags = getCommaSeparatedList(instrumentationArgs, "hiddenapi-test-flags");
+        hiddenapiFiles = getCommaSeparatedListRequired(instrumentationArgs, "hiddenapi-files");
+        hiddenapiTestFlags = getCommaSeparatedListRequired(instrumentationArgs, "hiddenapi-test-flags");
         hiddenapiFilterFile = instrumentationArgs.getString("hiddenapi-filter-file");
         hiddenapiFilterSet = new HashSet<>();
     }
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/SignatureTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/SignatureTest.java
index 2ef70ca..316a603 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/SignatureTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/SignatureTest.java
@@ -36,17 +36,23 @@
 
     private static final String TAG = SignatureTest.class.getSimpleName();
 
-    protected String[] systemApiFiles;
+    protected String[] expectedApiFiles;
     protected String[] previousApiFiles;
     protected String[] baseApiFiles;
     private String[] unexpectedApiFiles;
 
     @Override
     protected void initializeFromArgs(Bundle instrumentationArgs) {
-        systemApiFiles = getCommaSeparatedList(instrumentationArgs, "system-api-files");
-        baseApiFiles = getCommaSeparatedList(instrumentationArgs, "base-api-files");
-        unexpectedApiFiles = getCommaSeparatedList(instrumentationArgs, "unexpected-api-files");
-        previousApiFiles = getCommaSeparatedList(instrumentationArgs, "previous-api-files");
+        expectedApiFiles = getCommaSeparatedListOptional(instrumentationArgs, "expected-api-files");
+        baseApiFiles = getCommaSeparatedListOptional(instrumentationArgs, "base-api-files");
+        unexpectedApiFiles = getCommaSeparatedListOptional(instrumentationArgs, "unexpected-api-files");
+        previousApiFiles = getCommaSeparatedListOptional(instrumentationArgs, "previous-api-files");
+
+        if (expectedApiFiles.length + unexpectedApiFiles.length == 0) {
+            throw new IllegalStateException(
+                    "Expected at least one file to be specified in"
+                            + " 'expected-api-files' or 'unexpected-api-files'");
+        }
     }
 
     /**
@@ -73,7 +79,7 @@
             // Load classes from any API files that form the base which the expected APIs extend.
             loadBaseClasses(complianceChecker);
             // Load classes from system API files and check for signature compliance.
-            checkClassesSignatureCompliance(complianceChecker, systemApiFiles, unexpectedClasses,
+            checkClassesSignatureCompliance(complianceChecker, expectedApiFiles, unexpectedClasses,
                     false /* isPreviousApi */);
             // Load classes from previous API files and check for signature compliance.
             checkClassesSignatureCompliance(complianceChecker, previousApiFiles, unexpectedClasses,
diff --git a/tests/signature/api-check/system-annotation/src/java/android/signature/cts/api/AnnotationTest.java b/tests/signature/api-check/system-annotation/src/java/android/signature/cts/api/AnnotationTest.java
index a3c46d5..62b1bbb 100644
--- a/tests/signature/api-check/system-annotation/src/java/android/signature/cts/api/AnnotationTest.java
+++ b/tests/signature/api-check/system-annotation/src/java/android/signature/cts/api/AnnotationTest.java
@@ -16,7 +16,6 @@
 
 package android.signature.cts.api;
 
-import android.os.Build;
 import android.os.Bundle;
 import android.signature.cts.AnnotationChecker;
 import android.signature.cts.ApiDocumentParser;
@@ -42,7 +41,7 @@
 
     @Override
     protected void initializeFromArgs(Bundle instrumentationArgs) throws Exception {
-        mExpectedApiFiles = getCommaSeparatedList(instrumentationArgs, "expected-api-files");
+        mExpectedApiFiles = getCommaSeparatedListRequired(instrumentationArgs, "expected-api-files");
         mAnnotationForExactMatch = instrumentationArgs.getString("annotation-for-exact-match");
     }
 
diff --git a/tests/signature/api-check/system-api/AndroidTest.xml b/tests/signature/api-check/system-api/AndroidTest.xml
index 1fcb724..7c5fb12 100644
--- a/tests/signature/api-check/system-api/AndroidTest.xml
+++ b/tests/signature/api-check/system-api/AndroidTest.xml
@@ -28,7 +28,7 @@
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
         <option name="class" value="android.signature.cts.api.system.SignatureTest" />
         <option name="instrumentation-arg" key="base-api-files" value="current.api.gz" />
-        <option name="instrumentation-arg" key="system-api-files" value="system-current.api.gz,system-removed.api.gz" />
+        <option name="instrumentation-arg" key="expected-api-files" value="system-current.api.gz,system-removed.api.gz" />
         <option name="instrumentation-arg" key="previous-api-files" value = "system-all.api.zip" />
         <option name="instrumentation-arg" key="unexpected-api-files" value="android-test-mock-current.api.gz,android-test-runner-current.api.gz" />
         <option name="runtime-hint" value="30s" />