Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adding KaseTestFactoryNodeBuilder #87

Merged
merged 1 commit into from
Jan 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ captures/
!/.idea/runConfigurations/
!/.idea/inspectionProfiles/
!.idea/detekt.xml
!.idea/ktlint.xml
!.idea/ktlint-plugin.xml

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
Expand Down
6 changes: 6 additions & 0 deletions .idea/ktlint-plugin.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 0 additions & 7 deletions .idea/ktlint.xml

This file was deleted.

5 changes: 2 additions & 3 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2023 Rick Busarow
* Copyright (C) 2024 Rick Busarow
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
Expand All @@ -17,7 +17,6 @@ import builds.GROUP
import com.rickbusarow.doks.DoksTask
import com.rickbusarow.kgx.mustRunAfter
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import kotlin.text.Regex.Companion.escapeReplacement

buildscript {

Expand All @@ -37,7 +36,7 @@ doks {

rule("maven-with-version") {
regex = maven(GROUP)
replacement = "$1:$2:${libs.versions.rickBusarow.kase.get() .escapeReplacement()}"
replacement = "$1:$2:${libs.versions.rickBusarow.kase.get().escapeReplacement()}"
}
rule("kgx-group") {
regex = "com\\.rickbusarow\\.kase"
Expand Down
2 changes: 2 additions & 0 deletions detekt/detekt-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,8 @@ potential-bugs:
- "kotlinx.coroutines.flow.*Flow"
- "java.util.stream.*Stream"
ignoreFunctionCall: []
excludes:
- "**/test/**"
ImplicitDefaultLocale:
active: true
ImplicitUnitReturnType:
Expand Down
2 changes: 2 additions & 0 deletions kase-gradle/api/kase-gradle.api
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,7 @@ public final class com/rickbusarow/kase/gradle/GradleTestEnvironmentFactory$Defa
public static fun getDslLanguage (Lcom/rickbusarow/kase/gradle/GradleTestEnvironmentFactory;)Lcom/rickbusarow/kase/gradle/DslLanguage;
public static fun getLocalM2Path (Lcom/rickbusarow/kase/gradle/GradleTestEnvironmentFactory;)Ljava/io/File;
public static fun newTestEnvironment (Lcom/rickbusarow/kase/gradle/GradleTestEnvironmentFactory;Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/gradle/GradleTestEnvironment;
public static fun newTestEnvironment (Lcom/rickbusarow/kase/gradle/GradleTestEnvironmentFactory;Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/gradle/GradleTestEnvironment;
public static fun settingsFileDefault (Lcom/rickbusarow/kase/gradle/GradleTestEnvironmentFactory;Lcom/rickbusarow/kase/Kase;)Lcom/rickbusarow/kase/gradle/DslStringFactory;
}

Expand Down Expand Up @@ -599,6 +600,7 @@ public final class com/rickbusarow/kase/gradle/KaseGradleTest$DefaultImpls {
public static fun getLocalM2Path (Lcom/rickbusarow/kase/gradle/KaseGradleTest;)Ljava/io/File;
public static fun getVersionMatrix (Lcom/rickbusarow/kase/gradle/KaseGradleTest;)Lcom/rickbusarow/kase/KaseMatrix;
public static fun newTestEnvironment (Lcom/rickbusarow/kase/gradle/KaseGradleTest;Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/gradle/GradleTestEnvironment;
public static fun newTestEnvironment (Lcom/rickbusarow/kase/gradle/KaseGradleTest;Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/gradle/GradleTestEnvironment;
public static fun settingsFileDefault (Lcom/rickbusarow/kase/gradle/KaseGradleTest;Lcom/rickbusarow/kase/Kase;)Lcom/rickbusarow/kase/gradle/DslStringFactory;
public static fun test (Lcom/rickbusarow/kase/gradle/KaseGradleTest;Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;Lkotlin/jvm/functions/Function2;)V
public static fun testFactory (Lcom/rickbusarow/kase/gradle/KaseGradleTest;Ljava/lang/Iterable;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
Expand Down
71 changes: 51 additions & 20 deletions kase/api/kase.api
Original file line number Diff line number Diff line change
Expand Up @@ -2096,23 +2096,53 @@ public final class com/rickbusarow/kase/KaseTestFactory$DefaultImpls {
public static fun asTests (Lcom/rickbusarow/kase/KaseTestFactory;Ljava/lang/Iterable;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
public static fun asTests (Lcom/rickbusarow/kase/KaseTestFactory;Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
public static fun newTestEnvironment (Lcom/rickbusarow/kase/KaseTestFactory;Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public static fun newTestEnvironment (Lcom/rickbusarow/kase/KaseTestFactory;Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public static fun test (Lcom/rickbusarow/kase/KaseTestFactory;Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;Lkotlin/jvm/functions/Function2;)V
public static synthetic fun test$default (Lcom/rickbusarow/kase/KaseTestFactory;Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V
public static fun testFactory (Lcom/rickbusarow/kase/KaseTestFactory;Ljava/lang/Iterable;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
public static fun testFactory (Lcom/rickbusarow/kase/KaseTestFactory;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
public static fun testFactory (Lcom/rickbusarow/kase/KaseTestFactory;[Lcom/rickbusarow/kase/Kase;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
}

public final class com/rickbusarow/kase/KaseTestFactoryNodeBuilder : com/rickbusarow/kase/KaseTestFactory, com/rickbusarow/kase/TestNodeBuilder {
public fun <init> (Lcom/rickbusarow/kase/KaseTestFactory;Lcom/rickbusarow/kase/TestNodeBuilder;)V
public fun asContainers (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public fun asContainers (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Ljava/util/stream/Stream;
public fun asContainers (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public fun asContainers (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Ljava/util/stream/Stream;
public fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/rickbusarow/kase/TestNodeBuilder;
public fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public final fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
public fun asTests (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/rickbusarow/kase/TestNodeBuilder;
public fun asTests (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
public fun build ()Lorg/junit/jupiter/api/DynamicNode;
public fun container (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public fun getDisplayName ()Ljava/lang/String;
public fun getKases ()Ljava/util/List;
public fun getParent ()Lcom/rickbusarow/kase/TestNodeBuilder;
public fun getTestFunctionCoordinates ()Lcom/rickbusarow/kase/files/TestFunctionCoordinates;
public fun newTestEnvironment (Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public fun newTestEnvironment (Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public fun nodeSequence ()Lkotlin/sequences/Sequence;
public fun test (Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;Lkotlin/jvm/functions/Function2;)V
public fun test (Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
public fun testFactory (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
public fun testFactory (Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
public fun testFactory ([Lcom/rickbusarow/kase/Kase;Lkotlin/jvm/functions/Function3;)Ljava/util/stream/Stream;
}

public abstract interface class com/rickbusarow/kase/TestEnvironment : com/rickbusarow/kase/files/HasWorkingDir {
public static final field Companion Lcom/rickbusarow/kase/TestEnvironment$Companion;
public abstract fun tearDown ()V
}

public final class com/rickbusarow/kase/TestEnvironment$Companion {
public final fun invoke (Ljava/lang/String;[Ljava/lang/String;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public final fun invoke (Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public final fun invoke ([Ljava/lang/String;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public static synthetic fun invoke$default (Lcom/rickbusarow/kase/TestEnvironment$Companion;Ljava/lang/String;[Ljava/lang/String;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestEnvironment;
public static synthetic fun invoke$default (Lcom/rickbusarow/kase/TestEnvironment$Companion;Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestEnvironment;
public static synthetic fun invoke$default (Lcom/rickbusarow/kase/TestEnvironment$Companion;[Ljava/lang/String;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestEnvironment;
}

public final class com/rickbusarow/kase/TestEnvironment$DefaultImpls {
Expand All @@ -2122,40 +2152,41 @@ public final class com/rickbusarow/kase/TestEnvironment$DefaultImpls {

public abstract interface class com/rickbusarow/kase/TestEnvironmentFactory {
public abstract fun newTestEnvironment (Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public abstract fun newTestEnvironment (Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
}

public final class com/rickbusarow/kase/TestEnvironmentFactory$DefaultImpls {
public static fun newTestEnvironment (Lcom/rickbusarow/kase/TestEnvironmentFactory;Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public static fun newTestEnvironment (Lcom/rickbusarow/kase/TestEnvironmentFactory;Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;)Lcom/rickbusarow/kase/TestEnvironment;
public static synthetic fun newTestEnvironment$default (Lcom/rickbusarow/kase/TestEnvironmentFactory;Lcom/rickbusarow/kase/Kase;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestEnvironment;
public static synthetic fun newTestEnvironment$default (Lcom/rickbusarow/kase/TestEnvironmentFactory;Ljava/util/List;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestEnvironment;
}

public final class com/rickbusarow/kase/TestEnvironmentFactoryKt {
public static final fun test (Lcom/rickbusarow/kase/TestEnvironmentFactory;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;Lkotlin/jvm/functions/Function2;)V
public static synthetic fun test$default (Lcom/rickbusarow/kase/TestEnvironmentFactory;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V
}

public final class com/rickbusarow/kase/TestNodeBuilder {
public fun <init> (Ljava/lang/String;Lcom/rickbusarow/kase/files/TestFunctionCoordinates;Lcom/rickbusarow/kase/TestNodeBuilder;)V
public final fun asContainers (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public final fun asContainers (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public abstract interface class com/rickbusarow/kase/TestNodeBuilder : com/rickbusarow/kase/HasDisplayName {
public abstract fun asContainers (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public abstract fun asContainers (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public abstract fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/rickbusarow/kase/TestNodeBuilder;
public abstract fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public abstract fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public abstract fun asTests (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/rickbusarow/kase/TestNodeBuilder;
public abstract fun build ()Lorg/junit/jupiter/api/DynamicNode;
public abstract fun container (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public abstract fun getParent ()Lcom/rickbusarow/kase/TestNodeBuilder;
public abstract fun getTestFunctionCoordinates ()Lcom/rickbusarow/kase/files/TestFunctionCoordinates;
public abstract fun nodeSequence ()Lkotlin/sequences/Sequence;
public abstract fun test (Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
}

public final class com/rickbusarow/kase/TestNodeBuilder$DefaultImpls {
public static synthetic fun asContainers$default (Lcom/rickbusarow/kase/TestNodeBuilder;Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestNodeBuilder;
public static synthetic fun asContainers$default (Lcom/rickbusarow/kase/TestNodeBuilder;Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestNodeBuilder;
public final fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/rickbusarow/kase/TestNodeBuilder;
public final fun asTests (Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;)Lcom/rickbusarow/kase/TestNodeBuilder;
public final fun asTests (Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lcom/rickbusarow/kase/TestNodeBuilder;
public static synthetic fun asTests$default (Lcom/rickbusarow/kase/TestNodeBuilder;Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestNodeBuilder;
public static synthetic fun asTests$default (Lcom/rickbusarow/kase/TestNodeBuilder;Ljava/lang/Iterable;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestNodeBuilder;
public static synthetic fun asTests$default (Lcom/rickbusarow/kase/TestNodeBuilder;Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/rickbusarow/kase/TestNodeBuilder;
public final fun container (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)V
public fun equals (Ljava/lang/Object;)Z
public final fun getName ()Ljava/lang/String;
public final fun getNodes ()Ljava/util/List;
public final fun getParent ()Lcom/rickbusarow/kase/TestNodeBuilder;
public final fun getTestFunctionCoordinates ()Lcom/rickbusarow/kase/files/TestFunctionCoordinates;
public fun hashCode ()I
public final fun nodeSequence ()Lkotlin/sequences/Sequence;
public final fun test (Ljava/lang/String;Lkotlin/jvm/functions/Function0;)V
public fun toString ()Ljava/lang/String;
}

public final class com/rickbusarow/kase/TestNodeBuilderKt {
Expand Down
34 changes: 24 additions & 10 deletions kase/src/main/kotlin/com/rickbusarow/kase/KaseTestFactory.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2023 Rick Busarow
* Copyright (C) 2024 Rick Busarow
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
Expand All @@ -16,10 +16,12 @@
package com.rickbusarow.kase

import com.rickbusarow.kase.files.TestFunctionCoordinates
import com.rickbusarow.kase.internal.DefaultTestNodeBuilder
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.DynamicNode
import org.junit.jupiter.api.DynamicTest
import java.util.stream.Stream
import kotlin.streams.asStream

/**
* Common interface for creating dynamic tests with predefined
Expand Down Expand Up @@ -137,9 +139,9 @@ public interface KaseTestFactory<T : TestEnvironment, K : Kase> :
* @return a stream of dynamic nodes representing the containers.
* @since 0.1.0
*/
public fun <K : Kase> Iterable<K>.asContainers(
testName: (K) -> String = { it.displayName },
testAction: TestNodeBuilder.(K) -> Unit
public fun <K2 : Kase> Iterable<K2>.asContainers(
testName: (K2) -> String = { it.displayName },
testAction: KaseTestFactoryNodeBuilder<T, K>.(K2) -> Unit
): Stream<out DynamicNode> = asSequence().asContainers(testName, testAction)

/**
Expand All @@ -152,10 +154,22 @@ public interface KaseTestFactory<T : TestEnvironment, K : Kase> :
* @return a stream of dynamic nodes representing the containers.
* @since 0.1.0
*/
public fun <K : Kase> Sequence<K>.asContainers(
testName: (K) -> String = { it.displayName },
testAction: TestNodeBuilder.(K) -> Unit
): Stream<out DynamicNode> = com.rickbusarow.kase.testFactory {
asContainers(testName, testAction)
}
public fun <K2 : Kase> Sequence<K2>.asContainers(
testName: (K2) -> String = { it.displayName },
testAction: KaseTestFactoryNodeBuilder<T, K>.(K2) -> Unit
): Stream<out DynamicNode> = KaseTestFactoryNodeBuilder<T, K>(
delegateFactory = this@KaseTestFactory,
delegateNodeBuilder = DefaultTestNodeBuilder(
displayName = "root",
testFunctionCoordinates = TestFunctionCoordinates.get(),
parent = null
)
)
.also {
for (k in this@asContainers) {
it.wrapContainer(testName(k)) { testAction(k) }
}
}
.nodeSequence()
.asStream()
}
Loading