diff --git a/src/main/java/com/android/tools/metalava/Driver.kt b/src/main/java/com/android/tools/metalava/Driver.kt index 97ae453478cfca2026c9568be48bd273175d2312..2a440bd468eaef0f0e8a1ae996ae7c03c819c050 100644 --- a/src/main/java/com/android/tools/metalava/Driver.kt +++ b/src/main/java/com/android/tools/metalava/Driver.kt @@ -154,6 +154,8 @@ fun run( } exitCode = e.exitCode exitValue = false + } finally { + Disposer.dispose(LintCoreApplicationEnvironment.get().parentDisposable) } if (options.updateBaseline) { @@ -434,8 +436,6 @@ private fun processFlags() { AnnotationStatistics(codebase).measureCoverageOf(options.annotationCoverageOf) } - Disposer.dispose(LintCoreApplicationEnvironment.get().parentDisposable) - if (options.verbose) { val packageCount = codebase.size() options.stdout.println("\n$PROGRAM_NAME finished handling $packageCount packages in $stopwatch") @@ -900,7 +900,7 @@ fun loadFromJarFile(apiJar: File, manifest: File? = null, preFiltered: Boolean = private fun createProjectEnvironment(): LintCoreProjectEnvironment { ensurePsiFileCapacity() val appEnv = LintCoreApplicationEnvironment.get() - val parentDisposable = Disposer.newDisposable() + val parentDisposable = appEnv.parentDisposable if (!assertionsEnabled() && System.getenv(ENV_VAR_METALAVA_DUMP_ARGV) == null && diff --git a/src/test/java/com/android/tools/metalava/DriverTest.kt b/src/test/java/com/android/tools/metalava/DriverTest.kt index 5d521dcf039a92ac2ef8c972651917b6c2ba3387..533e58f8d1690d6cdf2d644e490fb8139499bdae 100644 --- a/src/test/java/com/android/tools/metalava/DriverTest.kt +++ b/src/test/java/com/android/tools/metalava/DriverTest.kt @@ -38,6 +38,7 @@ import com.android.utils.StdLogger import com.google.common.io.ByteStreams import com.google.common.io.Closeables import com.google.common.io.Files +import com.intellij.openapi.util.Disposer import org.intellij.lang.annotations.Language import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull @@ -94,6 +95,9 @@ abstract class DriverTest { val sw = StringWriter() val writer = PrintWriter(sw) + + Disposer.setDebugMode(true) + if (!com.android.tools.metalava.run(arrayOf(*args), writer, writer)) { val actualFail = cleanupString(sw.toString(), null) if (cleanupString(expectedFail, null).replace(".", "").trim() != @@ -124,6 +128,8 @@ abstract class DriverTest { fail("Printed newlines with nothing else") } + Disposer.assertIsEmpty(true) + return printedOutput } finally { System.setOut(previousOut)