Skip to content

Commit 2a9a86a

Browse files
Merge pull request #66 from aPureBase/v3.3.2
v3.3.2
2 parents 4a2630b + 586b0eb commit 2a9a86a

File tree

6 files changed

+39
-4
lines changed

6 files changed

+39
-4
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# 3.3.2
2+
* Fix boolean parsing in plain class (#65)
3+
14
# 3.3.1
25
* Revert breaking change to argument name resolution.
36
The naming strategy can be changed in `configureArkenv`.

arkenv/build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
plugins {
22
base
3-
kotlin("jvm") version "1.4.32"
4-
id("org.jetbrains.dokka") version "1.4.32"
3+
kotlin("jvm") version "1.5.10"
4+
id("org.jetbrains.dokka") version "1.5.0"
55
id("java-test-fixtures")
66
signing
77
}
@@ -24,6 +24,7 @@ dependencies {
2424
testFixturesApi("org.jmockit:jmockit:$jmockitVersion")
2525
testFixturesApi("org.amshove.kluent:kluent:$kluentVersion")
2626
testFixturesApi("org.junit.jupiter:junit-jupiter-api:$junitVersion")
27+
testFixturesApi("org.junit.jupiter:junit-jupiter-params:$junitVersion")
2728
testFixturesApi("io.strikt:strikt-core:$striktVersion")
2829

2930
testImplementation(testFixtures(project(":arkenv")))

arkenv/src/main/kotlin/com/apurebase/arkenv/ArkenvMapper.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ internal object ArkenvMapper {
3131
Long::class -> toLongOrNull()
3232
String::class -> this
3333
Char::class -> firstOrNull()
34+
Boolean::class -> toBoolean() || this == "1"
3435
List::class, Collection::class -> split()
3536
IntArray::class -> split().map(String::toInt).toIntArray()
3637
ShortArray::class -> split().map(String::toShort).toShortArray()

arkenv/src/test/kotlin/com/apurebase/arkenv/ParseClassTests.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ import com.apurebase.arkenv.test.Expected
55
import com.apurebase.arkenv.util.argument
66
import com.apurebase.arkenv.util.parse
77
import org.junit.jupiter.api.Test
8+
import org.junit.jupiter.params.ParameterizedTest
9+
import org.junit.jupiter.params.provider.ValueSource
810
import strikt.api.expectThat
911
import strikt.assertions.isEqualTo
12+
import strikt.assertions.isFalse
1013
import strikt.assertions.isNull
14+
import strikt.assertions.isTrue
1115

1216
/**
1317
* Tests for the [ArkenvParser.parseClass] functionality, parsing plain classes.
@@ -94,4 +98,30 @@ class ParseClassTests {
9498
get { databasePort } isEqualTo Expected.databasePort
9599
}
96100
}
101+
102+
@ParameterizedTest
103+
@ValueSource(strings = ["true", "1"])
104+
fun `boolean true`(input: String) {
105+
// Arrange
106+
class Configuration(val headless: Boolean = false)
107+
108+
// Act
109+
val config = Arkenv.parse<Configuration>(arrayOf("--headless", input))
110+
111+
// Assert
112+
expectThat(config) { get { headless }.isTrue() }
113+
}
114+
115+
@ParameterizedTest
116+
@ValueSource(strings = ["false", "0", ""])
117+
fun `boolean false`(input: String) {
118+
// Arrange
119+
class Configuration(val headless: Boolean = false)
120+
121+
// Act
122+
val config = Arkenv.parse<Configuration>(arrayOf("--headless", input))
123+
124+
// Assert
125+
expectThat(config) { get { headless }.isFalse() }
126+
}
97127
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group=com.apurebase
2-
version=3.3.1
2+
version=3.3.2
33

44
# Versions
55
junitVersion=5.7.1
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)