Skip to content

Commit

Permalink
Added Save in diktat smoke tests:
Browse files Browse the repository at this point in the history
### What's done:
* added Save in diktat smoke tests
Closes #1047
  • Loading branch information
Cheshiriks committed Sep 24, 2021
1 parent d22d0a4 commit 7bbb809
Show file tree
Hide file tree
Showing 21 changed files with 59 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test with multiplatform project layout`() {
fixAndCompare("../../jsMain/kotlin/org/cqfn/diktat/scripts/ScriptExpected.kt",
fixAndCompareSmokeTest("../../jsMain/kotlin/org/cqfn/diktat/scripts/ScriptExpected.kt",
"../../jsMain/kotlin/org/cqfn/diktat/scripts/ScriptTest.kt")
}

Expand All @@ -95,19 +95,19 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
fun `regression - should not fail if package is not set`() {
overrideRulesConfig(listOf(Warnings.PACKAGE_NAME_MISSING, Warnings.PACKAGE_NAME_INCORRECT_PATH,
Warnings.PACKAGE_NAME_INCORRECT_PREFIX))
fixAndCompare("DefaultPackageExpected.kt", "DefaultPackageTest.kt")
fixAndCompareSmokeTest("DefaultPackageExpected.kt", "DefaultPackageTest.kt")
}

@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test #7`() {
fixAndCompare("Example7Expected.kt", "Example7Test.kt")
fixAndCompareSmokeTest("Example7Expected.kt", "Example7Test.kt")
}

@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test #6`() {
fixAndCompare("Example6Expected.kt", "Example6Test.kt")
fixAndCompareSmokeTest("Example6Expected.kt", "Example6Test.kt")
}

@Test
Expand All @@ -131,7 +131,7 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
)
)
)
fixAndCompare("Example5Expected.kt", "Example5Test.kt")
fixAndCompareSmokeTest("Example5Expected.kt", "Example5Test.kt")

Assertions.assertFalse(
unfixedLintErrors.contains(LintError(line = 1, col = 1, ruleId = "diktat-ruleset:comments", detail = "${Warnings.COMMENTED_OUT_CODE.warnText()} /*"))
Expand All @@ -145,25 +145,25 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test #4`() {
fixAndCompare("Example4Expected.kt", "Example4Test.kt")
fixAndCompareSmokeTest("Example4Expected.kt", "Example4Test.kt")
}

@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test #3`() {
fixAndCompare("Example3Expected.kt", "Example3Test.kt")
fixAndCompareSmokeTest("Example3Expected.kt", "Example3Test.kt")
}

@Test
@Tag("DiktatRuleSetProvider")
fun `regression - shouldn't throw exception in cases similar to #371`() {
fixAndCompare("Bug1Expected.kt", "Bug1Test.kt")
fixAndCompareSmokeTest("Bug1Expected.kt", "Bug1Test.kt")
}

@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test #2`() {
fixAndCompare("Example2Expected.kt", "Example2Test.kt")
fixAndCompareSmokeTest("Example2Expected.kt", "Example2Test.kt")
unfixedLintErrors.assertEquals(
LintError(1, 1, "$DIKTAT_RULE_SET_ID:header-comment", "${HEADER_MISSING_IN_NON_SINGLE_CLASS_FILE.warnText()} there are 2 declared classes and/or objects", false),
LintError(15, 23, "$DIKTAT_RULE_SET_ID:kdoc-methods",
Expand All @@ -176,7 +176,7 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test #1`() {
fixAndCompare("Example1Expected.kt", "Example1Test.kt")
fixAndCompareSmokeTest("Example1Expected.kt", "Example1Test.kt")
unfixedLintErrors.assertEquals(
LintError(1, 1, "$DIKTAT_RULE_SET_ID:file-naming", "${FILE_NAME_MATCH_CLASS.warnText()} Example1Test.kt vs Example", true),
LintError(1, 1, "$DIKTAT_RULE_SET_ID:kdoc-formatting", "${KDOC_NO_EMPTY_TAGS.warnText()} @return", false),
Expand Down Expand Up @@ -220,7 +220,7 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test with gradle script plugin`() {
fixAndCompare("kotlin-library-expected.gradle.kts", "kotlin-library.gradle.kts")
fixAndCompareSmokeTest("kotlin-library-expected.gradle.kts", "kotlin-library.gradle.kts")
Assertions.assertEquals(
LintError(2, 1, "$DIKTAT_RULE_SET_ID:comments", "[COMMENTED_OUT_CODE] you should not comment out code, " +
"use VCS to save it in history and delete this block: import org.jetbrains.kotlin.gradle.dsl.jvm", false),
Expand All @@ -231,14 +231,14 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test with kts files #2`() {
fixAndCompare("script/SimpleRunInScriptExpected.kts", "script/SimpleRunInScriptTest.kts")
fixAndCompareSmokeTest("script/SimpleRunInScriptExpected.kts", "script/SimpleRunInScriptTest.kts")
Assertions.assertEquals(3, unfixedLintErrors.size)
}

@Test
@Tag("DiktatRuleSetProvider")
fun `smoke test with kts files with package name`() {
fixAndCompare("script/PackageInScriptExpected.kts", "script/PackageInScriptTest.kts")
fixAndCompareSmokeTest("script/PackageInScriptExpected.kts", "script/PackageInScriptTest.kts")
Assertions.assertEquals(3, unfixedLintErrors.size)
}

Expand All @@ -254,7 +254,7 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
)
)
)
fixAndCompare("Example1-2Expected.kt", "Example1Test.kt")
fixAndCompareSmokeTest("Example1-2Expected.kt", "Example1Test.kt")
unfixedLintErrors.assertEquals(
LintError(1, 1, "$DIKTAT_RULE_SET_ID:kdoc-formatting", "${KDOC_NO_EMPTY_TAGS.warnText()} @return", false),
LintError(3, 1, "$DIKTAT_RULE_SET_ID:kdoc-comments", "${MISSING_KDOC_TOP_LEVEL.warnText()} example", false),
Expand All @@ -271,13 +271,13 @@ class DiktatSmokeTest : FixTestBase("test/smoke/src/main/kotlin",
@Test
@Tag("DiktatRuleSetProvider")
fun `regression - should correctly handle tags with empty lines`() {
fixAndCompare("KdocFormattingMultilineTagsExpected.kt", "KdocFormattingMultilineTagsTest.kt")
fixAndCompareSmokeTest("KdocFormattingMultilineTagsExpected.kt", "KdocFormattingMultilineTagsTest.kt")
}

@Test
@Tag("DiktatRuleSetProvider")
fun `regression - FP of local variables rule`() {
fixAndCompare("LocalVariableWithOffsetExpected.kt", "LocalVariableWithOffsetTest.kt")
fixAndCompareSmokeTest("LocalVariableWithOffsetExpected.kt", "LocalVariableWithOffsetTest.kt")
org.assertj.core.api.Assertions.assertThat(unfixedLintErrors).noneMatch {
it.ruleId == "diktat-ruleset:local-variables"
}
Expand Down
11 changes: 11 additions & 0 deletions diktat-rules/src/test/kotlin/org/cqfn/diktat/util/FixTestBase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,17 @@ open class FixTestBase(protected val resourceFilePath: String,
)
}

/**
* @param expectedPath path to file with expected result, relative to [resourceFilePath]
* @param testPath path to file with code that will be transformed by formatter, relative to [resourceFilePath]
*/
protected fun fixAndCompareSmokeTest(expectedPath: String, testPath: String) {
Assertions.assertTrue(
testComparatorUnit
.compareFilesFromResources(expectedPath, testPath, true)
)
}

/**
* @param expectedPath path to file with expected result, relative to [resourceFilePath]
* @param testPath path to file with code that will be transformed by formatter, relative to [resourceFilePath]
Expand Down
10 changes: 10 additions & 0 deletions diktat-rules/src/test/resources/test/smoke/save.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[general]
execCmd="./ktlint -R diktat-1.0.0-rc.2.jar"
tags = ["smokeTest"]
description = "SmokeTest"
suiteName = "SmokeTest"

[fix]
execFlags="-F"
resourceNameTestSuffix="Test"
resourceNameExpectedSuffix="Expected"
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,3 @@ import kotlinx.browser.document
fun main() {
(document.getElementById("myId") as HTMLElement).click()
}

Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,3 @@ class D {
fun readFile(foo: Foo) {
var bar: Bar
}

Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
@file:Suppress(
"PACKAGE_NAME_MISSING",
"PACKAGE_NAME_INCORRECT_PATH",
"PACKAGE_NAME_INCORRECT_PREFIX"
)

/**
* Dolor sit amet
*/
class Example

Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@

@file:Suppress(
"PACKAGE_NAME_MISSING",
"PACKAGE_NAME_INCORRECT_PATH",
"PACKAGE_NAME_INCORRECT_PREFIX"
)
/**
* Dolor sit amet
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,3 @@ fun foo(x : Int
)
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,3 @@ class Example {
bar(x, y)
)
}

Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,3 @@ private fun foo(node: ASTNode) {

setOf<Object>(IOException(), Properties(), LoggerFactory())
}

Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,3 @@ fun mains() {
}
httpClient.doRequest()
}

Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,3 @@ fun foo() {
val y = "akgjsaujtmaksdkfasakgjsaujtmaksdkfasakgjsaujtmaksdkfasakgjsaujtm" +
" aksdkfasfasakgjsaujtmaksdfasafasakgjsaujtmaksdfasakgjsaujtmaksdfasakgjsaujtmaksdfasakgjsaujtmaksdfasakgjsaujtmaksdkgjsaujtmaksdfasakgjsaujtmaksd"
}

Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,3 @@ package org.cqfn.diktat
class Some {
val config = Config()
}

Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,3 @@ val dockerFileAsText =
COPY resources $resourcesPath
RUN /bin/bash
""".trimIndent() // RUN command shouldn't matter because it will be replaced on container creation

Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,3 @@ fun foo() {
doSmth()
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,3 @@ fun foo1(bar: Bar): Baz {
fun foo2(bar: Bar): Baz {
// placeholder
}

Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,3 @@ override fun boo() {
handleTestFile(chunk.map { it.single() }, warnPluginConfig, generalConfig)
}.forEach { listTestResult.addAll(it) }
}

Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,3 @@ import org.gradle.kotlin.dsl.plugins
plugins {
kotlin("jvm")
}

Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,3 @@ run {
also {
println("a")
}

Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,3 @@ run {
also {
println("a")
}

Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,14 @@ class TestComparatorUnit(private val resourceFilePath: String,
/**
* @param expectedResult
* @param testFileStr
* @param smoke
* @return true if transformed file equals expected result, false otherwise
*/
@Suppress("FUNCTION_BOOLEAN_PREFIX")
fun compareFilesFromResources(expectedResult: String, testFileStr: String): Boolean {
fun compareFilesFromResources(
expectedResult: String,
testFileStr: String,
smoke: Boolean = false): Boolean {
val expectedPath = javaClass.classLoader.getResource("$resourceFilePath/$expectedResult")
val testPath = javaClass.classLoader.getResource("$resourceFilePath/$testFileStr")
if (testPath == null || expectedPath == null) {
Expand All @@ -43,6 +47,13 @@ class TestComparatorUnit(private val resourceFilePath: String,
copyTestFile.absolutePath
)

if (smoke) {
val actual: MutableList<String> = mutableListOf()
actual.addAll(actualResult.split("\n"))
actual.removeLast()
return FileComparator(expectedFile, actual).compareFilesEqual()
}

// fixme: actualResult is separated by KtLint#determineLneSeparator, should be split by it here too
return FileComparator(expectedFile, actualResult.split("\n")).compareFilesEqual()
}
Expand Down

0 comments on commit 7bbb809

Please sign in to comment.