From d3b1de24b134e222e3e47a5648a18f8b69556d6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brais=20Gab=C3=ADn?= Date: Tue, 26 Nov 2019 08:13:27 +0100 Subject: [PATCH] Don't compile test snippets (#2105) * Don't compile the snippet codes in the test by default If you want to check that your code in the snippets compiles you can use the flag -Pcompile-test-snippets=true in gradle * Configure travis and appvenyor to compile the snippets --- .travis.yml | 6 +++++- appveyor.yml | 14 ++++++++++---- build.gradle.kts | 6 ++++++ .../arturbosch/detekt/test/RuleExtensions.kt | 6 +++++- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3725a564c..21e14e885 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,18 +7,22 @@ matrix: - os: linux dist: trusty jdk: oraclejdk8 + env: COMPILE_TEST_SNIPPETS=true - os: linux dist: bionic jdk: openjdk11 + env: COMPILE_TEST_SNIPPETS=false - os: linux dist: bionic jdk: openjdk12 + env: COMPILE_TEST_SNIPPETS=false # JDK 8 - see https://docs.travis-ci.com/user/reference/osx/#jdk-and-macos - os: osx osx_image: xcode9.3 + env: COMPILE_TEST_SNIPPETS=false install: true script: - - ./gradlew build --build-cache --parallel -PwarningsAsErrors=true --scan + - ./gradlew build --build-cache --parallel -PwarningsAsErrors=true -Pcompile-test-snippets=$COMPILE_TEST_SNIPPETS --scan - ./gradlew shadowJar - java -jar ./detekt-cli/build/libs/detekt-cli-*-all.jar --help - java -jar ./detekt-cli/build/libs/detekt-cli-*-all.jar -i . --baseline ./config/detekt/baseline.xml -ex "**/resources/**,**/detekt*/build/**" -c ./detekt-cli/src/main/resources/default-detekt-config.yml,./config/detekt/detekt.yml diff --git a/appveyor.yml b/appveyor.yml index ad7abea0b..4f2fce99b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,9 +10,15 @@ clone_depth: 10 environment: TERM: dumb matrix: - - JAVA_HOME: C:\Program Files\Java\jdk1.8.0 - - JAVA_HOME: C:\Program Files\Java\jdk11 - - JAVA_HOME: C:\Program Files\Java\jdk12 + - + JAVA_HOME: C:\Program Files\Java\jdk1.8.0 + COMPILE_TEST_SNIPPETS: true + - + JAVA_HOME: C:\Program Files\Java\jdk11 + COMPILE_TEST_SNIPPETS: false + - + JAVA_HOME: C:\Program Files\Java\jdk12 + COMPILE_TEST_SNIPPETS: false init: - git config --global --unset core.autocrlf @@ -27,7 +33,7 @@ install: - gradlew.bat --version build_script: - - gradlew build --build-cache --parallel -PwarningsAsErrors=true + - gradlew build --build-cache --parallel -PwarningsAsErrors=true -Pcompile-test-snippets=%COMPILE_TEST_SNIPPETS% - gradlew installShadowDist - detekt-cli\build\install\detekt-cli-shadow\bin\detekt-cli --help diff --git a/build.gradle.kts b/build.gradle.kts index dc5b78607..590446cb4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -142,6 +142,12 @@ subprojects { tasks.withType().configureEach { useJUnitPlatform() systemProperty("SPEK_TIMEOUT", 0) // disable test timeout + val compileSnippetText: Boolean = if (project.hasProperty("compile-test-snippets")) { + (project.property("compile-test-snippets") as String).toBoolean() + } else { + false + } + systemProperty("compile-snippet-tests", compileSnippetText) testLogging { // set options for log level LIFECYCLE events = setOf( diff --git a/detekt-test/src/main/kotlin/io/gitlab/arturbosch/detekt/test/RuleExtensions.kt b/detekt-test/src/main/kotlin/io/gitlab/arturbosch/detekt/test/RuleExtensions.kt index 8805d055e..8676ac9d3 100644 --- a/detekt-test/src/main/kotlin/io/gitlab/arturbosch/detekt/test/RuleExtensions.kt +++ b/detekt-test/src/main/kotlin/io/gitlab/arturbosch/detekt/test/RuleExtensions.kt @@ -9,8 +9,12 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingContext import java.nio.file.Path +private val compileTestSnippets: Boolean = System.getProperty("compile-snippet-tests", "false")!!.toBoolean() + fun BaseRule.compileAndLint(@Language("kotlin") content: String): List { - KotlinScriptEngine.compile(content) + if (compileTestSnippets) { + KotlinScriptEngine.compile(content) + } return lint(content) }