From 6081bdfdd5178dee52f49f00ed7905f86b049cbf Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Fri, 24 May 2019 01:03:30 -0700 Subject: [PATCH] Added the Gradle project directory as the configuration properties file location. Closes #6 --- .idea/checkstyle-idea.xml | 16 +++++++++ build.gradle.kts | 20 ++++++----- gradle/wrapper/gradle-wrapper.properties | 2 +- .../erik/gradle/semver/SemverPlugin.kt | 6 +++- .../net/thauvin/erik/gradle/semver/Utils.kt | 8 ++--- .../thauvin/erik/gradle/semver/UtilsSpec.kt | 33 +++++++++++++++++++ 6 files changed, 70 insertions(+), 15 deletions(-) create mode 100644 .idea/checkstyle-idea.xml diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml new file mode 100644 index 0000000..95c433c --- /dev/null +++ b/.idea/checkstyle-idea.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 6c68d39..8839bbd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,20 +6,20 @@ plugins { `maven-publish` jacoco id("com.github.ben-manes.versions") version "0.21.0" - id("com.gradle.build-scan") version "2.2.1" + id("com.gradle.build-scan") version "2.3" id("com.gradle.plugin-publish") version "0.10.1" id("io.gitlab.arturbosch.detekt") version "1.0.0-RC14" - id("org.jlleitschuh.gradle.ktlint") version "7.3.0" - id("org.sonarqube") version "2.7" + id("org.jmailen.kotlinter") version "1.25.2" + id("org.sonarqube") version "2.7.1" } -version = "1.0.0" +version = "1.0.1" group = "net.thauvin.erik.gradle" var github = "https://github.com/ethauvin/semver-gradle" var packageName = "net.thauvin.erik.gradle.semver" -var spek_version = "2.0.2" +var spek_version = "2.0.5" repositories { jcenter() @@ -56,10 +56,6 @@ tasks { } } - "check" { - dependsOn("ktlintCheck") - } - "sonarqube" { dependsOn("jacocoTestReport") } @@ -81,6 +77,12 @@ detekt { baseline = project.rootDir.resolve("detekt-baseline.xml") } +kotlinter { + ignoreFailures = false + reporters = arrayOf("html") + experimentalRules = false +} + sonarqube { properties { property("sonar.projectName", "semver-gradle") diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5f1b120..f4d7b2b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt b/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt index 0508fc7..a6dca00 100644 --- a/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt +++ b/src/main/kotlin/net/thauvin/erik/gradle/semver/SemverPlugin.kt @@ -59,7 +59,11 @@ class SemverPlugin : Plugin { } private fun afterEvaluate(project: Project) { - val propsFile = File(config.properties) + val propsFile = if (File(config.properties).isAbsolute) { + File(config.properties) + } else { + File("${project.projectDir}${File.separator}${config.properties}") + } if (project.version != "unspecified") { project.logger.warn( diff --git a/src/main/kotlin/net/thauvin/erik/gradle/semver/Utils.kt b/src/main/kotlin/net/thauvin/erik/gradle/semver/Utils.kt index e6e1489..c4da2b1 100644 --- a/src/main/kotlin/net/thauvin/erik/gradle/semver/Utils.kt +++ b/src/main/kotlin/net/thauvin/erik/gradle/semver/Utils.kt @@ -70,12 +70,12 @@ object Utils { var isNew = false val props = Properties() file.apply { - if (!exists()) { - if (!createNewFile()) { - throw GradleException("Unable to create: `$absoluteFile`") - } else { + try { + if (!exists() && createNewFile()) { isNew = true } + } catch (e: Exception) { + throw GradleException("Unable to create: `$absoluteFile`", e) } if (canReadFile()) { FileInputStream(this).reader().use { reader -> diff --git a/src/test/kotlin/net/thauvin/erik/gradle/semver/UtilsSpec.kt b/src/test/kotlin/net/thauvin/erik/gradle/semver/UtilsSpec.kt index 698ab7f..018c2b0 100644 --- a/src/test/kotlin/net/thauvin/erik/gradle/semver/UtilsSpec.kt +++ b/src/test/kotlin/net/thauvin/erik/gradle/semver/UtilsSpec.kt @@ -32,11 +32,13 @@ package net.thauvin.erik.gradle.semver import net.thauvin.erik.gradle.semver.Utils.canReadFile +import org.gradle.api.GradleException import org.spekframework.spek2.Spek import org.spekframework.spek2.style.gherkin.Feature import java.io.File import java.util.Properties import kotlin.test.assertEquals +import kotlin.test.assertFailsWith import kotlin.test.assertNull import kotlin.test.assertTrue @@ -46,6 +48,7 @@ object UtilsSpec : Spek({ val version = Version() val config = SemverConfig() val propsFile = File("test.properties") + val propsLocked = File("locked.properties") lateinit var props: Properties Scenario("Save/Load Properties") { @@ -167,5 +170,35 @@ object UtilsSpec : Spek({ assertEquals(version.buildMeta, "007") } } + + Scenario("Save to locked properties") { + Given("the locked properties") { + propsLocked.createNewFile() + propsLocked.setReadOnly() + config.properties = propsLocked.name + } + + Then("saving the locked properties file") { + assertFailsWith { + Utils.saveProperties(config, version) + } + propsLocked.delete() + } + } + + Scenario("Load locked properties") { + lateinit var locked: File + + Given("the locked location") { + locked = File("locked") + } + + Then("loading locked properties") { + assertFailsWith { + Utils.loadProperties(File(locked, propsLocked.name)) + } + locked.delete() + } + } } })