[Lint Partial Analysis] Parameterize more lint tests

This change parameterizes many lint tests to run with and without lint
partial analysis.

Bug: 178810169
Test: LintBaselineTest, etc.
Change-Id: I95163807a4f989a50edd092e7bd066c828f63842
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintBaselineTest.java b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintBaselineTest.java
index 8a38621..c4b7034 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintBaselineTest.java
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintBaselineTest.java
@@ -20,20 +20,33 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import com.android.build.gradle.integration.common.fixture.GradleBuildResult;
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor;
 import com.android.build.gradle.integration.common.fixture.GradleTestProject;
+import com.android.build.gradle.integration.common.runner.FilterableParameterized;
 import com.android.build.gradle.integration.common.truth.ScannerSubject;
+import com.android.build.gradle.options.BooleanOption;
 import java.io.File;
 import kotlin.io.FilesKt;
 import kotlin.text.Charsets;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 /**
  * Test for generating baselines for all variants, making sure we don't accidentally merge resources
  * files in different resource qualifiers; https://issuetracker.google.com/131073349
  */
+@RunWith(FilterableParameterized.class)
 public class LintBaselineTest {
 
+    @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+    public static Object[] getParameters() {
+        return new Object[] {true, false};
+    }
+
+    @Parameterized.Parameter public boolean usePartialAnalysis;
+
     @Rule public final GradleTestProject project =
             GradleTestProject.builder()
                     .fromTestProject("lintBaseline")
@@ -42,7 +55,7 @@
 
     @Test
     public void checkMerging() throws Exception {
-        GradleBuildResult result = project.executor().expectFailure().run(":app:lint");
+        GradleBuildResult result = getExecutor().expectFailure().run(":app:lint");
         ScannerSubject.assertThat(result.getStderr()).contains("Created baseline file");
 
         File baselineFile =
@@ -75,6 +88,10 @@
                                 + "    </issue>\n"
                                 + "\n");
         // Check the written baseline means that a subsequent lint invocation passes.
-        project.executor().run("clean", ":app:lint");
+        getExecutor().run("clean", ":app:lint");
+    }
+
+    private GradleTaskExecutor getExecutor() {
+        return project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis);
     }
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintCustomLocalAndPublishTest.java b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintCustomLocalAndPublishTest.java
index 030ac07..4092071 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintCustomLocalAndPublishTest.java
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintCustomLocalAndPublishTest.java
@@ -20,8 +20,12 @@
 import static com.android.testutils.truth.PathSubject.assertThat;
 import static com.google.common.truth.Truth.assertThat;
 
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor;
 import com.android.build.gradle.integration.common.fixture.GradleTestProject;
+import com.android.build.gradle.integration.common.fixture.ModelBuilder;
 import com.android.build.gradle.integration.common.fixture.ModelContainer;
+import com.android.build.gradle.integration.common.runner.FilterableParameterized;
+import com.android.build.gradle.options.BooleanOption;
 import com.android.builder.model.AndroidProject;
 import com.android.builder.model.SyncIssue;
 import com.android.utils.FileUtils;
@@ -30,13 +34,23 @@
 import java.util.stream.Collectors;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 /**
  * Test for publishing a custom jar in a library model, used by a consuming app, as well as having a
  * local lint jar.
  */
+@RunWith(FilterableParameterized.class)
 public class LintCustomLocalAndPublishTest {
 
+    @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+    public static Object[] getParameters() {
+        return new Object[] {true, false};
+    }
+
+    @Parameterized.Parameter public boolean usePartialAnalysis;
+
     @Rule public final GradleTestProject project =
             GradleTestProject.builder()
                     .fromTestProject("lintCustomLocalAndPublishRules")
@@ -45,11 +59,11 @@
 
     @Test
     public void checkCustomLint() throws Exception {
-        project.executor().withFailOnWarning(false).run("clean");
-        project.executor().withFailOnWarning(false).run(":library-remote:publish");
+        getExecutor().withFailOnWarning(false).run("clean");
+        getExecutor().withFailOnWarning(false).run(":library-remote:publish");
         // Run twice to catch issues with configuration caching
-        project.executor().withFailOnWarning(false).expectFailure().run(":library:lintDebug");
-        project.executor().withFailOnWarning(false).expectFailure().run(":library:lintDebug");
+        getExecutor().withFailOnWarning(false).expectFailure().run(":library:lintDebug");
+        getExecutor().withFailOnWarning(false).expectFailure().run(":library:lintDebug");
 
         String libexpected =
                         ""
@@ -90,8 +104,8 @@
                         "library-lint-results.txt");
         assertThat(liblintfile).exists();
         assertThat(liblintfile).contentWithUnixLineSeparatorsIsExactly(libexpected);
-        project.executor().withFailOnWarning(false).expectFailure().run(":app:lintDebug");
-        project.executor().withFailOnWarning(false).expectFailure().run(":app:lintDebug");
+        getExecutor().withFailOnWarning(false).expectFailure().run(":app:lintDebug");
+        getExecutor().withFailOnWarning(false).expectFailure().run(":app:lintDebug");
 
         String appExpected =
                 ""
@@ -138,10 +152,10 @@
 
     @Test
     public void checkAarHasLintJar() throws Exception {
-        project.executor().withFailOnWarning(false).run("clean");
-        project.executor().withFailOnWarning(false).run(":library:assembleDebug");
-        project.executor().withFailOnWarning(false).run(":library-publish-only:assembleDebug");
-        project.executor().withFailOnWarning(false).run(":library-local-only:assembleDebug");
+        getExecutor().withFailOnWarning(false).run("clean");
+        getExecutor().withFailOnWarning(false).run(":library:assembleDebug");
+        getExecutor().withFailOnWarning(false).run(":library-publish-only:assembleDebug");
+        getExecutor().withFailOnWarning(false).run(":library-local-only:assembleDebug");
 
         project.getSubproject("library")
                 .testAar(
@@ -169,7 +183,7 @@
     @Test
     public void checkModel() throws Exception {
         ModelContainer<AndroidProject> androidProjects =
-                project.model().withFailOnWarning(false).ignoreSyncIssues().fetchAndroidProjects();
+                getModel().withFailOnWarning(false).ignoreSyncIssues().fetchAndroidProjects();
 
         assertThat(androidProjects.getOnlyModelMap().get(":library").getLintRuleJars()).hasSize(1);
 
@@ -181,4 +195,12 @@
         assertThat(syncIssues.iterator().next().getMessage())
                 .isEqualTo("Unable to resolve dependency com.example.google:library-remote:1.0");
     }
+
+    private GradleTaskExecutor getExecutor() {
+        return project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis);
+    }
+
+    private ModelBuilder getModel() {
+        return project.model().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis);
+    }
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintCustomRuleTest.java b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintCustomRuleTest.java
index c22a7d2..0390d74 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintCustomRuleTest.java
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintCustomRuleTest.java
@@ -18,18 +18,31 @@
 
 import static com.android.testutils.truth.PathSubject.assertThat;
 
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor;
 import com.android.build.gradle.integration.common.fixture.GradleTestProject;
+import com.android.build.gradle.integration.common.runner.FilterableParameterized;
+import com.android.build.gradle.options.BooleanOption;
 import java.io.File;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 /**
  * Test for a custom jar in a library model, used by a consuming app.
  *
  * <p>The custom lint rule comes from a 3rd java module.
  */
+@RunWith(FilterableParameterized.class)
 public class LintCustomRuleTest {
 
+    @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+    public static Object[] getParameters() {
+        return new Object[] {true, false};
+    }
+
+    @Parameterized.Parameter public boolean usePartialAnalysis;
+
     @Rule
     public final GradleTestProject project =
             GradleTestProject.builder().fromTestProject("lintCustomRules").create();
@@ -37,8 +50,8 @@
     @Test
     public void checkCustomLint() throws Exception {
         // Run twice to catch issues with configuration caching
-        project.executor().expectFailure().run(":app:cleanLintDebug", ":app:lintDebug");
-        project.executor().expectFailure().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().expectFailure().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().expectFailure().run(":app:cleanLintDebug", ":app:lintDebug");
         String expected =
                 "src"
                         + File.separator
@@ -59,4 +72,8 @@
         assertThat(file).exists();
         assertThat(file).contentWithUnixLineSeparatorsIsExactly(expected);
     }
+
+    private GradleTaskExecutor getExecutor() {
+        return project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis);
+    }
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintLibraryModelTest.java b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintLibraryModelTest.java
index cec3012..5996b7e 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintLibraryModelTest.java
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintLibraryModelTest.java
@@ -20,12 +20,17 @@
 import static com.android.testutils.truth.PathSubject.assertThat;
 
 import com.android.build.gradle.integration.common.fixture.GradleBuildResult;
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor;
 import com.android.build.gradle.integration.common.fixture.GradleTestProject;
+import com.android.build.gradle.integration.common.runner.FilterableParameterized;
 import com.android.build.gradle.integration.common.utils.TestFileUtils;
+import com.android.build.gradle.options.BooleanOption;
 import com.android.utils.FileUtils;
 import java.io.File;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 /**
  * Assemble tests for lintLibraryModel.
@@ -37,8 +42,16 @@
  *     $ ./gradlew :base:build-system:integration-test:lint:test --tests=LintLibraryModelTest
  * </pre>
  */
+@RunWith(FilterableParameterized.class)
 public class LintLibraryModelTest {
 
+    @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+    public static Object[] getParameters() {
+        return new Object[] {true, false};
+    }
+
+    @Parameterized.Parameter public boolean usePartialAnalysis;
+
     @Rule
     public final GradleTestProject project =
             GradleTestProject.builder().fromTestProject("lintLibraryModel").create();
@@ -48,8 +61,8 @@
     @Test
     public void checkLintLibraryModel() throws Exception {
         // Run twice to catch issues with configuration caching
-        project.executor().run(":app:cleanLintDebug", ":app:lintDebug");
-        GradleBuildResult result =  project.executor().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug");
+        GradleBuildResult result = getExecutor().run(":app:cleanLintDebug", ":app:lintDebug");
         String expected =
                 ""
                         + FileUtils.join("src", "main", "java", "com", "android", "test", "lint", "javalib", "JavaLib.java") + ":4: Warning: Do not hardcode \"/sdcard/\"; use Environment.getExternalStorageDirectory().getPath() instead [SdCardPath]\n"
@@ -71,7 +84,7 @@
                 project.getSubproject("javalib").getBuildFile(),
                 "apply plugin: 'com.android.lint'",
                 "/* Lint plugin not applied */");
-        GradleBuildResult result = project.executor().run("clean", ":app:lintDebug");
+        GradleBuildResult result = getExecutor().run("clean", ":app:lintDebug");
         String expected =
                 ""
                         + FileUtils.join("src", "main", "java", "com", "android", "test", "lint", "lintmodel", "mylibrary", "MyLibrary.java") + ":9: Warning: DateFormat character 'Y' in YYYY is the week-era-year; did you mean 'y' ? [WeekBasedYear]\n"
@@ -84,4 +97,7 @@
         assertThat(result.getStdout()).contains(APPLY_THE_PLUGIN_TO_JAVA_LIBRARY_PROJECT);
     }
 
+    private GradleTaskExecutor getExecutor() {
+        return project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis);
+    }
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintModelIntegrationTest.kt b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintModelIntegrationTest.kt
index 59fe009..273c23e 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintModelIntegrationTest.kt
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintModelIntegrationTest.kt
@@ -16,8 +16,11 @@
 package com.android.build.gradle.integration.lint
 
 import com.android.Version
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor
 import com.android.build.gradle.integration.common.fixture.GradleTestProject
 import com.android.build.gradle.integration.common.fixture.gradle_project.ProjectLocation
+import com.android.build.gradle.integration.common.runner.FilterableParameterized
+import com.android.build.gradle.options.BooleanOption
 import com.android.testutils.TestUtils
 import com.android.testutils.truth.PathSubject.assertThat
 import com.google.common.io.Resources
@@ -25,15 +28,23 @@
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 import java.io.File
-import java.lang.AssertionError
 import java.nio.charset.StandardCharsets
 import java.nio.file.Files
 import java.util.Collections
 import java.util.stream.Collectors
 
 /** Integration test for the new lint models.  */
-class LintModelIntegrationTest {
+@RunWith(FilterableParameterized::class)
+class LintModelIntegrationTest(private val usePartialAnalysis: Boolean) {
+
+    companion object {
+        @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+        @JvmStatic
+        fun params() = listOf(true, false)
+    }
 
     @get:Rule
     val project: GradleTestProject =
@@ -49,8 +60,8 @@
     @Test
     fun checkLintModels() {
         // Check lint runs correctly before asserting about the model.
-        project.executor().expectFailure().run(":app:cleanLintDebug", ":app:lintDebug")
-        project.executor().expectFailure().run(":app:cleanLintDebug", ":app:lintDebug")
+        getExecutor().expectFailure().run(":app:cleanLintDebug", ":app:lintDebug")
+        getExecutor().expectFailure().run(":app:cleanLintDebug", ":app:lintDebug")
         val lintResults = project.file("app/build/reports/lint-results.txt")
         assertThat(lintResults).contains("8 errors, 6 warnings")
 
@@ -75,7 +86,7 @@
         val replacements = createReplacements(project.location)
         for (model in models) {
             val actual = Files.readAllLines(model).map { applyReplacements(it, replacements) }
-            val expected = getExpectedModel(model.fileName.toString())
+            val expected = getExpectedModel(model.fileName.toString(), usePartialAnalysis)
             if (actual != expected){
                 val diff: String = TestUtils.getDiff(
                     expected.toTypedArray(),
@@ -86,7 +97,7 @@
                                 "Run with env var GENERATE_MODEL_GOLDEN_FILES=true to regenerate\n" +
                                 diff
                 } else {
-                    val fileToUpdate = TestUtils.resolveWorkspacePath("tools/base/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/${model.fileName}")
+                    val fileToUpdate = TestUtils.resolveWorkspacePath("tools/base/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_$usePartialAnalysis/${model.fileName}")
                     Files.write(fileToUpdate, actual)
                     errors += "Updated ${model.fileName} with \n$diff"
                 }
@@ -126,9 +137,15 @@
     }
 
 
-    private fun getExpectedModel(name: String): List<String> {
-        val resource = Resources.getResource(this::class.java, "kotlinmodel/lintDebug/$name")
+    private fun getExpectedModel(name: String, usePartialAnalysis: Boolean): List<String> {
+        val resource =
+            Resources.getResource(
+                this::class.java,
+                "kotlinmodel/lintDebug/usePartialAnalysis_$usePartialAnalysis/$name"
+            )
         return Resources.readLines(resource, StandardCharsets.UTF_8)
     }
 
+    private fun getExecutor(): GradleTaskExecutor =
+        project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis)
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintMultipleLintJarsTest.java b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintMultipleLintJarsTest.java
index bee047f..2236fea 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintMultipleLintJarsTest.java
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintMultipleLintJarsTest.java
@@ -18,17 +18,30 @@
 
 import static com.android.testutils.truth.PathSubject.assertThat;
 
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor;
 import com.android.build.gradle.integration.common.fixture.GradleTestProject;
+import com.android.build.gradle.integration.common.runner.FilterableParameterized;
+import com.android.build.gradle.options.BooleanOption;
 import java.io.File;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 /**
  * Test ensuring that when we have multiple service-loaded lint jars, they're all included.
  * Regression test for https://issuetracker.google.com/143455360.
  */
+@RunWith(FilterableParameterized.class)
 public class LintMultipleLintJarsTest {
 
+    @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+    public static Object[] getParameters() {
+        return new Object[] {true, false};
+    }
+
+    @Parameterized.Parameter public boolean usePartialAnalysis;
+
     @Rule
     public final GradleTestProject project =
             GradleTestProject.builder().fromTestProject("lintMultipleLintJars").create();
@@ -36,12 +49,16 @@
     @Test
     public void checkBothErrorsFound() throws Exception {
         // Run twice to catch issues with configuration caching
-        project.executor().run(":app:cleanLintDebug", ":app:lintDebug");
-        project.executor().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug");
 
         File file = new File(project.getSubproject("app").getProjectDir(), "lint-results.xml");
         assertThat(file).exists();
         assertThat(file).contains("id=\"ShortUniqueIdA\"");
         assertThat(file).contains("id=\"ShortUniqueIdB\"");
     }
+
+    private GradleTaskExecutor getExecutor() {
+        return project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis);
+    }
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintNoJavaClassesTest.kt b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintNoJavaClassesTest.kt
index c89a94c..4e79337 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintNoJavaClassesTest.kt
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintNoJavaClassesTest.kt
@@ -16,10 +16,15 @@
 
 package com.android.build.gradle.integration.lint
 
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor
 import com.android.build.gradle.integration.common.fixture.GradleTestProject
+import com.android.build.gradle.integration.common.runner.FilterableParameterized
+import com.android.build.gradle.options.BooleanOption
 import com.android.testutils.truth.PathSubject.assertThat
 import org.junit.Rule
 import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 import java.io.File
 
 /**
@@ -29,7 +34,14 @@
  * makes sure that we handle the classpath correctly such that type resolution to
  * Kotlin libraries works correctly.
  */
-class LintNoJavaClassesTest {
+@RunWith(FilterableParameterized::class)
+class LintNoJavaClassesTest(private val usePartialAnalysis: Boolean) {
+
+    companion object {
+        @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+        @JvmStatic
+        fun params() = listOf(true, false)
+    }
 
     @get:Rule
     val project: GradleTestProject =
@@ -42,11 +54,14 @@
     @Throws(Exception::class)
     fun checkNoMissingClass() {
         // Run twice to catch issues with configuration caching
-        project.execute(":app:cleanLintDebug", ":app:lintDebug")
-        project.execute(":app:cleanLintDebug", ":app:lintDebug")
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug")
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug")
         val app = project.getSubproject("app")
         val file = File(app.projectDir, "lint-results.txt")
         assertThat(file).exists()
         assertThat(file).contentWithUnixLineSeparatorsIsExactly("No issues found.")
     }
+
+    private fun getExecutor(): GradleTaskExecutor =
+        project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis)
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintResourceResolveTest.java b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintResourceResolveTest.java
index 7039418..3bfb76c 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintResourceResolveTest.java
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintResourceResolveTest.java
@@ -18,17 +18,30 @@
 
 import static com.android.testutils.truth.PathSubject.assertThat;
 
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor;
 import com.android.build.gradle.integration.common.fixture.GradleTestProject;
+import com.android.build.gradle.integration.common.runner.FilterableParameterized;
+import com.android.build.gradle.options.BooleanOption;
 import java.io.File;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 /**
  * Test making sure that the SupportAnnotationUsage does not report errors referencing R.type.name
  * resource fields. (Regression test for bug 133326990.)
  */
+@RunWith(FilterableParameterized.class)
 public class LintResourceResolveTest {
 
+    @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+    public static Object[] getParameters() {
+        return new Object[] {true, false};
+    }
+
+    @Parameterized.Parameter public boolean usePartialAnalysis;
+
     @Rule
     public final GradleTestProject project =
             GradleTestProject.builder()
@@ -39,8 +52,8 @@
     @Test
     public void checkClean() throws Exception {
         // Run twice to catch issues with configuration caching
-        project.executor().run(":app:cleanLintDebug", ":app:lintDebug");
-        project.executor().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug");
         File file = new File(project.getSubproject("app").getProjectDir(), "lint-report.txt");
         assertThat(file).exists();
         assertThat(file).contentWithUnixLineSeparatorsIsExactly("No issues found.");
@@ -49,4 +62,8 @@
         assertThat(sarifFile).exists();
         assertThat(sarifFile).contains("\"$schema\" : \"https://raw.githubusercontent.com/oasis-tcs/sarif-spec/");
     }
+
+    private GradleTaskExecutor getExecutor() {
+        return project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis);
+    }
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintSkipDependenciesTest.java b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintSkipDependenciesTest.java
index 94580b6..c25bab9 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintSkipDependenciesTest.java
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintSkipDependenciesTest.java
@@ -18,11 +18,16 @@
 
 import static com.android.testutils.truth.PathSubject.assertThat;
 
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor;
 import com.android.build.gradle.integration.common.fixture.GradleTestProject;
+import com.android.build.gradle.integration.common.runner.FilterableParameterized;
+import com.android.build.gradle.options.BooleanOption;
 import java.io.File;
 import java.io.IOException;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 /**
  * Assemble tests for lintLibrarySkipDeps.
@@ -34,8 +39,16 @@
  *     $ ./gradlew :base:build-system:integration-test:lint:test --tests=LintSkipDependenciesTest
  * </pre>
  */
+@RunWith(FilterableParameterized.class)
 public class LintSkipDependenciesTest {
 
+    @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+    public static Object[] getParameters() {
+        return new Object[] {true, false};
+    }
+
+    @Parameterized.Parameter public boolean usePartialAnalysis;
+
     @Rule
     public final GradleTestProject project =
             GradleTestProject.builder().fromTestProject("lintLibrarySkipDeps").create();
@@ -43,10 +56,14 @@
     @Test
     public void checkLintDependenciesSkipped() throws IOException, InterruptedException {
         // Run twice to catch issues with configuration caching
-        project.executor().run(":app:cleanLintDebug", ":app:lintDebug");
-        project.executor().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug");
+        getExecutor().run(":app:cleanLintDebug", ":app:lintDebug");
         File file = new File(project.getSubproject("app").getProjectDir(), "lint-results.txt");
         assertThat(file).exists();
         assertThat(file).contentWithUnixLineSeparatorsIsExactly("No issues found.");
     }
+
+    private GradleTaskExecutor getExecutor() {
+        return project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis);
+    }
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintUpToDateTest.kt b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintUpToDateTest.kt
index 55a4cf5..b620961 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintUpToDateTest.kt
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintUpToDateTest.kt
@@ -15,16 +15,28 @@
  */
 package com.android.build.gradle.integration.lint
 
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor
 import com.android.build.gradle.integration.common.fixture.GradleTestProject
+import com.android.build.gradle.integration.common.runner.FilterableParameterized
 import com.android.build.gradle.integration.common.truth.GradleTaskSubject.assertThat
+import com.android.build.gradle.options.BooleanOption
 import com.android.testutils.truth.PathSubject.assertThat
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
 import org.junit.rules.TemporaryFolder
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 /** Integration test that lint can be up-to-date  */
-class LintUpToDateTest {
+@RunWith(FilterableParameterized::class)
+class LintUpToDateTest(private val usePartialAnalysis: Boolean) {
+
+    companion object {
+        @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+        @JvmStatic
+        fun params() = listOf(true, false)
+    }
 
     @get:Rule
     val project: GradleTestProject =
@@ -44,15 +56,20 @@
     }
 
     @Test
-    fun checkLintModels() {
-        val firstRun = project.executor().run(":app:lintDebug")
+    fun checkLintUpToDate() {
+        val firstRun = getExecutor().run(":app:lintDebug")
 
         assertThat(firstRun.getTask(":app:lintDebug")).didWork()
         val lintResults = project.file("app/build/reports/lint-results.txt")
         assertThat(lintResults).contains("8 errors, 6 warnings")
 
-        val secondRun = project.executor().run(":app:lintDebug")
+        val secondRun = getExecutor().run(":app:lintDebug")
         assertThat(secondRun.getTask(":app:lintDebug")).wasUpToDate()
+        if (usePartialAnalysis) {
+            assertThat(secondRun.getTask(":app:lintAnalyzeDebug")).wasUpToDate()
+        }
     }
 
+    private fun getExecutor(): GradleTaskExecutor =
+        project.executor().with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis)
 }
diff --git a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintWithAnalyticsEnabledTest.kt b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintWithAnalyticsEnabledTest.kt
index f01e5ee..69f27ea 100644
--- a/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintWithAnalyticsEnabledTest.kt
+++ b/build-system/integration-test/lint/src/test/java/com/android/build/gradle/integration/lint/LintWithAnalyticsEnabledTest.kt
@@ -15,15 +15,26 @@
  */
 package com.android.build.gradle.integration.lint
 
+import com.android.build.gradle.integration.common.fixture.GradleTaskExecutor
 import com.android.build.gradle.integration.common.fixture.GradleTestProject
+import com.android.build.gradle.integration.common.runner.FilterableParameterized
 import com.android.build.gradle.integration.common.truth.ScannerSubject
 import com.android.build.gradle.options.BooleanOption
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
 
 /** Integration test that runs lint with analytics enabled. Regression test for b/178904638  */
-class LintWithAnalyticsEnabledTest {
+@RunWith(FilterableParameterized::class)
+class LintWithAnalyticsEnabledTest(private val usePartialAnalysis: Boolean) {
+
+    companion object {
+        @Parameterized.Parameters(name = "usePartialAnalysis = {0}")
+        @JvmStatic
+        fun params() = listOf(true, false)
+    }
 
     @get:Rule
     val project: GradleTestProject =
@@ -40,22 +51,23 @@
 
     @Test
     fun testLint() {
-        project.executor().with(BooleanOption.ENABLE_PROFILE_JSON, true).run("lint")
+        getExecutor().run("lint")
     }
 
     @Test
     fun testLintFix() {
-        val result =
-            project.executor()
-                .expectFailure()
-                .with(BooleanOption.ENABLE_PROFILE_JSON, true)
-                .run("lintFix")
+        val result = getExecutor().expectFailure().run("lintFix")
         ScannerSubject.assertThat(result.stderr)
             .contains("Aborting build since sources were modified to apply quickfixes")
     }
 
     @Test
     fun testBuild() {
-        project.executor().with(BooleanOption.ENABLE_PROFILE_JSON, true).run("build")
+        getExecutor().run("build")
     }
+
+    private fun getExecutor(): GradleTaskExecutor =
+        project.executor()
+            .with(BooleanOption.USE_LINT_PARTIAL_ANALYSIS, usePartialAnalysis)
+            .with(BooleanOption.ENABLE_PROFILE_JSON, true)
 }
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/.gitattributes b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/.gitattributes
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/.gitattributes
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/.gitattributes
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-androidTestArtifact-dependencies.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-androidTestArtifact-dependencies.xml
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-androidTestArtifact-dependencies.xml
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-androidTestArtifact-dependencies.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-androidTestArtifact-libraries.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-androidTestArtifact-libraries.xml
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-androidTestArtifact-libraries.xml
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-androidTestArtifact-libraries.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-mainArtifact-dependencies.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-mainArtifact-dependencies.xml
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-mainArtifact-dependencies.xml
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-mainArtifact-dependencies.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-mainArtifact-libraries.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-mainArtifact-libraries.xml
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-mainArtifact-libraries.xml
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-mainArtifact-libraries.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-testArtifact-dependencies.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-testArtifact-dependencies.xml
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-testArtifact-dependencies.xml
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-testArtifact-dependencies.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-testArtifact-libraries.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-testArtifact-libraries.xml
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-testArtifact-libraries.xml
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug-testArtifact-libraries.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug.xml
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug.xml
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/debug.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/module.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/module.xml
similarity index 100%
rename from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/module.xml
rename to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_false/module.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/.gitattributes b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/.gitattributes
similarity index 100%
copy from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/.gitattributes
copy to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/.gitattributes
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-androidTestArtifact-dependencies.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-androidTestArtifact-dependencies.xml
similarity index 100%
copy from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-androidTestArtifact-dependencies.xml
copy to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-androidTestArtifact-dependencies.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-androidTestArtifact-libraries.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-androidTestArtifact-libraries.xml
similarity index 100%
copy from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-androidTestArtifact-libraries.xml
copy to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-androidTestArtifact-libraries.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-mainArtifact-dependencies.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-mainArtifact-dependencies.xml
similarity index 100%
copy from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-mainArtifact-dependencies.xml
copy to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-mainArtifact-dependencies.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-mainArtifact-libraries.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-mainArtifact-libraries.xml
similarity index 100%
copy from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-mainArtifact-libraries.xml
copy to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-mainArtifact-libraries.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-testArtifact-dependencies.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-testArtifact-dependencies.xml
similarity index 100%
copy from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-testArtifact-dependencies.xml
copy to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-testArtifact-dependencies.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-testArtifact-libraries.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-testArtifact-libraries.xml
similarity index 100%
copy from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/debug-testArtifact-libraries.xml
copy to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug-testArtifact-libraries.xml
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug.xml
new file mode 100644
index 0000000..9c7ea6c
--- /dev/null
+++ b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/debug.xml
@@ -0,0 +1,41 @@
+<variant
+    name="debug"
+    package="com.example.android.lint.kotlin"
+    minSdkVersion="15"
+    targetSdkVersion="30"
+    debuggable="true"
+    mergedManifest="build/intermediates/merged_manifest/debug/AndroidManifest.xml"
+    manifestMergeReport="build/outputs/logs/manifest-merger-debug-report.txt"
+    partialResultsDir="build/intermediates/lint_partial_results/debug/out">
+  <buildFeatures
+      namespacing="REQUIRED"/>
+  <sourceProviders>
+    <sourceProvider
+        manifest="src/main/AndroidManifest.xml"
+        javaDirectories="src/main/java:src/main/kotlin"
+        resDirectories="src/main/res"
+        assetsDirectories="src/main/assets"/>
+    <sourceProvider
+        manifest="src/debug/AndroidManifest.xml"
+        javaDirectories="src/debug/java:src/debug/kotlin"
+        resDirectories="src/debug/res"
+        assetsDirectories="src/debug/assets"/>
+  </sourceProviders>
+  <testSourceProviders>
+  </testSourceProviders>
+  <mainArtifact
+      classOutputs="build/intermediates/javac/debug/classes:build/tmp/kotlin-classes/debug:build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar"
+      applicationId="com.example.android.lint.kotlin"
+      generatedSourceFolders="build/generated/ap_generated_sources/debug/out:build/generated/aidl_source_output_dir/debug/out:build/generated/source/buildConfig/debug:build/generated/renderscript_source_output_dir/debug/out"
+      generatedResourceFolders="build/generated/res/rs/debug:build/generated/res/resValues/debug">
+  </mainArtifact>
+  <androidTestArtifact
+      classOutputs="build/intermediates/javac/debugAndroidTest/classes:build/tmp/kotlin-classes/debugAndroidTest:build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debugAndroidTest/R.jar"
+      applicationId="com.example.android.lint.kotlin.test"
+      generatedSourceFolders="build/generated/ap_generated_sources/debugAndroidTest/out:build/generated/aidl_source_output_dir/debugAndroidTest/out:build/generated/source/buildConfig/androidTest/debug:build/generated/renderscript_source_output_dir/debugAndroidTest/out"
+      generatedResourceFolders="build/generated/res/rs/androidTest/debug:build/generated/res/resValues/androidTest/debug">
+  </androidTestArtifact>
+  <testArtifact
+      classOutputs="build/intermediates/javac/debugUnitTest/classes:build/tmp/kotlin-classes/debugUnitTest:build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar">
+  </testArtifact>
+</variant>
diff --git a/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/module.xml b/build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/module.xml
similarity index 100%
copy from build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/module.xml
copy to build-system/integration-test/lint/src/test/resources/com/android/build/gradle/integration/lint/kotlinmodel/lintDebug/usePartialAnalysis_true/module.xml