[LL FIR] Remove FIR_IDE_IGNORE test directive
^KT-50732 fixed
This commit is contained in:
committed by
Space Team
parent
06a2069d6b
commit
17500b225d
-16
@@ -1,16 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based
|
||||
|
||||
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability.Global
|
||||
|
||||
object FirIdeDirectives : SimpleDirectivesContainer() {
|
||||
val FIR_IDE_IGNORE by directive(
|
||||
description = "Test is ignored in FIR IDE",
|
||||
applicability = Global
|
||||
)
|
||||
}
|
||||
-72
@@ -1,72 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based
|
||||
|
||||
import org.jetbrains.kotlin.test.WrappedException
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.moduleStructure
|
||||
import org.jetbrains.kotlin.test.utils.removeDirectiveFromFile
|
||||
|
||||
class IdeTestIgnoreHandler(testServices: TestServices) : AfterAnalysisChecker(testServices) {
|
||||
companion object {
|
||||
private val isTeamCityBuild: Boolean = System.getenv("TEAMCITY_VERSION") != null
|
||||
}
|
||||
|
||||
override val directiveContainers: List<DirectivesContainer>
|
||||
get() = listOf(FirIdeDirectives)
|
||||
|
||||
override fun check(failedAssertions: List<WrappedException>) {
|
||||
if (!isFirIdeIgnoreDirectivePresent()) return
|
||||
if (failedAssertions.isNotEmpty()) return
|
||||
val testDataFile = testServices.moduleStructure.originalTestDataFiles.first()
|
||||
|
||||
if (!isTeamCityBuild) {
|
||||
testDataFile.removeDirectiveFromFile(FirIdeDirectives.FIR_IDE_IGNORE)
|
||||
}
|
||||
|
||||
val message = if (isTeamCityBuild) {
|
||||
"Please remove // ${FirIdeDirectives.FIR_IDE_IGNORE} from the test source"
|
||||
} else {
|
||||
"Removed // ${FirIdeDirectives.FIR_IDE_IGNORE} from the test source"
|
||||
}
|
||||
throw TestWithFirIdeIgnoreAnnotationPassesException(
|
||||
"""
|
||||
Test pass in FIR IDE
|
||||
$message
|
||||
Please re-run the test now
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
override fun suppressIfNeeded(failedAssertions: List<WrappedException>): List<WrappedException> {
|
||||
return if (isFirIdeIgnoreDirectivePresent())
|
||||
failedAssertions.filter{ it.cause is TestWithFirIdeIgnoreAnnotationPassesException }
|
||||
else failedAssertions
|
||||
}
|
||||
|
||||
private fun isFirIdeIgnoreDirectivePresent(): Boolean {
|
||||
val moduleStructure = testServices.moduleStructure
|
||||
return FirIdeDirectives.FIR_IDE_IGNORE in moduleStructure.allDirectives
|
||||
}
|
||||
}
|
||||
|
||||
fun TestConfigurationBuilder.addIdeTestIgnoreHandler() {
|
||||
/* IdeTestIgnoreHandler should be executed after FirFailingTestSuppressor,
|
||||
otherwise IdeTestIgnoreHandler will suppress exceptions and FirFailingTestSuppressor will throw error
|
||||
saying that file .fir.fail exists but test passes
|
||||
*/
|
||||
forTestsMatching("*") {
|
||||
useAfterAnalysisCheckers(
|
||||
::IdeTestIgnoreHandler
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class TestWithFirIdeIgnoreAnnotationPassesException(override val message: String) : IllegalStateException()
|
||||
-2
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based
|
||||
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.addIdeTestIgnoreHandler
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||
import org.jetbrains.kotlin.test.runners.baseFirSpecDiagnosticTestConfiguration
|
||||
@@ -15,6 +14,5 @@ abstract class AbstractDiagnosisCompilerTestDataSpecTest : AbstractCompilerBased
|
||||
override fun TestConfigurationBuilder.configureTest() {
|
||||
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
||||
baseFirSpecDiagnosticTestConfiguration()
|
||||
addIdeTestIgnoreHandler()
|
||||
}
|
||||
}
|
||||
|
||||
-2
@@ -6,13 +6,11 @@
|
||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based
|
||||
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.AbstractCompilerBasedTestForFir
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.compiler.based.addIdeTestIgnoreHandler
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||
|
||||
abstract class AbstractDiagnosisCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
|
||||
override fun TestConfigurationBuilder.configureTest() {
|
||||
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
||||
addIdeTestIgnoreHandler()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user