From c01362a943e73dd52097ddeae7e1751e74488e7a Mon Sep 17 00:00:00 2001 From: "victor.petukhov" Date: Fri, 5 Oct 2018 11:05:13 +0300 Subject: [PATCH] Fix path separators for Windows in spec test validator --- .../codegen/AbstractBlackBoxCodegenTestSpec.kt | 3 ++- .../spec/validators/AbstractSpecTestValidator.kt | 16 ++++++++-------- .../spec/validators/LinkedSpecTestValidator.kt | 8 ++++---- .../validators/NotLinkedSpecTestValidator.kt | 6 +++--- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/compiler/tests-spec/tests/org/jetbrains/kotlin/codegen/AbstractBlackBoxCodegenTestSpec.kt b/compiler/tests-spec/tests/org/jetbrains/kotlin/codegen/AbstractBlackBoxCodegenTestSpec.kt index 298512741fa..a7fcd918fe3 100644 --- a/compiler/tests-spec/tests/org/jetbrains/kotlin/codegen/AbstractBlackBoxCodegenTestSpec.kt +++ b/compiler/tests-spec/tests/org/jetbrains/kotlin/codegen/AbstractBlackBoxCodegenTestSpec.kt @@ -24,7 +24,8 @@ abstract class AbstractBlackBoxCodegenTestSpec : AbstractBlackBoxCodegenTest() { private val helperDirectives = mapOf( "REFLECT" to "reflect.kt" ) - private val packagePattern = Pattern.compile("""(?:^|\n)package (?.*?)(?:;|\n)""") + private val packagePattern = + Pattern.compile("""(?:^|${AbstractSpecTestValidator.lineSeparator})package (?.*?)(?:;|${AbstractSpecTestValidator.lineSeparator})""") } private fun addPackageDirectiveToHelperFile(helperContent: String, packageName: String?) = diff --git a/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/validators/AbstractSpecTestValidator.kt b/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/validators/AbstractSpecTestValidator.kt index 1c5d30e47fb..2b3c772dff4 100644 --- a/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/validators/AbstractSpecTestValidator.kt +++ b/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/validators/AbstractSpecTestValidator.kt @@ -103,25 +103,25 @@ abstract class AbstractSpecTestValidator(private val testD companion object { const val ISSUE_TRACKER = "https://youtrack.jetbrains.com/issue/" const val INTEGER_REGEX = """[1-9]\d*""" - const val MULTILINE_COMMENT_REGEX = """\/\*\s*%s\s+\*\/\n*""" - private const val SINGLELINE_COMMENT_REGEX = """\/\/\s*%s\n*""" val pathSeparator: String = Pattern.quote(File.separator) val lineSeparator: String = System.lineSeparator() val testAreaRegex = """(?${TestArea.values().joinToString("|").replace("_", " ")})""" val testTypeRegex = """(?${TestType.values().joinToString("|")})""" + val multilineCommentRegex = """\/\*\s*%s\s+\*\/(?:$lineSeparator)*""" + private val singlelineCommentRegex = """\/\/\s*%s(?:$lineSeparator)*""" private val testInfoElementPattern: Pattern = Pattern.compile("""\s*(?[A-Z ]+?)(?::\s*(?.*?))?$lineSeparator""") - private val testCaseInfoRegex = """(?CASE DESCRIPTION:[\s\S]*?$lineSeparator)$lineSeparator*""" + private val testCaseInfoRegex = """(?CASE DESCRIPTION:[\s\S]*?$lineSeparator)(?:$lineSeparator)*""" private val testPathBaseRegexTemplate = """^.*?$pathSeparator(?diagnostics|psi|(?:codegen${pathSeparator}box))$pathSeparator%s""" - val testPathRegexTemplate = """$testPathBaseRegexTemplate$pathSeparator(?pos|neg)/%s$""" - val testCaseInfoSingleLinePattern: Pattern = Pattern.compile(SINGLELINE_COMMENT_REGEX.format(testCaseInfoRegex)) - val testCaseInfoMultilinePattern: Pattern = Pattern.compile(MULTILINE_COMMENT_REGEX.format(testCaseInfoRegex)) + val testPathRegexTemplate = """$testPathBaseRegexTemplate$pathSeparator(?pos|neg)$pathSeparator%s$""" + val testCaseInfoSingleLinePattern: Pattern = Pattern.compile(singlelineCommentRegex.format(testCaseInfoRegex)) + val testCaseInfoMultilinePattern: Pattern = Pattern.compile(multilineCommentRegex.format(testCaseInfoRegex)) fun getInstanceByType(testFile: File) = when { - Pattern.compile(testPathBaseRegexTemplate.format(LinkedSpecTestValidator.pathPartRegex)).matcher(testFile.absolutePath).find() -> + Pattern.compile(testPathBaseRegexTemplate.format(LinkedSpecTestValidator.pathPartRegex)).matcher(testFile.canonicalPath).find() -> LinkedSpecTestValidator(testFile) - Pattern.compile(testPathBaseRegexTemplate.format(NotLinkedSpecTestValidator.pathPartRegex)).matcher(testFile.absolutePath).find() -> + Pattern.compile(testPathBaseRegexTemplate.format(NotLinkedSpecTestValidator.pathPartRegex)).matcher(testFile.canonicalPath).find() -> NotLinkedSpecTestValidator(testFile) else -> throw SpecTestValidationException(SpecTestValidationFailedReason.FILENAME_NOT_VALID) } diff --git a/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/validators/LinkedSpecTestValidator.kt b/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/validators/LinkedSpecTestValidator.kt index 01a06f2de23..a5e6369f50a 100644 --- a/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/validators/LinkedSpecTestValidator.kt +++ b/compiler/tests-spec/tests/org/jetbrains/kotlin/spec/validators/LinkedSpecTestValidator.kt @@ -56,11 +56,11 @@ class LinkedSpecTest( class LinkedSpecTestValidator(testDataFile: File) : AbstractSpecTestValidator(testDataFile) { override val testPathPattern = getPathPattern() override val testInfoPattern: Pattern = - Pattern.compile(MULTILINE_COMMENT_REGEX.format("""KOTLIN $testAreaRegex SPEC TEST \($testTypeRegex\)$lineSeparator(?[\s\S]*?$lineSeparator)""")) + Pattern.compile(multilineCommentRegex.format("""KOTLIN $testAreaRegex SPEC TEST \($testTypeRegex\)$lineSeparator(?[\s\S]*?$lineSeparator)""")) companion object : SpecTestValidatorHelperObject { override val pathPartRegex = - """${SpecTestLinkedType.LINKED.testDataPath}$pathSeparator(?(?:[\w-]+)(?:/[\w-]+)*?)${pathSeparator}p-(?$INTEGER_REGEX)""" + """${SpecTestLinkedType.LINKED.testDataPath}$pathSeparator(?(?:[\w-]+)(?:$pathSeparator[\w-]+)*?)${pathSeparator}p-(?$INTEGER_REGEX)""" override val filenameRegex = """(?$INTEGER_REGEX)\.(?$INTEGER_REGEX)\.kt""" override fun getPathPattern(): Pattern = Pattern.compile(testPathRegexTemplate.format(pathPartRegex, filenameRegex)) } @@ -91,9 +91,9 @@ class LinkedSpecTestValidator(testDataFile: File) : AbstractSpecTestValidator
  • (testDataFile) { override val testPathPattern = getPathPattern() override val testInfoPattern: Pattern = - Pattern.compile(MULTILINE_COMMENT_REGEX.format("""KOTLIN $testAreaRegex NOT LINKED SPEC TEST \($testTypeRegex\)$lineSeparator(?[\s\S]*?$lineSeparator)""")) + Pattern.compile(multilineCommentRegex.format("""KOTLIN $testAreaRegex NOT LINKED SPEC TEST \($testTypeRegex\)$lineSeparator(?[\s\S]*?$lineSeparator)""")) companion object : SpecTestValidatorHelperObject { override val pathPartRegex = - """${SpecTestLinkedType.NOT_LINKED.testDataPath}$pathSeparator(?[\w-]+)$pathSeparator(?(?:[\w-]+)(?:/[\w-]+)*?)""" + """${SpecTestLinkedType.NOT_LINKED.testDataPath}$pathSeparator(?[\w-]+)$pathSeparator(?(?:[\w-]+)(?:$pathSeparator[\w-]+)*?)""" override val filenameRegex = """(?$INTEGER_REGEX)\.kt""" override fun getPathPattern(): Pattern = Pattern.compile(testPathRegexTemplate.format(pathPartRegex, filenameRegex)) } @@ -82,7 +82,7 @@ class NotLinkedSpecTestValidator(testDataFile: File) : AbstractSpecTestValidator TestArea.valueOf(testInfoMatcher.group("testArea").toUpperCase()), TestType.fromValue(testInfoMatcher.group("testType"))!!, testInfoMatcher.group("sections"), - testInfoMatcher.group("categories").split("/"), + testInfoMatcher.group("categories").split(File.separator), testNumber = testInfoMatcher.group("testNumber").toInt() )