Reapply "Generate and run art tests with new gradle"

This reverts commit 186f742e82d1fa0a05d3008dc1c806aeb874ae9e.

Bug: 270105162
Change-Id: Ifcd1261bbd4c65bfb5f274bd2bd1825cc43a1ef4
diff --git a/d8_r8/test_modules/tests_java_8/build.gradle.kts b/d8_r8/test_modules/tests_java_8/build.gradle.kts
index aa3db57..2194036 100644
--- a/d8_r8/test_modules/tests_java_8/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/build.gradle.kts
@@ -17,6 +17,8 @@
   sourceSets.test.configure {
     java {
       srcDir(root.resolveAll("src", "test", "java"))
+      // Generated art tests
+      srcDir(root.resolveAll("build", "generated", "test", "java"))
     }
   }
 
@@ -79,10 +81,21 @@
 }
 
 tasks {
+  val createArtTests by registering(Exec::class) {
+    dependsOn(gradle.includedBuild("shared").task(":downloadDeps"))
+    val outputDir = getRoot().resolveAll("build", "generated", "test", "java", "com", "android", "tools", "r8", "art")
+    val createArtTestsScript = getRoot().resolveAll("tools", "create_art_tests.py")
+    inputs.file(createArtTestsScript)
+    inputs.dir(getRoot().resolveAll("tests", "2017-10-04"))
+    outputs.dir(outputDir)
+    workingDir(getRoot())
+    commandLine(createArtTestsScript)
+  }
   "compileTestJava" {
     dependsOn(gradle.includedBuild("shared").task(":downloadDeps"))
   }
   withType<JavaCompile> {
+    dependsOn(createArtTests)
     dependsOn(gradle.includedBuild("keepanno").task(":jar"))
     dependsOn(gradle.includedBuild("resourceshrinker").task(":jar"))
     dependsOn(gradle.includedBuild("main").task(":compileJava"))