[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
|
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.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.builders.TestConfigurationBuilder
|
||||||
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||||
import org.jetbrains.kotlin.test.runners.baseFirSpecDiagnosticTestConfiguration
|
import org.jetbrains.kotlin.test.runners.baseFirSpecDiagnosticTestConfiguration
|
||||||
@@ -15,6 +14,5 @@ abstract class AbstractDiagnosisCompilerTestDataSpecTest : AbstractCompilerBased
|
|||||||
override fun TestConfigurationBuilder.configureTest() {
|
override fun TestConfigurationBuilder.configureTest() {
|
||||||
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
||||||
baseFirSpecDiagnosticTestConfiguration()
|
baseFirSpecDiagnosticTestConfiguration()
|
||||||
addIdeTestIgnoreHandler()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-2
@@ -6,13 +6,11 @@
|
|||||||
package org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostic.compiler.based
|
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.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.builders.TestConfigurationBuilder
|
||||||
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
|
||||||
|
|
||||||
abstract class AbstractDiagnosisCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
|
abstract class AbstractDiagnosisCompilerTestDataTest : AbstractCompilerBasedTestForFir() {
|
||||||
override fun TestConfigurationBuilder.configureTest() {
|
override fun TestConfigurationBuilder.configureTest() {
|
||||||
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
baseFirDiagnosticTestConfiguration(frontendFacade = ::LowLevelFirFrontendFacade)
|
||||||
addIdeTestIgnoreHandler()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user