From c4c245ecac4510efe144cbc2275f4607c30c937e Mon Sep 17 00:00:00 2001 From: George Hogg Date: Sun, 1 Oct 2023 21:41:28 +0100 Subject: [PATCH 1/2] Update CheckMojo execute method to accept multiple input directories, delimited by commas --- src/main/java/com/github/ozsie/CheckMojo.kt | 16 ++++++--- .../java/com/github/ozsie/CheckMojoSpec.kt | 34 ++++++++++++++++--- .../code-samples/valid2/ValidFile2.kt | 1 + 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 src/test/resources/code-samples/valid2/ValidFile2.kt diff --git a/src/main/java/com/github/ozsie/CheckMojo.kt b/src/main/java/com/github/ozsie/CheckMojo.kt index f3dfe8c..bbcb492 100644 --- a/src/main/java/com/github/ozsie/CheckMojo.kt +++ b/src/main/java/com/github/ozsie/CheckMojo.kt @@ -20,11 +20,13 @@ class CheckMojo : DetektMojo() { log.debug("Applying $it") } val cliArgs = parseArguments(getCliSting().log().toTypedArray()) - val foundInputDir = Files.isDirectory(Paths.get(input)) - if (!skip && foundInputDir) + val invalidInputDirs = input.split(",").mapNotNull { + if (!Files.isDirectory(Paths.get(it))) it else null + } + if (!skip && invalidInputDirs.isEmpty()) failBuildIfNeeded { Runner(cliArgs, System.out, System.err).execute() } else - inputSkipLog(skip) + inputSkipLog(skip, invalidInputDirs) } private fun failBuildIfNeeded(block: () -> Unit) { @@ -38,7 +40,11 @@ class CheckMojo : DetektMojo() { } } - private fun inputSkipLog(skip: Boolean) { - if (skip) log.info("Skipping execution") else log.info("Input directory '$input' not found, skipping module") + private fun inputSkipLog(skip: Boolean, invalidInputDirs: List) { + if (skip) { + log.info("Skipping execution") + } else { + log.info("Failed to resolve input directories '${invalidInputDirs.joinToString()}', skipping module") + } } } diff --git a/src/test/java/com/github/ozsie/CheckMojoSpec.kt b/src/test/java/com/github/ozsie/CheckMojoSpec.kt index 96ea88d..882c06b 100644 --- a/src/test/java/com/github/ozsie/CheckMojoSpec.kt +++ b/src/test/java/com/github/ozsie/CheckMojoSpec.kt @@ -8,10 +8,8 @@ import kotlin.test.assertFailsWith import kotlin.test.expect class CheckMojoSpec : Spek({ - val invalidPackageNamingDirectoryPath by lazy { - CheckMojoSpec::class.java.classLoader.getResource("code-samples/invalid-package-naming")!! - .file - } + val codeSamplesDirectory = CheckMojoSpec::class.java.classLoader.getResource("code-samples")!!.file + val invalidPackageNamingDirectoryPath = "$codeSamplesDirectory/invalid-package-naming" given("a CheckMojo and 'skip' is true") { val checkMojo = CheckMojo() @@ -64,4 +62,32 @@ class CheckMojoSpec : Spek({ } } } + + given("multiple valid comma separated input directories are supplied") { + val checkMojo = CheckMojo().apply { + input = "$codeSamplesDirectory/valid,$codeSamplesDirectory/valid2" + failBuildOnMaxIssuesReached = true + } + on("checkMojo.execute()") { + test("detekt analyses the specified directories") { + assertFailsWith(MaxIssuesReached::class, "Build failed with 2 weighted issues.") { + checkMojo.execute() + } + } + } + } + + given("a mix of valid and invalid comma separated input directories are supplied") { + val checkMojo = CheckMojo().apply { + input = "$codeSamplesDirectory/valid,invalidDirectory" + failBuildOnMaxIssuesReached = false + } + on("checkMojo.execute()") { + test("detekt analysis is aborted") { + expect(Unit) { + checkMojo.execute() + } + } + } + } }) diff --git a/src/test/resources/code-samples/valid2/ValidFile2.kt b/src/test/resources/code-samples/valid2/ValidFile2.kt new file mode 100644 index 0000000..9ad4f47 --- /dev/null +++ b/src/test/resources/code-samples/valid2/ValidFile2.kt @@ -0,0 +1 @@ +package `code-samples`.valid2 From 48eadcef861b72d40c9e667e0cb86de34fba0e05 Mon Sep 17 00:00:00 2001 From: George Hogg Date: Mon, 2 Oct 2023 09:46:03 +0100 Subject: [PATCH 2/2] Update baseline to ignore test file ValidFile2.kt --- baseline.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/baseline.xml b/baseline.xml index c1ca4a3..ec15838 100644 --- a/baseline.xml +++ b/baseline.xml @@ -3,8 +3,10 @@ InvalidPackageDeclaration:ValidFile.kt$package `code-samples`.`valid` + InvalidPackageDeclaration:ValidFile2.kt$package `code-samples`.valid2 InvalidPackageDeclaration:WildcardImportViolated.kt$package `code-samples`.`invalid-package-naming` PackageNaming:ValidFile.kt$package `code-samples`.`valid` + PackageNaming:ValidFile2.kt$package `code-samples`.valid2 PackageNaming:WildcardImportViolated.kt$package `code-samples`.`invalid-package-naming`