From 2fba44cc521b35b1106ae7d65617a39327baf7a7 Mon Sep 17 00:00:00 2001 From: Robert Stoll Date: Mon, 6 Jul 2020 21:56:49 +0200 Subject: [PATCH] add ResultAssertions to logic and use in Kotlin 1.3 extension which means: - introduce a Kotlin 1.3 extension for atrium-logic - adjust README installation, no need for the runtime dependency any more - add module-info.java to atrium-logic and atrium-logic-kotlin_1_3 --- README.md | 2 - .../api/fluent/en_GB/bigDecimalAssertions.kt | 4 -- .../src/module/module-info.java | 2 +- .../build.gradle | 2 +- .../en_GB/kotlin_1_3/resultAssertions.kt | 14 +++--- .../build.gradle | 2 +- .../build.gradle | 2 +- .../src/module/module-info.java | 2 +- logic/atrium-logic-common/build.gradle | 3 ++ logic/atrium-logic-js/build.gradle | 3 ++ .../src/module/module-info.java | 9 ++++ .../build.gradle | 20 +++++++++ .../tutteli/atrium/logic/kotlin_1_3/impls.kt | 20 +++++++++ .../tutteli/atrium/logic/kotlin_1_3/result.kt | 16 +++++++ .../logic/kotlin_1_3/ResultAssertions.kt | 15 +++++++ .../impl/DefaultResultAssertions.kt | 45 +++++++++++++++++++ .../atrium-logic-kotlin_1_3-js/build.gradle | 11 +++++ .../atrium-logic-kotlin_1_3-jvm/build.gradle | 11 +++++ .../src/module/module-info.java | 6 +++ logic/generateLogic.gradle | 9 ++-- settings.gradle | 5 +++ 21 files changed, 182 insertions(+), 21 deletions(-) create mode 100644 logic/atrium-logic-jvm/src/module/module-info.java create mode 100644 logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/build.gradle create mode 100644 logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/generated/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/impls.kt create mode 100644 logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/generated/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/result.kt create mode 100644 logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/ResultAssertions.kt create mode 100644 logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/impl/DefaultResultAssertions.kt create mode 100644 logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-js/build.gradle create mode 100644 logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-jvm/build.gradle create mode 100644 logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-jvm/src/module/module-info.java diff --git a/README.md b/README.md index 07fa665e8..4f980505d 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,6 @@ You can enable them as follows: ``` dependencies { testImplementation "ch.tutteli.atrium:atrium-api-fluent-en_GB-kotlin_1_3:$atrium_version" - testRuntimeOnly "ch.tutteli.atrium:atrium-domain-robstoll-kotlin_1_3:$atrium_version" } ``` @@ -140,7 +139,6 @@ And for the aforementioned extensions: ``` dependencies { testImplementation "ch.tutteli.atrium:atrium-api-infix-en_GB-kotlin_1_3:$atrium_version" - testRuntimeOnly "ch.tutteli.atrium:atrium-domain-robstoll-kotlin_1_3:$atrium_version" } ``` diff --git a/apis/fluent-en_GB/atrium-api-fluent-en_GB-jvm/src/main/kotlin/ch/tutteli/atrium/api/fluent/en_GB/bigDecimalAssertions.kt b/apis/fluent-en_GB/atrium-api-fluent-en_GB-jvm/src/main/kotlin/ch/tutteli/atrium/api/fluent/en_GB/bigDecimalAssertions.kt index 2729e9c45..4b5c6b6bd 100644 --- a/apis/fluent-en_GB/atrium-api-fluent-en_GB-jvm/src/main/kotlin/ch/tutteli/atrium/api/fluent/en_GB/bigDecimalAssertions.kt +++ b/apis/fluent-en_GB/atrium-api-fluent-en_GB-jvm/src/main/kotlin/ch/tutteli/atrium/api/fluent/en_GB/bigDecimalAssertions.kt @@ -3,12 +3,8 @@ package ch.tutteli.atrium.api.fluent.en_GB import ch.tutteli.atrium.creating.Expect -import ch.tutteli.atrium.domain.builders.ExpectImpl -import ch.tutteli.atrium.domain.builders.bigDecimal import ch.tutteli.atrium.domain.builders.creating.PleaseUseReplacementException import ch.tutteli.atrium.logic.* -import ch.tutteli.atrium.logic.isEqualIncludingScale -import ch.tutteli.atrium.logic.isNumericallyEqualTo import java.math.BigDecimal /** diff --git a/apis/fluent-en_GB/atrium-api-fluent-en_GB-jvm/src/module/module-info.java b/apis/fluent-en_GB/atrium-api-fluent-en_GB-jvm/src/module/module-info.java index 3a8485112..6dbcac91a 100644 --- a/apis/fluent-en_GB/atrium-api-fluent-en_GB-jvm/src/module/module-info.java +++ b/apis/fluent-en_GB/atrium-api-fluent-en_GB-jvm/src/module/module-info.java @@ -1,5 +1,5 @@ module ch.tutteli.atrium.api.fluent.en_GB { - requires ch.tutteli.atrium.domain.builders; + requires ch.tutteli.atrium.logic; requires kotlin.stdlib; diff --git a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-common/build.gradle b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-common/build.gradle index d757a52a9..94591f153 100644 --- a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-common/build.gradle +++ b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-common/build.gradle @@ -2,7 +2,7 @@ description = 'Kotlin 1.3 specific assertion functions and builders for fluent-e dependencies { api prefixedProject('api-fluent-en_GB-common') - api prefixedProject('domain-builders-kotlin_1_3-common') + api prefixedProject('logic-kotlin_1_3-common') testImplementation prefixedProject('specs-common') } diff --git a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/api/fluent/en_GB/kotlin_1_3/resultAssertions.kt b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/api/fluent/en_GB/kotlin_1_3/resultAssertions.kt index 9f591f0aa..5d0d8b575 100644 --- a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/api/fluent/en_GB/kotlin_1_3/resultAssertions.kt +++ b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/api/fluent/en_GB/kotlin_1_3/resultAssertions.kt @@ -1,8 +1,9 @@ package ch.tutteli.atrium.api.fluent.en_GB.kotlin_1_3 import ch.tutteli.atrium.creating.Expect -import ch.tutteli.atrium.domain.builders.ExpectImpl -import ch.tutteli.atrium.domain.builders.kotlin_1_3.result +import ch.tutteli.atrium.logic._logic +import ch.tutteli.atrium.logic.kotlin_1_3.isFailure +import ch.tutteli.atrium.logic.kotlin_1_3.isSuccess /** * Expects that the subject of the assertion (a [Result]) is a Success @@ -13,7 +14,8 @@ import ch.tutteli.atrium.domain.builders.kotlin_1_3.result * * @since 0.9.0 */ -fun > Expect.isSuccess(): Expect = ExpectImpl.result.isSuccess(this).getExpectOfFeature() +fun > Expect.isSuccess(): Expect = + _logic.isSuccess().getExpectOfFeature() /** * Expects that the subject of the assertion (a [Result]) is a Success and @@ -25,7 +27,7 @@ fun > Expect.isSuccess(): Expect = ExpectImpl.result.isSu * @since 0.9.0 */ fun > Expect.isSuccess(assertionCreator: Expect.() -> Unit): Expect = - ExpectImpl.result.isSuccess(this).addToInitial(assertionCreator) + _logic.isSuccess().addToInitial(assertionCreator) /** * Expects that the subject of the assertion (a [Result]) is a Failure and @@ -37,7 +39,7 @@ fun > Expect.isSuccess(assertionCreator: Expect.() -> Uni * @since 0.9.0 */ inline fun Expect>.isFailure(): Expect = - ExpectImpl.result.isFailure(this, TExpected::class).getExpectOfFeature() + _logic.isFailure(TExpected::class).getExpectOfFeature() /** * Expects that the subject of the assertion (a [Result]) is a Failure, @@ -51,4 +53,4 @@ inline fun Expect>.isFailure(): Ex */ inline fun Expect>.isFailure( noinline assertionCreator: Expect.() -> Unit -): Expect = ExpectImpl.result.isFailure(this, TExpected::class).addToFeature(assertionCreator) +): Expect = _logic.isFailure(TExpected::class).addToFeature(assertionCreator) diff --git a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-js/build.gradle b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-js/build.gradle index 17804b8bc..5fb44979c 100644 --- a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-js/build.gradle +++ b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-js/build.gradle @@ -2,7 +2,7 @@ description = 'Kotlin 1.3 specific assertion functions and builders for fluent-e dependencies { api prefixedProject('api-fluent-en_GB-js') - api prefixedProject('domain-builders-kotlin_1_3-js') + api prefixedProject('logic-kotlin_1_3-js') testImplementation prefixedProject('specs-js') } diff --git a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-jvm/build.gradle b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-jvm/build.gradle index f70e2ab4f..399e17518 100644 --- a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-jvm/build.gradle +++ b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-jvm/build.gradle @@ -10,7 +10,7 @@ ext.jacoco_additional = [ dependencies { api prefixedProject('api-fluent-en_GB-jvm') - api prefixedProject('domain-builders-kotlin_1_3-jvm') + api prefixedProject('logic-kotlin_1_3-jvm') testImplementation prefixedProject('specs-jvm') } diff --git a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-jvm/src/module/module-info.java b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-jvm/src/module/module-info.java index 8dd94c0e0..9de921311 100644 --- a/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-jvm/src/module/module-info.java +++ b/apis/fluent-en_GB/extensions/kotlin_1_3/atrium-api-fluent-en_GB-kotlin_1_3-jvm/src/module/module-info.java @@ -1,6 +1,6 @@ module ch.tutteli.atrium.api.fluent.en_GB.kotlin_1_3 { requires ch.tutteli.atrium.api.fluent.en_GB; - requires ch.tutteli.atrium.domain.builders.kotlin_1_3; + requires ch.tutteli.atrium.logic.kotlin_1_3; requires ch.tutteli.kbox; requires kotlin.stdlib; diff --git a/logic/atrium-logic-common/build.gradle b/logic/atrium-logic-common/build.gradle index 2fec2a0ab..1fe035924 100644 --- a/logic/atrium-logic-common/build.gradle +++ b/logic/atrium-logic-common/build.gradle @@ -5,6 +5,9 @@ dependencies { // it is up to the consumer which atrium-translations module is used at runtime compileOnly prefixedProject('translations-en_GB-common') + + testImplementation prefixedProject('api-fluent-en_GB-common') + testImplementation prefixedProject('specs-common') } diff --git a/logic/atrium-logic-js/build.gradle b/logic/atrium-logic-js/build.gradle index b87d5fd67..617cff120 100644 --- a/logic/atrium-logic-js/build.gradle +++ b/logic/atrium-logic-js/build.gradle @@ -5,4 +5,7 @@ dependencies { // it is up to the consumer which atrium-translations module is used at runtime compileOnly prefixedProject('translations-en_GB-js') + + testImplementation prefixedProject('api-fluent-en_GB-js') + testImplementation prefixedProject('specs-js') } diff --git a/logic/atrium-logic-jvm/src/module/module-info.java b/logic/atrium-logic-jvm/src/module/module-info.java new file mode 100644 index 000000000..7494aabc7 --- /dev/null +++ b/logic/atrium-logic-jvm/src/module/module-info.java @@ -0,0 +1,9 @@ +module ch.tutteli.atrium.logic { + requires ch.tutteli.atrium.domain.builders; + requires ch.tutteli.niok; + requires kotlin.stdlib; + + exports ch.tutteli.atrium.logic; + exports ch.tutteli.atrium.logic.impl to ch.tutteli.atrium.logic.kotlin_1_3; + exports ch.tutteli.atrium.logic.impl.creating.changers to ch.tutteli.atrium.logic.kotlin_1_3; +} diff --git a/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/build.gradle b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/build.gradle new file mode 100644 index 000000000..55e50bf91 --- /dev/null +++ b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/build.gradle @@ -0,0 +1,20 @@ +description = 'The domain logic of the Kotlin 1.3 extension for Atrium as common module.' + +dependencies { + implementation prefixedProject('logic-common') + + // it is up to the consumer which atrium-translations module is used at runtime + compileOnly prefixedProject('translations-en_GB-common') + + testImplementation prefixedProject('api-fluent-en_GB-common') + testImplementation prefixedProject('specs-common') +} + + +apply from: "$project.projectDir/../../../generateLogic.gradle" +def generateLogic = createGenerateLogicTask(project, "impls", "kotlin_1_3") +compileKotlinCommon.dependsOn(generateLogic) + +sourceSets { + main.kotlin.srcDirs += generatedFolder +} diff --git a/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/generated/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/impls.kt b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/generated/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/impls.kt new file mode 100644 index 000000000..62943b856 --- /dev/null +++ b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/generated/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/impls.kt @@ -0,0 +1,20 @@ +//--------------------------------------------------- +// Generated content, modify: +// logic/generateLogic.gradle +// if necessary - enjoy the day 🙂 +//--------------------------------------------------- + +@file:JvmMultifileClass +@file:JvmName("ImplsKt") +package ch.tutteli.atrium.logic.kotlin_1_3 + +import kotlin.jvm.JvmMultifileClass +import kotlin.jvm.JvmName + +import ch.tutteli.atrium.creating.AssertionContainer +import ch.tutteli.atrium.logic.kotlin_1_3.impl.DefaultResultAssertions + +@PublishedApi +internal inline val AssertionContainer._resultImpl + get() = getImpl(ResultAssertions::class) { DefaultResultAssertions() } + diff --git a/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/generated/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/result.kt b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/generated/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/result.kt new file mode 100644 index 000000000..27e8cd399 --- /dev/null +++ b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/generated/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/result.kt @@ -0,0 +1,16 @@ +//--------------------------------------------------- +// Generated content, modify: +// logic/generateLogic.gradle +// if necessary - enjoy the day 🙂 +//--------------------------------------------------- + +package ch.tutteli.atrium.logic.kotlin_1_3 + +import ch.tutteli.atrium.creating.AssertionContainer +import ch.tutteli.atrium.domain.creating.changers.ChangedSubjectPostStep +import ch.tutteli.atrium.domain.creating.changers.ExtractedFeaturePostStep +import kotlin.reflect.KClass + +fun > AssertionContainer.isSuccess(): ExtractedFeaturePostStep = _resultImpl.isSuccess(this) + +fun AssertionContainer>.isFailure(expectedType: KClass): ChangedSubjectPostStep = _resultImpl.isFailure(this, expectedType) diff --git a/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/ResultAssertions.kt b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/ResultAssertions.kt new file mode 100644 index 000000000..1aa04a4d3 --- /dev/null +++ b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/ResultAssertions.kt @@ -0,0 +1,15 @@ +package ch.tutteli.atrium.logic.kotlin_1_3 + +import ch.tutteli.atrium.creating.AssertionContainer +import ch.tutteli.atrium.domain.creating.changers.ChangedSubjectPostStep +import ch.tutteli.atrium.domain.creating.changers.ExtractedFeaturePostStep +import kotlin.reflect.KClass + +interface ResultAssertions { + fun > isSuccess(container: AssertionContainer): ExtractedFeaturePostStep + + fun isFailure( + container: AssertionContainer>, + expectedType: KClass + ): ChangedSubjectPostStep +} diff --git a/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/impl/DefaultResultAssertions.kt b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/impl/DefaultResultAssertions.kt new file mode 100644 index 000000000..4bb0b5510 --- /dev/null +++ b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-common/src/main/kotlin/ch/tutteli/atrium/logic/kotlin_1_3/impl/DefaultResultAssertions.kt @@ -0,0 +1,45 @@ +package ch.tutteli.atrium.logic.kotlin_1_3.impl + +import ch.tutteli.atrium.core.ExperimentalNewExpectTypes +import ch.tutteli.atrium.core.Option +import ch.tutteli.atrium.creating.AssertionContainer +import ch.tutteli.atrium.creating.FeatureExpect +import ch.tutteli.atrium.creating.FeatureExpectOptions +import ch.tutteli.atrium.domain.creating.changers.ChangedSubjectPostStep +import ch.tutteli.atrium.domain.creating.changers.ExtractedFeaturePostStep +import ch.tutteli.atrium.logic.changeSubject +import ch.tutteli.atrium.logic.extractFeature +import ch.tutteli.atrium.logic.impl.creating.changers.ThrowableThrownFailureHandler +import ch.tutteli.atrium.logic.kotlin_1_3.ResultAssertions +import ch.tutteli.atrium.logic.manualFeature +import ch.tutteli.atrium.logic.toAssertionContainer +import ch.tutteli.atrium.translations.DescriptionResultAssertion.* +import kotlin.reflect.KClass + +class DefaultResultAssertions : ResultAssertions { + override fun > isSuccess(container: AssertionContainer): ExtractedFeaturePostStep = + container.extractFeature + .withDescription(VALUE) + .withRepresentationForFailure(IS_NOT_SUCCESS) + .withFeatureExtraction { + Option.someIf(it.isSuccess) { it.getOrThrow() } + } + .withoutOptions() + .build() + + @Suppress("DEPRECATION" /* OptIn is only available since 1.3.70 which we cannot use if we want to support 1.2 */) + @UseExperimental(ExperimentalNewExpectTypes::class) + override fun isFailure( + container: AssertionContainer>, + expectedType: KClass + ): ChangedSubjectPostStep = + container.manualFeature(EXCEPTION) { exceptionOrNull() }.getExpectOfFeature().let { previousExpect -> + FeatureExpect( + previousExpect, + FeatureExpectOptions(representationInsteadOfFeature = { it ?: IS_NOT_FAILURE }) + ) + }.toAssertionContainer().changeSubject.reportBuilder() + .downCastTo(expectedType) + .withFailureHandler(ThrowableThrownFailureHandler()) + .build() +} diff --git a/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-js/build.gradle b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-js/build.gradle new file mode 100644 index 000000000..d36517632 --- /dev/null +++ b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-js/build.gradle @@ -0,0 +1,11 @@ +description = 'The domain logic of the Kotlin 1.3 extension for Atrium as JS module.' + +dependencies { + api prefixedProject('logic-js') + + // it is up to the consumer which atrium-translations module is used at runtime + compileOnly prefixedProject('translations-en_GB-js') + + testImplementation prefixedProject('api-fluent-en_GB-js') + testImplementation prefixedProject('specs-js') +} diff --git a/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-jvm/build.gradle b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-jvm/build.gradle new file mode 100644 index 000000000..00f659fe7 --- /dev/null +++ b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-jvm/build.gradle @@ -0,0 +1,11 @@ +description = 'The domain logic of the Kotlin 1.3 extension for Atrium as JVM module.' + +dependencies { + api prefixedProject('logic-jvm') + + // it is up to the consumer which atrium-translations module is used at runtime + compileOnly prefixedProject('translations-en_GB-jvm') + + testImplementation prefixedProject('api-fluent-en_GB-jvm') + testImplementation prefixedProject('specs-jvm') +} diff --git a/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-jvm/src/module/module-info.java b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-jvm/src/module/module-info.java new file mode 100644 index 000000000..8e964d246 --- /dev/null +++ b/logic/extensions/kotlin_1_3/atrium-logic-kotlin_1_3-jvm/src/module/module-info.java @@ -0,0 +1,6 @@ +module ch.tutteli.atrium.logic.kotlin_1_3 { + requires ch.tutteli.atrium.logic; + requires kotlin.stdlib; + + exports ch.tutteli.atrium.logic.kotlin_1_3; +} diff --git a/logic/generateLogic.gradle b/logic/generateLogic.gradle index 0c218e5be..e03f26073 100644 --- a/logic/generateLogic.gradle +++ b/logic/generateLogic.gradle @@ -18,8 +18,8 @@ static def getInterfaces(String path) { } } -def createGenerateLogicTask(Project project, String implsFileName) { - String packagePath = "ch/tutteli/atrium/logic" +def createGenerateLogicTask(Project project, String implsFileName, String suffix = '') { + String packagePath = "ch/tutteli/atrium/logic" + (suffix != '' ? "/" + suffix : '') String generatedFolder = project.generatedFolder return task('generateLogic', description: 'generates ext. methods for AssertionContainer based on interfaces') { @@ -49,11 +49,12 @@ def createGenerateLogicTask(Project project, String implsFileName) { """.stripIndent().replace("\n", ln) new File("$generatedPath/${implsFileName}.kt").withWriter('utf-8') { w -> + def packageSuffix = suffix != '' ? '.' + suffix : '' w << header w << """\ @file:JvmMultifileClass @file:JvmName("ImplsKt") - package ch.tutteli.atrium.logic + package ch.tutteli.atrium.logic$packageSuffix import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmName @@ -63,7 +64,7 @@ def createGenerateLogicTask(Project project, String implsFileName) { interfaces.forEach { def type = getType(it) - w << "import ch.tutteli.atrium.logic.impl.Default${type}Assertions$ln" + w << "import ch.tutteli.atrium.logic${packageSuffix}.impl.Default${type}Assertions$ln" } w << "$ln" diff --git a/settings.gradle b/settings.gradle index 6b16d4483..90b84533d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -60,6 +60,11 @@ include { } kotlinJvmJs('logic') + logic('logic-') { + extensions { + kotlinJvmJs('kotlin_1_3') + } + } translations('translations-') { kotlinJvmJs('de_CH')