Generalize ART APEX flavor handling in `art_apex_test.py`.

Introduce flag `--flavor` in `build/apex/art_apex_test.py` to select
the flavor of the ART APEX to check (`release`, `debug`, `testing`,
`auto`). Default to `auto`, which auto-detects the flavor based on the
name of the APEX passed as argument to the script.

Update `build/apex/runtests.sh` and `build/apex/Android.bp` to use
these new options instead of `--debug` and `--testing`.

Test: art/build/apex/runtests.sh
Bug: 139277987
Change-Id: I463ae6504576f77ee70b3ac4111bd43c49e450d0
diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py
index 2b42404..6d29fc9 100755
--- a/build/apex/art_apex_test.py
+++ b/build/apex/art_apex_test.py
@@ -1047,9 +1047,21 @@
   if test_args.size and not (test_args.list or test_args.tree):
     logging.error("--size set but neither --list nor --tree set")
     return 1
+  if test_args.host and test_args.flavor:
+    logging.error("Both of --host and --flavor set")
+    return 1
   if test_args.host and test_args.testing:
     logging.error("Both of --host and --testing set")
     return 1
+  if test_args.debug and test_args.testing:
+    logging.error("Both of --debug and --testing set")
+    return 1
+  if test_args.flavor and test_args.debug:
+    logging.error("Both of --flavor and --debug set")
+    return 1
+  if test_args.flavor and test_args.testing:
+    logging.error("Both of --flavor and --testing set")
+    return 1
   if not test_args.flattened and not test_args.tmpdir:
     logging.error("Need a tmpdir.")
     return 1
@@ -1078,6 +1090,30 @@
     List(apex_provider, test_args.size).print_list()
     return 0
 
+  # Handle legacy flavor flags.
+  if test_args.debug:
+    logging.warning('Using deprecated option --debug')
+    test_args.flavor='debug'
+  if test_args.testing:
+    logging.warning('Using deprecated option --testing')
+    test_args.flavor='testing'
+  if test_args.flavor == 'auto':
+    logging.warning('--flavor=auto, trying to autodetect. This may be incorrect!')
+    if fnmatch.fnmatch(test_args.apex, '*.release*'):
+      logging.warning('  Detected Release APEX')
+      test_args.flavor='release'
+    elif fnmatch.fnmatch(test_args.apex, '*.debug*'):
+      logging.warning('  Detected Debug APEX')
+      test_args.flavor='debug'
+    elif fnmatch.fnmatch(test_args.apex, '*.testing*'):
+      logging.warning('  Detected Testing APEX')
+      test_args.flavor='testing'
+    else:
+      logging.error('  Could not detect APEX flavor, neither \'release\', \'debug\' nor ' +
+                    '\'testing\' in \'%s\'',
+          test_args.apex)
+      return 1
+
   checkers = []
   if test_args.bitness == 'auto':
     logging.warning('--bitness=auto, trying to autodetect. This may be incorrect!')
@@ -1110,11 +1146,11 @@
     checkers.append(ReleaseHostChecker(base_checker))
   else:
     checkers.append(ReleaseTargetChecker(base_checker))
-  if test_args.debug or test_args.testing:
+  if test_args.flavor == 'debug' or test_args.flavor == 'testing':
     checkers.append(DebugChecker(base_checker))
     if not test_args.host:
       checkers.append(DebugTargetChecker(base_checker))
-  if test_args.testing:
+  if test_args.flavor == 'testing':
     checkers.append(TestingTargetChecker(base_checker))
 
   # These checkers must be last.
@@ -1162,11 +1198,12 @@
                   test_args.debugfs)
     sys.exit(1)
 
-  # TODO: Add host support
+  # TODO: Add host support.
+  # TODO: Add support for flattened APEX packages.
   configs = [
-    {'name': 'com.android.art.release', 'debug': False, 'testing': False, 'host': False},
-    {'name': 'com.android.art.debug',   'debug': True,  'testing': False, 'host': False},
-    {'name': 'com.android.art.testing', 'debug': False, 'testing': True,  'host': False},
+    {'name': 'com.android.art.release', 'flavor': 'release', 'host': False},
+    {'name': 'com.android.art.debug',   'flavor': 'debug',   'host': False},
+    {'name': 'com.android.art.testing', 'flavor': 'testing', 'host': False},
   ]
 
   for config in configs:
@@ -1177,8 +1214,7 @@
       failed = True
       logging.error("Cannot find APEX %s. Please build it first.", test_args.apex)
       continue
-    test_args.debug = config['debug']
-    test_args.testing = config['testing']
+    test_args.flavor = config['flavor']
     test_args.host = config['host']
     failed = art_apex_test_main(test_args) != 0
 
@@ -1189,14 +1225,18 @@
 if __name__ == "__main__":
   parser = argparse.ArgumentParser(description='Check integrity of a Runtime APEX.')
 
-  parser.add_argument('apex', help='apex file input')
+  parser.add_argument('apex', help='APEX file input')
 
-  parser.add_argument('--host', help='Check as host apex', action='store_true')
+  parser.add_argument('--host', help='Check as host APEX', action='store_true')
 
-  parser.add_argument('--flattened', help='Check as flattened (target) apex', action='store_true')
+  parser.add_argument('--flattened', help='Check as flattened (target) APEX', action='store_true')
 
-  parser.add_argument('--debug', help='Check as debug apex', action='store_true')
-  parser.add_argument('--testing', help='Check as testing apex', action='store_true')
+  parser.add_argument('--flavor', help='Check as FLAVOR APEX, release|debug|testing|auto',
+                      default='auto')
+  # Deprecated flavor flags.
+  # TODO: Stop supporting those flags eventually.
+  parser.add_argument('--debug', help='Check as debug APEX', action='store_true')
+  parser.add_argument('--testing', help='Check as testing APEX', action='store_true')
 
   parser.add_argument('--list', help='List all files', action='store_true')
   parser.add_argument('--tree', help='Print directory tree', action='store_true')