Add support for building with the JDK11 based desugared library

With the new option to test.py one can run

  tools/test.py --desugared-library-configuration=jdk11 --desugared-library=HEAD ...

to use the JDK11 based desugared library.

The configuration diff for desugar_jdk_libs.json is:

diff -u2 desugar_jdk_libs.json jdk11/desugar_jdk_libs.json
--- desugar_jdk_libs.json	2021-03-11 14:56:35.790624175 +0100
+++ jdk11/desugar_jdk_libs.json	2021-03-11 15:03:35.983412505 +0100
@@ -76,5 +76,7 @@
         "j$.time.": "java.time.",
         "java.time.": "j$.time.",
-        "java.util.Desugar": "j$.util.Desugar"
+        "java.util.Desugar": "j$.util.Desugar",
+        "sun.misc.Desugar": "j$.sun.misc.Desugar",
+        "jdk.internal.util.Preconditions": "j$.jdk.internal.util.Preconditions"
       },
       "retarget_lib_member": {
@@ -112,8 +114,12 @@
         "java.util.StringJoiner": "j$.util.StringJoiner",
         "java.util.Tripwire": "j$.util.Tripwire",
-        "java.util.concurrent.DesugarUnsafe": "j$.util.concurrent.DesugarUnsafe",
+        "java.util.concurrent.Helpers": "j$.util.concurrent.Helpers",
         "java.util.concurrent.ThreadLocalRandom": "j$.util.concurrent.ThreadLocalRandom",
         "java.util.concurrent.atomic.DesugarAtomic": "j$.util.concurrent.atomic.DesugarAtomic",
-        "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap"
+        "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
+        "java.util.AbstractList": "j$.util.AbstractList",
+        "java.util.CollSer": "j$.util.CollSer",
+        "java.util.ImmutableCollections": "j$.util.ImmutableCollections",
+        "java.util.KeyValueHolder": "j$.util.KeyValueHolder"
       },
       "retarget_lib_member": {

And for desugar_jdk_libs_alternative_3.json:

diff -u2 desugar_jdk_libs_alternative_3.json jdk11/desugar_jdk_libs_alternative_3.json
--- desugar_jdk_libs_alternative_3.json	2021-03-11 15:01:37.471906496 +0100
+++ jdk11/desugar_jdk_libs_alternative_3.json	2021-03-11 15:00:34.517792562 +0100
@@ -76,5 +76,7 @@
         "j$.time.": "java.time.",
         "java.time.": "j$.time.",
-        "java.util.Desugar": "j$.util.Desugar"
+        "java.util.Desugar": "j$.util.Desugar",
+        "sun.misc.Desugar": "j$.sun.misc.Desugar",
+        "jdk.internal.util.Preconditions": "j$.jdk.internal.util.Preconditions"
       },
       "retarget_lib_member": {
@@ -112,8 +114,13 @@
         "java.util.StringJoiner": "j$.util.StringJoiner",
         "java.util.Tripwire": "j$.util.Tripwire",
-        "java.util.concurrent.DesugarUnsafe": "j$.util.concurrent.DesugarUnsafe",
+        "java.util.concurrent.Helpers": "j$.util.concurrent.Helpers",
         "java.util.concurrent.ThreadLocalRandom": "j$.util.concurrent.ThreadLocalRandom",
         "java.util.concurrent.atomic.DesugarAtomic": "j$.util.concurrent.atomic.DesugarAtomic",
         "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
+        "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
+        "java.util.AbstractList": "j$.util.AbstractList",
+        "java.util.CollSer": "j$.util.CollSer",
+        "java.util.ImmutableCollections": "j$.util.ImmutableCollections",
+        "java.util.KeyValueHolder": "j$.util.KeyValueHolder",
         "java.io.DesugarBufferedReader": "j$.io.DesugarBufferedReader",
         "java.io.UncheckedIOException": "j$.io.UncheckedIOException"

Bug: 182463100
Change-Id: I31b4bb20b7ee80e351f996b0d1e9280285a1d0ff
diff --git a/tools/test.py b/tools/test.py
index 9e2a3e2..f7b204f 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -162,6 +162,8 @@
       help='Enable Java debug agent and suspend compilation (default disabled)',
       default=False,
       action='store_true')
+  result.add_option('--desugared-library-configuration', '--desugared_library-configuration',
+      help='Use alternative desugared library configuration.')
   result.add_option('--desugared-library', '--desugared_library',
       help='Build and use desugared library from GitHub.')
   return result.parse_args()
@@ -181,6 +183,13 @@
   if utils.is_bot():
     gradle.RunGradle(['--no-daemon', 'clean'])
 
+  desugar_jdk_json_dir = None
+  if options.desugared_library_configuration:
+    if options.desugared_library_configuration != 'jdk11':
+      print("Only value supported for --desugared-library is 'jdk11'")
+      exit(1)
+    desugar_jdk_json_dir = 'src/library_desugar/jdk11'
+
   desugar_jdk_libs = None
   if options.desugared_library:
     if options.desugared_library != 'HEAD':
@@ -195,12 +204,12 @@
       # Make sure bazel is extracted in third_party.
       utils.DownloadFromGoogleCloudStorage(utils.BAZEL_SHA_FILE)
       utils.DownloadFromGoogleCloudStorage(utils.JAVA8_SHA_FILE)
-      (library_jar, maven_zip) = archive_desugar_jdk_libs.BuildDesugaredLibrary(checkout_dir)
+      utils.DownloadFromGoogleCloudStorage(utils.JAVA11_SHA_FILE)
+      (library_jar, maven_zip) = archive_desugar_jdk_libs.BuildDesugaredLibrary(checkout_dir, 'jdk11' if options.desugared_library_configuration == 'jdk11' else 'jdk8')
       desugar_jdk_libs = os.path.join(desugar_jdk_libs_dir, os.path.basename(library_jar))
       shutil.copyfile(library_jar, desugar_jdk_libs)
       print('Desugared library for test in ' + desugar_jdk_libs)
 
-
   gradle_args = ['--stacktrace']
   if utils.is_bot():
     # Bots don't like dangling processes.
@@ -284,6 +293,8 @@
     gradle_args.append('--no-daemon')
   if options.debug_agent:
     gradle_args.append('--no-daemon')
+  if desugar_jdk_json_dir:
+    gradle_args.append('-Pdesugar_jdk_json_dir=' + desugar_jdk_json_dir)
   if desugar_jdk_libs:
     gradle_args.append('-Pdesugar_jdk_libs=' + desugar_jdk_libs)