diff --git a/README.md b/README.md index 19dc5a38..aab59533 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Kover is a set of solutions for collecting test coverage of Kotlin code compiled Kover Toolset: - [Kover Gradle Plugin](#kover-gradle-plugin) +- [Kover Maven Plugin](#kover-maven-plugin) - [Kover CLI](#kover-cli) - [Kover offline instrumentation](#kover-offline-instrumentation) - [Kover JVM agent](#kover-jvm-agent) @@ -119,6 +120,21 @@ It is in its infancy, it is recommended to use it only for test or pet projects. Refer to the [documentation](https://kotlin.github.io/kotlinx-kover/gradle-plugin/aggregated.html) for details. +## Kover Maven Plugin +The Kover Maven Plugin can be applied by specifying build plugin +```xml + + org.jetbrains.kotlinx + kover-maven-plugin + 0.8.2 + +``` + +The list of Kover goals is specified in [this document section](https://kotlin.github.io/kotlinx-kover/maven-plugin#goals). + +For full information about latest stable release of Kover Gradle Plugin, please refer to the [documentation](https://kotlin.github.io/kotlinx-kover/maven-plugin). + + ## Kover CLI Standalone JVM application used for offline instrumentation and generation of human-readable reports. diff --git a/build-logic/src/main/kotlin/kotlinx/kover/conventions/kover-docs-conventions.gradle.kts b/build-logic/src/main/kotlin/kotlinx/kover/conventions/kover-docs-conventions.gradle.kts index ad76b68e..10bf3cf2 100644 --- a/build-logic/src/main/kotlin/kotlinx/kover/conventions/kover-docs-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/kotlinx/kover/conventions/kover-docs-conventions.gradle.kts @@ -26,7 +26,7 @@ extension.callDokkaHtml.convention(false) tasks.register("releaseDocs") { dependsOn( - tasks.matching { extension.callDokkaHtml.get() && it.name == "dokkaHtml" } + tasks.named { it == "dokkaHtml" }.matching { extension.callDokkaHtml.get() } ) doLast { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e300a786..3df2461c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,11 +1,16 @@ [versions] -intellij-coverage = "1.0.760" +intellij-coverage = "1.0.761" junit = "5.9.0" kotlinx-bcv = "0.13.2" kotlinx-dokka = "1.8.10" args4j = "2.33" gradle-plugin-publish = "1.2.1" +maven-plugin-development = "0.4.3" +maven-embedder = "3.9.8" +maven-api = "3.0" +maven-resolver = "1.9.21" +maven-slf4j = "1.7.36" [libraries] @@ -20,9 +25,26 @@ junit-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref args4j = { module = "args4j:args4j", version.ref = "args4j" } -gradlePlugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin" } +gradlePlugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin" } + +maven-embedder = { module = "org.apache.maven:maven-embedder", version.ref = "maven-embedder" } +maven-compat = { module = "org.apache.maven:maven-compat", version.ref = "maven-embedder" } +maven-slf4j-provider = { module = "org.apache.maven:maven-slf4j-provider", version.ref = "maven-embedder" } + +maven-plugin-annotations = { module = "org.apache.maven.plugin-tools:maven-plugin-annotations", version.ref = "maven-api" } +maven-core = { module = "org.apache.maven:maven-core", version.ref = "maven-api" } +maven-reporting-api = { module = "org.apache.maven.reporting:maven-reporting-api", version.ref = "maven-api" } + +maven-resolver-basic = { module = "org.apache.maven.resolver:maven-resolver-connector-basic", version.ref = "maven-resolver" } +maven-resolver-file = { module = "org.apache.maven.resolver:maven-resolver-transport-file", version.ref = "maven-resolver" } +maven-resolver-http = { module = "org.apache.maven.resolver:maven-resolver-transport-http", version.ref = "maven-resolver" } + +maven-slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "maven-slf4j" } + [plugins] -gradle-pluginPublish = { id = "com.gradle.plugin-publish", version.ref = "gradle-plugin-publish" } +gradle-pluginPublish = { id = "com.gradle.plugin-publish", version.ref = "gradle-plugin-publish" } kotlinx-binaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinx-bcv" } kotlinx-dokka = { id = "org.jetbrains.dokka", version.ref = "kotlinx-dokka" } +mavenPluginDevelopment = { id = "de.benediktritter.maven-plugin-development", version.ref = "maven-plugin-development" } + diff --git a/kover-cli/build.gradle.kts b/kover-cli/build.gradle.kts index 9979effb..ea7688f3 100644 --- a/kover-cli/build.gradle.kts +++ b/kover-cli/build.gradle.kts @@ -24,7 +24,7 @@ plugins { id("kover-release-conventions") } -extensions.configure { +koverPublication { description.set("Command Line Interface for Kotlin Coverage Toolchain") } @@ -65,7 +65,7 @@ repositories { mavenCentral() } -extensions.configure { +koverDocs { docsDirectory.set("cli") description.set("Kover Command Line Interface") } diff --git a/kover-features-jvm/api/kover-features-jvm.api b/kover-features-jvm/api/kover-features-jvm.api index bc735c6c..062886be 100644 --- a/kover-features-jvm/api/kover-features-jvm.api +++ b/kover-features-jvm/api/kover-features-jvm.api @@ -106,6 +106,7 @@ public final class kotlinx/kover/features/jvm/KoverLegacyFeatures { public final fun generateXmlReport (Ljava/io/File;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/lang/String;Lkotlinx/kover/features/jvm/ClassFilters;)V public final fun instrument (Ljava/io/File;Ljava/util/List;Lkotlinx/kover/features/jvm/ClassFilters;Z)V public final fun verify (Ljava/util/List;Ljava/io/File;Lkotlinx/kover/features/jvm/ClassFilters;Ljava/util/List;Ljava/util/List;)Ljava/util/List; + public final fun violationMessage (Ljava/util/List;)Ljava/lang/String; } public abstract interface class kotlinx/kover/features/jvm/OfflineInstrumenter { diff --git a/kover-features-jvm/build.gradle.kts b/kover-features-jvm/build.gradle.kts index 4f320a90..1f9a3817 100644 --- a/kover-features-jvm/build.gradle.kts +++ b/kover-features-jvm/build.gradle.kts @@ -25,7 +25,7 @@ plugins { id("kover-release-conventions") } -extensions.configure { +koverPublication { description.set("Implementation of calling the main features of Kover programmatically") } diff --git a/kover-features-jvm/src/main/java/kotlinx/kover/features/jvm/KoverLegacyFeatures.kt b/kover-features-jvm/src/main/java/kotlinx/kover/features/jvm/KoverLegacyFeatures.kt index 7b22402e..f5731ff5 100644 --- a/kover-features-jvm/src/main/java/kotlinx/kover/features/jvm/KoverLegacyFeatures.kt +++ b/kover-features-jvm/src/main/java/kotlinx/kover/features/jvm/KoverLegacyFeatures.kt @@ -183,6 +183,30 @@ public object KoverLegacyFeatures { return result } + + public fun violationMessage(violations: List): String { + if (violations.isEmpty()) { + return "" + } + val messageBuilder = StringBuilder() + + violations.forEach { rule -> + val namedRule = if (rule.rule.name.isNotEmpty()) "Rule '${rule.rule.name}'" else "Rule" + + if (rule.violations.size == 1) { + messageBuilder.appendLine("$namedRule violated: ${rule.violations[0].format(rule)}") + } else { + messageBuilder.appendLine("$namedRule violated:") + + rule.violations.forEach { bound -> + messageBuilder.append(" ") + messageBuilder.appendLine(bound.format(rule)) + } + } + } + + return messageBuilder.toString() + } } /** @@ -251,3 +275,30 @@ public data class ClassFilters( */ public val excludeInheritedFrom: Set ) + +private fun BoundViolation.format(rule: RuleViolations): String { + val directionText = if (isMax) "maximum" else "minimum" + + val metricText = when (bound.coverageUnits) { + CoverageUnit.LINE -> "lines" + CoverageUnit.INSTRUCTION -> "instructions" + CoverageUnit.BRANCH -> "branches" + } + + val valueTypeText = when (bound.aggregationForGroup) { + AggregationType.COVERED_COUNT -> "covered count" + AggregationType.MISSED_COUNT -> "missed count" + AggregationType.COVERED_PERCENTAGE -> "covered percentage" + AggregationType.MISSED_PERCENTAGE -> "missed percentage" + } + + val entityText = when (rule.rule.groupBy) { + GroupingBy.APPLICATION -> "" + GroupingBy.CLASS -> " for class '$entityName'" + GroupingBy.PACKAGE -> " for package '$entityName'" + } + + val expectedValue = if (isMax) bound.maxValue else bound.minValue + + return "$metricText $valueTypeText$entityText is $value, but expected $directionText is $expectedValue" +} diff --git a/kover-gradle-plugin/build.gradle.kts b/kover-gradle-plugin/build.gradle.kts index 68d9433a..d5bd0b3e 100644 --- a/kover-gradle-plugin/build.gradle.kts +++ b/kover-gradle-plugin/build.gradle.kts @@ -189,13 +189,13 @@ tasks.dokkaHtml { } } -extensions.configure { +koverDocs { docsDirectory.set("gradle-plugin") description.set("Kover Gradle Plugin") callDokkaHtml.set(true) } -extensions.configure { +koverPublication { description.set("Kover Gradle Plugin - Kotlin code coverage") //`java-gradle-plugin` plugin already creates publication with name `pluginMaven` addPublication.set(false) diff --git a/kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/tasks/reports/KoverDoVerifyTask.kt b/kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/tasks/reports/KoverDoVerifyTask.kt index 859be5de..627ffc65 100644 --- a/kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/tasks/reports/KoverDoVerifyTask.kt +++ b/kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/tasks/reports/KoverDoVerifyTask.kt @@ -4,8 +4,8 @@ package kotlinx.kover.gradle.plugin.tasks.reports +import kotlinx.kover.features.jvm.KoverLegacyFeatures import kotlinx.kover.gradle.plugin.commons.VerificationRule -import kotlinx.kover.gradle.plugin.tools.generateErrorMessage import org.gradle.api.file.RegularFileProperty import org.gradle.api.provider.ListProperty import org.gradle.api.tasks.* @@ -24,7 +24,7 @@ internal abstract class KoverDoVerifyTask @Inject constructor(@get:Internal over val enabledRules = rules.get().filter { it.isEnabled } val violations = tool.get().verify(enabledRules, context()) - val errorMessage = generateErrorMessage(violations) + val errorMessage = KoverLegacyFeatures.violationMessage(violations) resultFile.get().asFile.writeText(errorMessage) } diff --git a/kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/tools/Verification.kt b/kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/tools/Verification.kt index 226af0c7..9d1186f7 100644 --- a/kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/tools/Verification.kt +++ b/kover-gradle-plugin/src/main/kotlin/kotlinx/kover/gradle/plugin/tools/Verification.kt @@ -41,57 +41,3 @@ internal data class CoverageRequest( val header: String?, val lineFormat: String, ): Serializable - -internal fun generateErrorMessage(violations: List): String { - if (violations.isEmpty()) { - return "" - } - val messageBuilder = StringBuilder() - - violations.forEach { rule -> - val namedRule = if (rule.rule.name.isNotEmpty()) "Rule '${rule.rule.name}'" else "Rule" - - if (rule.violations.size == 1) { - messageBuilder.appendLine("$namedRule violated: ${rule.violations[0].format(rule)}") - } else { - messageBuilder.appendLine("$namedRule violated:") - - rule.violations.forEach { bound -> - messageBuilder.append(" ") - messageBuilder.appendLine(bound.format(rule)) - } - } - } - - return messageBuilder.toString() -} - -private fun BoundViolation.format(rule: RuleViolations): String { - val directionText = if (isMax) "maximum" else "minimum" - - val metricText = when (bound.coverageUnits) { - FeatureCoverageUnit.LINE -> "lines" - FeatureCoverageUnit.INSTRUCTION -> "instructions" - FeatureCoverageUnit.BRANCH -> "branches" - } - - val valueTypeText = when (bound.aggregationForGroup) { - FeatureAggregationType.COVERED_COUNT -> "covered count" - FeatureAggregationType.MISSED_COUNT -> "missed count" - FeatureAggregationType.COVERED_PERCENTAGE -> "covered percentage" - FeatureAggregationType.MISSED_PERCENTAGE -> "missed percentage" - } - - val entityText = when (rule.rule.groupBy) { - GroupingBy.APPLICATION -> "" - GroupingBy.CLASS -> " for class '$entityName'" - GroupingBy.PACKAGE -> " for package '$entityName'" - } - - val expectedValue = if (isMax) bound.maxValue else bound.minValue - - return "$metricText $valueTypeText$entityText is $value, but expected $directionText is $expectedValue" -} - -private typealias FeatureCoverageUnit = kotlinx.kover.features.jvm.CoverageUnit -private typealias FeatureAggregationType = kotlinx.kover.features.jvm.AggregationType \ No newline at end of file diff --git a/kover-jvm-agent/build.gradle.kts b/kover-jvm-agent/build.gradle.kts index 4ea34375..bc7de345 100644 --- a/kover-jvm-agent/build.gradle.kts +++ b/kover-jvm-agent/build.gradle.kts @@ -22,11 +22,11 @@ plugins { id("kover-release-conventions") } -extensions.configure { +koverPublication { description.set("Kover JVM instrumentation agent") } -extensions.configure { +koverDocs { docsDirectory.set("jvm-agent") description.set("Kover JVM instrumentation agent") } diff --git a/kover-maven-plugin/build.gradle.kts b/kover-maven-plugin/build.gradle.kts new file mode 100644 index 00000000..eaca601d --- /dev/null +++ b/kover-maven-plugin/build.gradle.kts @@ -0,0 +1,101 @@ +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation + +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +plugins { + kotlin("jvm") + id("kover-publishing-conventions") + id("kover-docs-conventions") + id("kover-release-conventions") + + alias(libs.plugins.mavenPluginDevelopment) +} + + +repositories { + mavenCentral() +} + +sourceSets { + create("functionalTest") +} + +// name of configuration for functionalTest source set with implementation dependencies +val functionalTestImplementation = "functionalTestImplementation" + + +dependencies { + implementation(project(":kover-features-jvm")) + implementation(project(":kover-jvm-agent")) + + snapshotRelease(project(":kover-features-jvm")) + snapshotRelease(project(":kover-jvm-agent")) + + compileOnly(libs.maven.plugin.annotations) + compileOnly(libs.maven.core) + implementation(libs.maven.reporting.api) + + functionalTestImplementation(libs.maven.embedder) + functionalTestImplementation(libs.maven.compat) + + + functionalTestImplementation(libs.maven.resolver.basic) + functionalTestImplementation(libs.maven.resolver.file) + functionalTestImplementation(libs.maven.resolver.http) + functionalTestImplementation(libs.maven.slf4j.api) + functionalTestImplementation(libs.maven.slf4j.provider) + + + functionalTestImplementation(kotlin("test")) + functionalTestImplementation(libs.junit.jupiter) + functionalTestImplementation(libs.junit.params) +} + +mavenPlugin { + goalPrefix = "kover" +} + +kotlin { + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(8)) + } +} + +val functionalTest by tasks.registering(Test::class) { + group = LifecycleBasePlugin.VERIFICATION_GROUP + testClassesDirs = sourceSets["functionalTest"].output.classesDirs + classpath = sourceSets["functionalTest"].runtimeClasspath + + // use JUnit 5 + useJUnitPlatform() + + dependsOn(tasks.collectRepository) + + val localRepository = layout.buildDirectory.dir("maven-collected") + doFirst { + systemProperties["kotlinVersion"] = embeddedKotlinVersion + systemProperties["koverVersion"] = version + + val dir = localRepository.get().asFile + dir.deleteRecursively() + dir.mkdirs() + + tasks.collectRepository.get().repositories.forEach { repository -> + repository.copyRecursively(dir) + } + + systemProperties["snapshotRepository"] = dir.absolutePath + } +} + +tasks.check { + dependsOn(functionalTest) +} + +koverDocs { + docsDirectory.set("maven-plugin") + description.set("Kover Maven Plugin") + callDokkaHtml.set(false) +} diff --git a/kover-maven-plugin/docs/index.md b/kover-maven-plugin/docs/index.md new file mode 100644 index 00000000..7a61f4d3 --- /dev/null +++ b/kover-maven-plugin/docs/index.md @@ -0,0 +1,376 @@ +# Kover Maven Plugin + +Maven plugin to measure test coverage and generate human-readable reports with coverage values. + +## Table of contents + * [Requirements](#requirements) + * [Current limitations](#current-limitations) + * [Quickstart](#quickstart) + * [Maven Goals](#goals) + * [Multi-module projects](#multi-module-projects) + * [Configuration](#configuration) + * [Coverage values](#coverage-values) + * [Examples](#examples) + +## Requirements +- Maven 3.0 or higher +- Java 1.8 or higher for Maven runtime + +## Current limitations +- only instrumentation of tests in `test` goal is supported; `it-tests` tests are not supported yet +- if several Kover JVM agents are specified when running the tests, then only the first one will work. This situation may happen when the plugin is used during `site` lifecycle (see in examples below), so use such a setup with caution. +- simultaneous use of several instrumentation agents can lead to unpredictable consequences and unstable operation + +## Quickstart +To use Kover coverage measurement it is necessary to add plugin `org.jetbrains.kotlinx:kover-maven-plugin:0.8.2` to build configuration in `pom.xml` and create executions for used goals. + +With the following configuration HTML and XML reports will be generated, and verification rules will be checked on `verify` phase: +```xml + + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + 0.8.2 + + + + instr + + instrumentation + + + + + + kover-xml + + report-xml + + + + + + kover-html + + report-html + + + + + + kover-verify + + verify + + + + + + +``` + +## Goals +Kover Maven Plugin provides the following goals: + - `instrumentation` - activate the measurement of the coverage in tests + - `report-xml` - generate XML coverage report in JaCoCo format + - `report-html` - generate HTML coverage report + - `report-ic` - generate binary coverage report in intellij coverage agent format + - `verify` - check specified coverage rules + - `log` - print coverage values to the Maven log + +## Multi-module projects +If the project consists of several modules, then the source classes and tests can be distributed across several modules. + +In this case, it becomes necessary to generate reports for several modules at once. + +In order to activate the creation of reports on several projects, you need to add this configuration flag: +`true` into the Kover Plugin `configuration` block. + +Then, the classes in the report will be collected for all modules specified in the `dependencies` block, except for those for which the scope is `test`. +And the coverage will be collected from tests located in modules that are also in the `dependencies` block, including dependencies with the `test` scope. + +See the full [example project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/merged-report). + +## Configuration + +All available configuration options are shown below: +```xml + + + org.jetbrains.kotlinx + kover-maven-plugin + 0.8.2 + + + + instr + + instrumentation + + + + + + kover-xml + + report-xml + + + + + + kover-html + + report-html + + + + + + kover-verify + + verify + + + + + + kover-ic + + report-ic + + + + + + kover-log + + log + + + + + + + + + false + + + + + + com.example.*,excluded.from.instrumentation.* + + + + argLine + + + + + + + + + + + + + com.example.*.ExcludedByName,com.example.*.serializables.*$Companion + + + + + *.Generated + + + + + + + + + + + + java.lang.AutoCloseable + + + + + test-utils + + + + + + + + + + + + + + true + + + + + ${project.basedir}/external/report.ic + + + + + html + + + + + My title + + + + UTF-8 + + + + ${project.build.directory}/custom.ic + + + + ${project.build.directory}/custom.xml + + + + + APPLICATION + + + + + BRANCH + + + + + + + MISSED_COUNT + + + + + + + + Full coverage is {value}% + + + + true + + + + + + + + + package covered lines + + + + + PACKAGE + + + + + + + + + + + + + + + + + + MISSED_COUNT + + + + + + LINE + + + + + 90 + + + + + 10 + + + + + + +``` + +### Coverage values +During verification, the entire code is divided into units for which Kover determines whether it was covered (executed) or skipped (not executed). +For example, an entire line from source code or a specific JVM instruction from compiled byte-code can be executed or not. + +All units are grouped into one or more groups. +Based on amount of the executed and non-executed code units, one number (coverage value) will be calculated for each group using the aggregation function. + +Type `CoverageUnit` determines for which types of units the coverage will be measured. +It can be: +- `LINE`. This is a default value. +- `INSTRUCTION`. +- `BRANCH`. + +For comparison with the specified boundaries, the number of covered (executed) or skipped (not executed) units should be aggregated into one number. +`AggregationType` determines exactly how the current measurement value will be calculated: +- `COVERED_COUNT` - the total number of units of code that were executed. +- `MISSED_COUNT` - the total number of units of code that were not executed. +- `COVERED_PERCENTAGE` - is the number of covered units divided by the number of all units and multiplied by 100. This is a default value. +- `MISSED_PERCENTAGE` - is the number of uncovered units divided by the number of all units and multiplied by 100. + +To calculate the coverage value, units are grouped by various entities. +By default, all application units of code are grouped by a single application entity, so one coverage value is calculated for the entire application using the aggregating function. + +But you can group code units by other named entities. +The `GroupingEntityType` type is used for this: +- `APPLICATION` - one current coverage value for the entire application will be calculated. This is a default value. +- `CLASS` - the coverage value will be calculated individually for each class. So the bounds will be checked for each class. +- `PACKAGE` - the coverage value will be calculated individually for all classes in each package. So the bounds will be checked for each package. + +## Examples +- Enable all Kover goals in Kotlin project: [directory](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/all-goals) +- Specifying common filters for all reports and verification rules: [directory](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/filters-common) +- Override filters in verification rules: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/filters-rules) +- Use externally generated binary IC report to merge coverage: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/additional-binary-report) +- Override standard parameter of surefire plugin to pass arguments to JVM: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/change-agent-line) +- Change paths to the XML, HTML and IC reports: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/change-paths) +- Create merged (aggregated) report: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/merged-report) +- Using Kover Maven Plugin in `site` lifecycle (`reporting` block) [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/site) +- Skip Kover goals by configuration: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/skip-config) +- Adding coverage verification rules: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/verify-error) +- Print warning instead of verification error: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/verify-warn) +- Configure coverage logging: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/logs) +- Exclude class from instrumentation: [project](https://github.com/Kotlin/kotlinx-kover/tree/main/kover-maven-plugin/examples/exclude-instrumentation) diff --git a/kover-maven-plugin/examples/additional-binary-report/additional.ic b/kover-maven-plugin/examples/additional-binary-report/additional.ic new file mode 100644 index 00000000..e4b962af --- /dev/null +++ b/kover-maven-plugin/examples/additional-binary-report/additional.ic @@ -0,0 +1,125 @@ +%kotlin.annotation.AnnotationRetention/org.junit.platform.engine.reporting.ReportEntry:org.junit.jupiter.engine.descriptor.MethodExtensionContextXorg.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService-org.junit.jupiter.api.extension.TestInstancesIorg.junit.jupiter.engine.execution.ExtensionValuesStore$MemoizingSupplierForg.junit.jupiter.engine.execution.JupiterEngineExecutionContext$State0org.junit.platform.launcher.core.LauncherFactory,org.apache.maven.surefire.report.RunListener'org.apache.maven.surefire.util.RunOrderGorg.junit.platform.engine.support.discovery.SelectorResolver$Match$Type1org.apache.maven.surefire.util.RunOrderCalculator-org.apache.maven.surefire.testset.TestRequesthorg.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall0org.junit.platform.launcher.core.DefaultLauncher3org.junit.platform.engine.EngineDiscoveryListener$14org.junit.jupiter.engine.extension.DisabledCondition/org.junit.platform.commons.function.Try$Success:org.junit.platform.launcher.listeners.LegacyReportingUtilsDorg.junit.platform.engine.support.discovery.SelectorResolver$Context>org.apache.maven.surefire.booter.CommandReader$CommandRunnable2org.junit.jupiter.engine.extension.TimeoutDuration8org.junit.jupiter.engine.extension.RepeatedTestExtension%kotlin.collections.AbstractCollection0org.junit.platform.engine.TestDescriptor$Visitor"kotlin.annotation.AnnotationTarget0org.junit.platform.engine.EngineDiscoveryRequestPorg.apache.maven.surefire.shade.org.apache.commons.io.output.StringBuilderWriter%org.junit.jupiter.api.TestMethodOrder8org.junit.jupiter.engine.descriptor.LifecycleMethodUtils+org.junit.platform.commons.util.StringUtils=org.junit.platform.engine.support.hierarchical.NodeTreeWalker9org.junit.jupiter.engine.descriptor.ClassExtensionContext0org.junit.jupiter.api.extension.ParameterContext/org.apache.maven.surefire.util.DirectoryScannerorg.junit.jupiter.api.AfterEach5org.apache.maven.surefire.util.internal.DumpFileUtils;org.apache.maven.surefire.booter.ForkedBooter$PingScheduler5org.junit.jupiter.engine.extension.ExtensionRegistrarorg.junit.platform.engine.support.hierarchical.Node$Invocation4org.apache.maven.surefire.booter.MainCliOptionsAware0kotlin.collections.CollectionsKt___CollectionsKt;org.apache.maven.surefire.testset.ResolvedTest$ClassMatcher1org.junit.jupiter.api.extension.ParameterResolver[org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$DefaultContext:org.junit.jupiter.api.extension.ExtensionContext$Namespace'kotlinx.kover.maven.plugin.testing.Main;org.junit.platform.engine.support.hierarchical.ResourceLock%org.junit.platform.launcher.core.Rootorg.junit.jupiter.api.Disabledorg.junit.jupiter.api.AfterAll8org.junit.jupiter.engine.discovery.MethodOrderingVisitorVorg.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutororg.junit.jupiter.api.BeforeAll6org.junit.jupiter.api.extension.ExtensionContext$Store:org.junit.platform.engine.support.hierarchical.LockManager7org.junit.jupiter.engine.extension.TimeoutConfiguration2org.apache.maven.surefire.testset.TestListResolver8org.junit.jupiter.engine.extension.TimeoutDurationParser+org.junit.platform.engine.DiscoverySelector;org.junit.jupiter.engine.config.DefaultJupiterConfigurationWorg.junit.platform.engine.support.hierarchical.HierarchicalTestExecutorService$TestTask.org.apache.maven.surefire.util.ReflectionUtils#org.opentest4j.TestAbortedException+org.junit.jupiter.api.parallel.ResourceLock6org.apache.maven.surefire.report.ConsoleOutputReceiver*org.junit.jupiter.api.DisplayNameGenerator=org.apache.maven.surefire.junitplatform.JUnitPlatformProvider:org.apache.maven.surefire.booter.SurefireClassLoadersAwareSorg.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation2org.apache.maven.surefire.report.SimpleReportEntry3org.apache.maven.surefire.booter.DumpErrorSingleton6org.apache.maven.surefire.providerapi.AbstractProvider1org.junit.platform.engine.discovery.ClassSelectorCorg.junit.jupiter.engine.extension.TimeoutExtension$TimeoutProviderDorg.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType3org.apache.maven.surefire.booter.BooterDeserializer8org.junit.platform.engine.support.descriptor.ClassSource'org.junit.platform.commons.function.Try,org.apache.maven.surefire.util.ScannerFilterkotlin.enums.EnumEntriesJVMKt(org.junit.platform.engine.UniqueIdFormatForg.apache.maven.surefire.report.ConsoleOutputCapture$NullOutputStream4org.junit.jupiter.engine.execution.ExecutableInvoker1org.apache.maven.surefire.booter.TypeEncodedValueForg.junit.jupiter.engine.config.DisplayNameGeneratorParameterConverter8org.junit.jupiter.engine.execution.TestInstancesProvider4org.apache.maven.surefire.testset.GenericTestPattern+org.opentest4j.IncompleteExecutionExceptionorg.junit.jupiter.api.extension.TestInstancePreDestroyCallbackRorg.apache.maven.surefire.shade.org.apache.commons.io.output.ByteArrayOutputStreamAorg.junit.platform.commons.logging.LoggerFactory$DelegatingLogger/org.junit.platform.commons.util.CollectionUtils3org.junit.jupiter.engine.extension.TimeoutExtension$org.junit.platform.engine.TestSourceIorg.junit.platform.engine.support.hierarchical.ExclusiveResource$LockMode4org.junit.jupiter.engine.descriptor.DisplayNameUtilsorg.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils@org.junit.platform.launcher.core.LauncherConfigurationParametersKorg.junit.platform.launcher.core.ServiceLoaderTestExecutionListenerRegistry>org.junit.platform.engine.support.hierarchical.Node$SkipResult2org.apache.maven.surefire.testset.TestArtifactInfo6org.apache.maven.surefire.report.ReporterConfigurationForg.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$3Forg.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$2/org.apache.maven.surefire.booter.KeyValueSource.org.apache.maven.surefire.booter.CommandReaderForg.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$1Borg.junit.platform.engine.support.hierarchical.NodeTestTaskContext-org.junit.platform.commons.util.Preconditions)org.junit.platform.commons.logging.Logger6org.apache.maven.surefire.booter.TestArtifactInfoAware!org.junit.jupiter.api.DisplayName,org.apache.maven.surefire.booter.ProcessInfo2org.junit.jupiter.api.extension.BeforeEachCallbackorg.junit.jupiter.engine.discovery.predicates.IsTestableMethod)org.apache.maven.surefire.util.ScanResult1org.junit.jupiter.api.extension.AfterEachCallback8org.junit.jupiter.engine.discovery.ClassSelectorResolver6org.junit.platform.launcher.core.DefaultLauncherConfig8org.junit.platform.engine.support.hierarchical.NodeUtils>org.junit.platform.launcher.core.TestExecutionListenerRegistry@org.junit.jupiter.engine.extension.TestReporterParameterResolver@org.junit.jupiter.api.extension.InvocationInterceptor$Invocation1org.apache.maven.surefire.booter.TestRequestAware:org.junit.jupiter.api.extension.TestInstanceFactoryContext/org.junit.platform.launcher.PostDiscoveryFilterNorg.junit.platform.engine.support.hierarchical.HierarchicalTestExecutorService4org.apache.maven.surefire.booter.BaseProviderFactoryAorg.junit.jupiter.engine.support.JupiterThrowableCollectorFactoryorg.junit.jupiter.api.Test0org.junit.platform.commons.util.ClassLoaderUtils@org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder8org.junit.jupiter.engine.execution.ConstructorInvocation;org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor%org.junit.platform.launcher.TagFilterkotlin.enums.EnumEntriesKt9org.apache.maven.surefire.booter.ClassLoaderConfiguration2org.apache.maven.surefire.booter.PropertiesWrapper-org.apache.maven.surefire.booter.ForkedBooter6org.apache.maven.plugin.surefire.log.api.ConsoleLoggergorg.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver$DefaultInitializationContext4org.apache.maven.surefire.booter.IsolatedClassLoader:org.junit.jupiter.engine.execution.BeforeEachMethodAdapter-org.junit.platform.engine.TestExecutionResult*org.junit.jupiter.engine.JupiterTestEngine@org.junit.platform.engine.support.hierarchical.ExclusiveResource*org.junit.jupiter.api.extension.Extensions)org.apache.maven.surefire.suite.RunResult1org.junit.jupiter.api.extension.RegisterExtensionkotlin.enums.EnumEntries:org.junit.jupiter.api.extension.TestInstantiationException5org.junit.jupiter.api.extension.InvocationInterceptor(org.junit.platform.launcher.EngineFilter3org.junit.jupiter.api.extension.TestInstanceFactory"org.junit.platform.engine.UniqueId/org.junit.platform.commons.util.ReflectionUtils>org.junit.platform.commons.util.PreconditionViolationException6org.apache.maven.surefire.booter.ProviderConfiguration3org.apache.maven.surefire.util.internal.ObjectUtilsKorg.apache.maven.surefire.report.ConsoleOutputCapture$ForwardingPrintStream9org.junit.jupiter.api.extension.ConditionEvaluationResult3org.apache.maven.surefire.booter.ForkingRunListenerRorg.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation5org.apache.maven.surefire.booter.MasterProcessCommand/org.junit.platform.commons.function.Try$Failure4org.junit.platform.engine.discovery.UniqueIdSelectorkotlin.annotation.Target3org.junit.platform.engine.support.hierarchical.Node-kotlinx.kover.maven.plugin.testing.MainKtTest(org.apache.maven.surefire.booter.Commandorg.junit.jupiter.api.Tag9org.junit.jupiter.engine.discovery.MethodSelectorResolver)org.junit.platform.engine.CompositeFilter?org.junit.jupiter.api.extension.ExtensionConfigurationExceptionkotlin.jvm.internal.Intrinsics()VACEFfrom(Ljava/util/Map;)Lorg/junit/platform/engine/reporting/ReportEntry;.012[from(Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/reporting/ReportEntry;=>?!getKeyValuePairs()Ljava/util/Map;NtoString()Ljava/lang/String;^_`a*add(Ljava/lang/String;Ljava/lang/String;)VCDE ()V!#$'getTimestamp()Ljava/time/LocalDateTime;Y BsetTestInstances(Lorg/junit/jupiter/api/extension/TestInstances;)VD#getTestMethod()Ljava/util/Optional;I+getExecutionException()Ljava/util/Optional;N&getTestInstances()Ljava/util/Optional;@"getTestClass()Ljava/util/Optional;1%getTestInstance()Ljava/util/Optional;;%(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/jupiter/engine/descriptor/TestMethodTestDescriptor;Lorg/junit/jupiter/engine/config/JupiterConfiguration;Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector;)V%'.getTestInstanceLifecycle()Ljava/util/Optional;6 getElement()Ljava/util/Optional;,invokeAll(Ljava/util/List;)V& ()V~submit(Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService$TestTask;)Ljava/util/concurrent/Future; !close()V,&(Ljava/util/function/Supplier;)Vget()Ljava/lang/Object;a(Ljava/util/function/Supplier;Lorg/junit/jupiter/engine/execution/ExtensionValuesStore$1;)V ()Vr(Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)VOclone()Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$State;.create()Lorg/junit/platform/launcher/Launcher;C_create(Lorg/junit/platform/launcher/core/LauncherConfig;)Lorg/junit/platform/launcher/Launcher; SUVWY[]^_ac +2values()[Lorg/apache/maven/surefire/util/RunOrder;o(Ljava/lang/String;)VJvalueOfMulti(Ljava/lang/String;)[Lorg/apache/maven/surefire/util/RunOrder;9:<=?BEcreateMessageForMissingRunOrder(Ljava/lang/String;)Ljava/lang/String; +]^_`acegij ()V!#%')+-/matches(Ljava/lang/String;)Zname()Ljava/lang/String;toString()Ljava/lang/String;DvalueOf(Ljava/lang/String;)Lorg/apache/maven/surefire/util/RunOrder;GIMNPRVWFasString([Lorg/apache/maven/surefire/util/RunOrder;)Ljava/lang/String;tuwxz} + ()V + + "getSuiteXmlFiles()Ljava/util/List;>&getTestSourceDirectory()Ljava/io/File;H[(Ljava/util/List;Ljava/io/File;Lorg/apache/maven/surefire/testset/TestListResolver;)V+IgetTestListResolver()Lorg/apache/maven/surefire/testset/TestListResolver;RgetRerunFailingTestsCount()I\\(Ljava/util/List;Ljava/io/File;Lorg/apache/maven/surefire/testset/TestListResolver;I)V01234-createFiles(Ljava/util/List;)Ljava/util/List;aceghjl Tlambda$validateEngineIds$1(Lorg/junit/platform/engine/TestEngine;)Ljava/lang/String;G\execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)Vdlambda$handleThrowable$8(Lorg/junit/platform/engine/TestEngine;Ljava/lang/String;)Ljava/lang/String;lambda$execute$6(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/launcher/TestExecutionListener;)Valambda$discoverRoot$4(Ljava/lang/String;Lorg/junit/platform/engine/TestEngine;)Ljava/lang/String;UregisterTestExecutionListeners([Lorg/junit/platform/launcher/TestExecutionListener;)VpqrbgetTestExecutionListenerRegistry()Lorg/junit/platform/launcher/core/TestExecutionListenerRegistry;withInterceptedStreams(Lorg/junit/platform/engine/ConfigurationParameters;Lorg/junit/platform/launcher/core/TestExecutionListenerRegistry;Ljava/util/function/Consumer;)Vexecute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V;validateEngineIds(Ljava/lang/Iterable;)Ljava/lang/Iterable;ABDEKLMPtexecute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V}~}discoverRoot(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;Ljava/lang/String;)Lorg/junit/platform/launcher/core/Root; buildListenerRegistryForExecution([Lorg/junit/platform/launcher/TestExecutionListener;)Lorg/junit/platform/launcher/core/TestExecutionListenerRegistry; lambda$new$0()Ljava/lang/String;;UvalidateWellKnownClassName(Lorg/junit/platform/engine/TestEngine;Ljava/lang/String;)Vefijk ()V.(Ljava/lang/Iterable;)V019:=discoverEngineRoot(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/launcher/LauncherDiscoveryRequest;)Ljava/util/Optional;fdiscover(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;)Lorg/junit/platform/launcher/TestPlan;wx_handleThrowable(Lorg/junit/platform/engine/TestEngine;Ljava/lang/String;Ljava/lang/Throwable;)V ()V&evaluateExecutionCondition(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/ConditionEvaluationResult;*+,-/2Klambda$evaluateExecutionCondition$0(Ljava/util/Optional;)Ljava/lang/String;. ()V! ()V jandThenTry(Lorg/junit/platform/commons/function/Try$Transformer;)Lorg/junit/platform/commons/function/Try;SorElseTry(Ljava/util/concurrent/Callable;)Lorg/junit/platform/commons/function/Try;QifFailure(Ljava/util/function/Consumer;)Lorg/junit/platform/commons/function/Try;get()Ljava/lang/Object;;getOrThrow(Ljava/util/function/Function;)Ljava/lang/Object;NorElse(Ljava/util/function/Supplier;)Lorg/junit/platform/commons/function/Try; hashCode()IOandThen(Ljava/util/function/Function;)Lorg/junit/platform/commons/function/Try;equals(Ljava/lang/Object;)Z toOptional()Ljava/util/Optional;QifSuccess(Ljava/util/function/Consumer;)Lorg/junit/platform/commons/function/Try;(Ljava/lang/Object;)VrgetClassName(Lorg/junit/platform/launcher/TestPlan;Lorg/junit/platform/launcher/TestIdentifier;)Ljava/lang/String;345678;getParentLegacyReportingName(Lorg/junit/platform/launcher/TestPlan;Lorg/junit/platform/launcher/TestIdentifier;)Ljava/lang/String;MNOvgetClassSource(Lorg/junit/platform/launcher/TestIdentifier;)Lorg/junit/platform/engine/support/descriptor/ClassSource;DEFGgetParent(Lorg/junit/platform/launcher/TestPlan;Lorg/junit/platform/launcher/TestIdentifier;)Lorg/junit/platform/launcher/TestIdentifier;?9(Lorg/apache/maven/surefire/booter/CommandReader;)Vrun()V%exitByConfiguration()V >insertToListeners(Lorg/apache/maven/surefire/booter/Command;)V)(JLjava/util/concurrent/TimeUnit;)V !" getValue()J& hashCode()I;(getUnit()Ljava/util/concurrent/TimeUnit;*equals(Ljava/lang/Object;)Z/02356toString()Ljava/lang/String;@ABDYfrom(Lorg/junit/jupiter/api/Timeout;)Lorg/junit/jupiter/engine/extension/TimeoutDuration;displayNameFormatter(Lorg/junit/jupiter/api/RepeatedTest;Ljava/lang/reflect/Method;Ljava/lang/String;)Lorg/junit/jupiter/engine/extension/RepeatedTestDisplayNameFormatter;?AQtotalRepetitions(Lorg/junit/jupiter/api/RepeatedTest;Ljava/lang/reflect/Method;)I78:IsupportsTestTemplate(Lorg/junit/jupiter/api/extension/ExtensionContext;)Z$rprovideTestTemplateInvocationContexts(Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/util/stream/Stream;)*+,-012 ()V /toArray([Ljava/lang/Object;)[Ljava/lang/Object;0toArray()[Ljava/lang/Object;" +isEmpty()ZtoString()Ljava/lang/String;contains(Ljava/lang/Object;)Z$containsAll(Ljava/util/Collection;)Z ()V ()V "$&(*,.0246IgetDiscoveryListener()Lorg/junit/platform/engine/EngineDiscoveryListener;U "(Ljava/lang/StringBuilder;)V>?flush()Vv +(I)V34 write([CII)V%getBuilder()Ljava/lang/StringBuilder;toString()Ljava/lang/String;append(C)Ljava/io/Writer;JK0append(Ljava/lang/CharSequence;)Ljava/io/Writer;VW2append(Ljava/lang/CharSequence;II)Ljava/io/Writer;dewrite(Ljava/lang/String;)V ()V*+close()Vn +findMethodsAndAssertNonStatic(Ljava/lang/Class;Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;XYZ8findBeforeEachMethods(Ljava/lang/Class;)Ljava/util/List;07findAfterEachMethods(Ljava/lang/Class;)Ljava/util/List;47findAfterAllMethods(Ljava/lang/Class;Z)Ljava/util/List;,8assertVoid(Ljava/lang/Class;Ljava/lang/reflect/Method;)VGHI8findBeforeAllMethods(Ljava/lang/Class;Z)Ljava/util/List;(findMethodsAndAssertStatic(Ljava/lang/Class;ZLjava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;OPQS:assertStatic(Ljava/lang/Class;Ljava/lang/reflect/Method;)V89;findMethodsAndCheckVoidReturnType(Ljava/lang/Class;Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;_`a=assertNonStatic(Ljava/lang/Class;Ljava/lang/reflect/Method;)V@AB isNotBlank(Ljava/lang/String;)ZPSreplaceWhitespaceCharacters(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;3compileIsoControlPattern()Ljava/util/regex/Pattern;/36nullSafeToString(Ljava/lang/Object;)Ljava/lang/String;'containsWhitespace(Ljava/lang/String;)Z\-doesNotContainWhitespace(Ljava/lang/String;)ZjisBlank(Ljava/lang/String;)ZD6doesNotContainIsoControlCharacter(Ljava/lang/String;)Z ()V$%5defaultToString(Ljava/lang/Object;)Ljava/lang/String;SreplaceIsoControlCharacters(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;0containsIsoControlCharacter(Ljava/lang/String;)Zvklambda$doForChildrenRecursively$2(Ljava/util/function/Consumer;Lorg/junit/platform/engine/TestDescriptor;)V89uwalk(Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/engine/support/hierarchical/NodeExecutionAdvisor;vwalk(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/support/hierarchical/NodeExecutionAdvisor;)V#$%()*.PgetExclusiveResources(Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Set;3bdoForChildrenRecursively(Lorg/junit/platform/engine/TestDescriptor;Ljava/util/function/Consumer;)V7 ()Vlambda$walk$1(Ljava/util/Set;Lorg/junit/platform/engine/support/hierarchical/NodeExecutionAdvisor;Lorg/junit/platform/engine/TestDescriptor;)V+, +S(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/jupiter/engine/descriptor/ClassBasedTestDescriptor;Lorg/junit/jupiter/api/TestInstance$Lifecycle;Lorg/junit/jupiter/engine/config/JupiterConfiguration;Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector;)V356BsetTestInstances(Lorg/junit/jupiter/api/extension/TestInstances;)VS#getTestMethod()Ljava/util/Optional;X+getExecutionException()Ljava/util/Optional;]&getTestInstances()Ljava/util/Optional;O"getTestClass()Ljava/util/Optional;@%getTestInstance()Ljava/util/Optional;J%(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/jupiter/engine/descriptor/ClassBasedTestDescriptor;Lorg/junit/jupiter/engine/config/JupiterConfiguration;Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector;)V,.getTestInstanceLifecycle()Ljava/util/Optional;E getElement()Ljava/util/Optional;;!6getDeclaringExecutable()Ljava/lang/reflect/Executable;L"#$3dumpException(Ljava/lang/Throwable;Ljava/io/File;)V<mkdirs(Ljava/io/File;)Z}~,newFormattedDateFileName()Ljava/lang/String;p+dumpText(Ljava/lang/String;Ljava/io/File;)V^_abcdeEdumpException(Ljava/lang/Throwable;Ljava/lang/String;Ljava/io/File;)V CDFGIJLMNOPQ;newDumpFile(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;7,createWriter(Ljava/io/File;)Ljava/io/Writer;uvwx ()V+,%waccess$100(Lorg/apache/maven/surefire/booter/ForkedBooter$PingScheduler;)Lorg/apache/maven/surefire/booter/PpidChecker;f(Ljava/util/concurrent/ScheduledExecutorService;Lorg/apache/maven/surefire/booter/PpidChecker;)V shutdown()V isShutdown()Z&' resolve(Lorg/junit/platform/engine/discovery/ClassSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/ModuleSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/ClasspathRootSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;lresolve(Lorg/junit/platform/engine/DiscoverySelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/NestedMethodSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/UniqueIdSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/MethodSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/PackageSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/NestedClassSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/FileSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/UriSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/DirectorySelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;resolve(Lorg/junit/platform/engine/discovery/ClasspathResourceSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;Y( lambda$executionFinished$4(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;Lorg/junit/platform/launcher/core/TestExecutionListenerRegistry$EagerTestExecutionListener;)V[I(Lorg/junit/platform/launcher/core/TestExecutionListenerRegistry;)VFBtestPlanExecutionFinished(Lorg/junit/platform/launcher/TestPlan;)Vf?executionStarted(Lorg/junit/platform/launcher/TestIdentifier;)VTUwreportingEntryPublished(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/reporting/ReportEntry;)VkAtestPlanExecutionStarted(Lorg/junit/platform/launcher/TestPlan;)VaQexecutionSkipped(Lorg/junit/platform/launcher/TestIdentifier;Ljava/lang/String;)VODdynamicTestRegistered(Lorg/junit/platform/launcher/TestIdentifier;)VJoexecutionFinished(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;)VZ\)*+,get(I)Ljava/lang/Enum;9:lastIndexOf(Ljava/lang/Enum;)IQcontains(Ljava/lang/Enum;)ZBDE writeReplace()Ljava/lang/Object;VindexOf(Ljava/lang/Enum;)IJLMN +getSize()I6([Ljava/lang/Enum;)V/- $getOrder(Ljava/lang/reflect/Field;)Ilambda$registerExtensionsFromFields$3(Ljava/lang/Object;Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;Ljava/lang/reflect/Field;)VimpopulateNewExtensionRegistryFromExtendWithAnnotation(Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;Ljava/lang/reflect/AnnotatedElement;)Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;CDGHIJMlambda$registerExtensionsFromFields$2(Ljava/lang/reflect/Field;Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;Ljava/lang/Object;)VnqDlambda$static$4(Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;)IzRlambda$registerExtensionsFromFields$0(Ljava/lang/reflect/Field;)Ljava/lang/String;j ()VyyregisterExtensionsFromFields(Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;Ljava/lang/Class;Ljava/lang/Object;)V]^`cfhdlambda$registerExtensionsFromFields$1(Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/lang/String;p./(Ljava/lang/String;IFLjava/lang/String;)Vklm maxVersion()F ()V !&+05:?DIPUZtoString()Ljava/lang/String;#toFloatVersion(Ljava/lang/String;)FhgetJavaVersion(Ljava/lang/String;)Lorg/apache/maven/surefire/shade/org/apache/commons/lang3/JavaVersion;]get(Ljava/lang/String;)Lorg/apache/maven/surefire/shade/org/apache/commons/lang3/JavaVersion;PatLeast(Lorg/apache/maven/surefire/shade/org/apache/commons/lang3/JavaVersion;)Z{/getTags()Ljava/util/Set;BCD.getExplicitExecutionMode()Ljava/util/Optional;N&getExclusiveResources()Ljava/util/Set;IgetTestClass()Ljava/lang/Class;R(Lorg/junit/platform/engine/UniqueId;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V8:;<)getTestMethod()Ljava/lang/reflect/Method;V*getLegacyReportingName()Ljava/lang/String;[\(Lorg/junit/platform/engine/UniqueId;Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V20IgetExecutionListener()Lorg/junit/platform/engine/EngineExecutionListener;?beforeAllCallbacksExecuted()ZeQ(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$State;)V%&-.SgetExtensionRegistry()Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;KGgetExtensionContext()Lorg/junit/jupiter/api/extension/ExtensionContext;ObeforeAllMethodsExecuted()Zt(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$State;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$1;)Vr(Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V*HgetConfiguration()Lorg/junit/jupiter/engine/config/JupiterConfiguration;CbeforeAllMethodsExecuted(Z)VlbeforeAllCallbacksExecuted(Z)V\ ()V TgetTestInstancesProvider()Lorg/junit/jupiter/engine/execution/TestInstancesProvider;GRextend()Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$Builder;xclose()V2358ZgetThrowableCollector()Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector;S1(Ljava/lang/String;)V2 hashCode()Ifequals(Ljava/lang/Object;)ZVWYZ\](Ljava/lang/String;)V-.getFile()Ljava/io/File;8toString()Ljava/lang/String;kgetPath()Ljava/nio/file/Path;CgetRawPath()Ljava/lang/String;M31stripToNull(Ljava/lang/String;)Ljava/lang/String; -join(Ljava/lang/Iterable;C)Ljava/lang/String;GGGUreplaceOnce(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;N>splitPreserveAllTokens(Ljava/lang/String;C)[Ljava/lang/String;4'lastIndexOf(Ljava/lang/CharSequence;I)I*chop(Ljava/lang/String;)Ljava/lang/String; ]]]]]]]]]]],split(Ljava/lang/String;)[Ljava/lang/String;.)isAlphanumeric(Ljava/lang/CharSequence;)ZjjjjjjjAstartsWithAny(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)ZNsplitByWholeSeparator(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;0"isAlpha(Ljava/lang/CharSequence;)Ziiiiiii?center(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; ddddddddddd?containsAny(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Z 0truncate(Ljava/lang/String;II)Ljava/lang/String; =join([Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;DDD+wrap(Ljava/lang/String;C)Ljava/lang/String;2abbreviate(Ljava/lang/String;II)Ljava/lang/String;ssssssssssssssssss.leftPad(Ljava/lang/String;I)Ljava/lang/String;a?endsWithAny(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)ZAupperCase(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;eeeEwrapIfMissing(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; IgetLevenshteinDistance(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ixxxxxxxxxxyyyyyyyyyyyyyyyyyy$indexOf(Ljava/lang/CharSequence;II)I-indexOfDifference([Ljava/lang/CharSequence;)Ivvvvvvvvvvvvvvvvvvvvvvvvvvvv-split(Ljava/lang/String;C)[Ljava/lang/String;/HsubstringBetween(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;, ()V+mid(Ljava/lang/String;II)Ljava/lang/String; )))))))))hprependIfMissing(Ljava/lang/String;Ljava/lang/CharSequence;Z[Ljava/lang/CharSequence;)Ljava/lang/String;join([CCII)Ljava/lang/String; BBBBBBBBBBB7indexOfAny(Ljava/lang/CharSequence;Ljava/lang/String;)I>lastIndexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)IFlastOrdinalIndexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I>join(Ljava/lang/Iterable;Ljava/lang/String;)Ljava/lang/String;GGG4wrapIfMissing(Ljava/lang/String;C)Ljava/lang/String; ÉĉʼnljstartsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Zˀ̀΀πрUgetFuzzyDistance(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/util/Locale;)I~~~~~~~~~~~~~~~~~~~DsplitByCharacterTypeCamelCase(Ljava/lang/String;)[Ljava/lang/String;8-repeat(Ljava/lang/String;I)Ljava/lang/String;]]]]]]]]]]]]]^^^^^^^^^^BstripAll([Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; join([SCII)Ljava/lang/String; AAAAAAAAAAA6getCommonPrefix([Ljava/lang/String;)Ljava/lang/String; +wwwwwwwwww?join([Ljava/lang/Object;Ljava/lang/String;II)Ljava/lang/String;DDDDEEEEEEEEEEDindexOfIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I>join(Ljava/util/Iterator;Ljava/lang/String;)Ljava/lang/String;FFFFFFFFFFFFFFFFFFrepeat(CI)Ljava/lang/String;______1substring(Ljava/lang/String;II)Ljava/lang/String;''''''''''(((((-rotate(Ljava/lang/String;I)Ljava/lang/String; +pppppppppqVsplitByWholeSeparatorWorker(Ljava/lang/String;Ljava/lang/String;IZ)[Ljava/lang/String; 22222222222222222222223333333333join([DCII)Ljava/lang/String; BBBBBBBBBCCEdefaultString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;o=strip(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + + + +0rightPad(Ljava/lang/String;IC)Ljava/lang/String;____````join([SC)Ljava/lang/String;;;;WreplaceEach(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;U4normalizeSpace(Ljava/lang/String;)Ljava/lang/String;ƒÃŃȃɃ˃Qreplace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;R+chomp(Ljava/lang/String;)Ljava/lang/String;[[[[[[[[[[[\\\\@stripEnd(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + )isAllLowerCase(Ljava/lang/CharSequence;)Znnnnnnn"isBlank(Ljava/lang/CharSequence;)Z!length(Ljava/lang/CharSequence;)Ib3defaultString(Ljava/lang/String;)Ljava/lang/String;o8compareIgnoreCase(Ljava/lang/String;Ljava/lang/String;)IXdefaultIfBlank(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;o=startsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z'isNoneEmpty([Ljava/lang/CharSequence;)ZVreplaceChars(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;YYYYYYZZZZZZZZZZZZZjoin([FC)Ljava/lang/String;===1abbreviate(Ljava/lang/String;I)Ljava/lang/String;rgappendIfMissing(Ljava/lang/String;Ljava/lang/CharSequence;Z[Ljava/lang/CharSequence;)Ljava/lang/String;ń/leftPad(Ljava/lang/String;IC)Ljava/lang/String;aaaaaaaa?toEncodedString([BLjava/nio/charset/Charset;)Ljava/lang/String;ۇ?repeat(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;^^^^OsplitByWholeSeparator(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String;19containsNone(Ljava/lang/CharSequence;Ljava/lang/String;)Z$$$%isNotEmpty(Ljava/lang/CharSequence;)Z0capitalize(Ljava/lang/String;)Ljava/lang/String; +ffffffffffYreplaceEach(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ZI)Ljava/lang/String;8VVWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXX+strip(Ljava/lang/String;)Ljava/lang/String; join([BCII)Ljava/lang/String; @@@@@@@@@@@/rightPad(Ljava/lang/String;I)Ljava/lang/String;_;endsWith(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)ZҁGstartsWithIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z0toString([BLjava/lang/String;)Ljava/lang/String;ʇjoin([DC)Ljava/lang/String;===9containsOnly(Ljava/lang/CharSequence;Ljava/lang/String;)Z###HlastIndexOfIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)IAjoinWith(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; GGGGGGGGHHH4replaceChars(Ljava/lang/String;CC)Ljava/lang/String;YYYSreplace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/lang/String;SSSSSSSSSSSSSSSSSSSTTTgprependIfMissing(Ljava/lang/String;Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;І/compare(Ljava/lang/String;Ljava/lang/String;Z)I?countMatches(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ihhhhhhhh/lowerCase(Ljava/lang/String;)Ljava/lang/String;eee)containsOnly(Ljava/lang/CharSequence;[C)Z"""""""\substringsBetween(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;------..............XdefaultIfEmpty(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;pcontainsAny(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z >indexOfAny(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)I %%%%%%%%%%%%%#indexOf(Ljava/lang/CharSequence;I)ICremoveFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;MEremovePattern(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;PAlowerCase(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;fff?lastIndexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)IpappendIfMissingIgnoreCase(Ljava/lang/String;Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;х`splitByWholeSeparatorPreserveAllTokens(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String;2;matches(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)[I$}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}+isAsciiPrintable(Ljava/lang/CharSequence;)ZkkkkkklFsplitWorker(Ljava/lang/String;Ljava/lang/String;IZ)[Ljava/lang/String;766666666666666666666777777777777777777777777777777777771trimToEmpty(Ljava/lang/String;)Ljava/lang/String;areplaceEachRepeatedly(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;VV;contains(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z_splitByWholeSeparatorPreserveAllTokens(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;1.isAlphanumericSpace(Ljava/lang/CharSequence;)Zkkkkkkk-center(Ljava/lang/String;I)Ljava/lang/String;c$isNumeric(Ljava/lang/CharSequence;)Zlllllll0substring(Ljava/lang/String;I)Ljava/lang/String; &&&&&&&''+left(Ljava/lang/String;I)Ljava/lang/String;(((((((2stripAccents(Ljava/lang/String;)Ljava/lang/String; join([ICII)Ljava/lang/String; ???????????_replaceOnceIgnoreCase(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;N=equalsAny(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)ZIgetJaroWinklerDistance(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)D +||||||||||JsubstringAfterLast(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;,,,,,,,,CremoveStart(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;IIIIICordinalIndexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;IZ)IAremoveEnd(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;JJJJJBdifference(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;tttttttt;splitByCharacterType(Ljava/lang/String;)[Ljava/lang/String;8-remove(Ljava/lang/String;C)Ljava/lang/String;LLLLLLLL.compare(Ljava/lang/String;Ljava/lang/String;)I"isEmpty(Ljava/lang/CharSequence;)Zjoin([JCII)Ljava/lang/String; ???????????XreplacePattern(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;OOOAoverlay(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;ZZZZZZZZZ[[[[[[[[[[[[[>split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;/@leftPad(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;bbbbbbbbbbbbbbbbbbbb6deleteWhitespace(Ljava/lang/String;)Ljava/lang/String; HHHHHHHHHHH(countMatches(Ljava/lang/CharSequence;C)Iiiiiiii>remove(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;KKK*indexOfAnyBut(Ljava/lang/CharSequence;[C)I!!!!!!!!!!!!!!Rreplace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;SDindexOfDifference(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I uuuuuuuuuKremoveEndIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;JJJJJjoin([IC)Ljava/lang/String;;;;EcontainsIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z>>>>>>>>>>>HremoveIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;KKK2uncapitalize(Ljava/lang/String;)Ljava/lang/String; +gggggggggg=splitPreserveAllTokens(Ljava/lang/String;)[Ljava/lang/String;32stripToEmpty(Ljava/lang/String;)Ljava/lang/String; +0stripAll([Ljava/lang/String;)[Ljava/lang/String; -containsWhitespace(Ljava/lang/CharSequence;)ZGsubstringBefore(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;********PsplitPreserveAllTokens(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String;6join([FCII)Ljava/lang/String; CCCCCCCCCCCEindexOfIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I 4splitWorker(Ljava/lang/String;CZ)[Ljava/lang/String;4444444444444444444555KsubstringBeforeLast(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;++++++(containsAny(Ljava/lang/CharSequence;[C)Zjoin([JC)Ljava/lang/String;:::()V#% ()V!evaluate(Lorg/junit/jupiter/api/extension/ExecutionCondition;Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/ConditionEvaluationResult;@ABE6 ()V7 hashCode()I?(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Vpqrstu getClassName()Ljava/lang/String;+getMethodParameterTypes()Ljava/lang/String;-(Ljava/lang/String;Ljava/lang/String;)Vm!getMethodName()Ljava/lang/String;4(Ljava/lang/Class;Ljava/lang/reflect/Method;)Vefrom(Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/support/descriptor/MethodSource;.lfrom(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lorg/junit/platform/engine/support/descriptor/MethodSource;e#(Ljava/lang/reflect/Method;)Vyequals(Ljava/lang/Object;)Z[from(Ljava/lang/reflect/Method;)Lorg/junit/platform/engine/support/descriptor/MethodSource;Twfrom(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/support/descriptor/MethodSource;;toString()Ljava/lang/String;wfrom(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Class;)Lorg/junit/platform/engine/support/descriptor/MethodSource;J8test(Ljava/lang/Class;)Z "#%&()+,. ()V9 useSystemClassLoader()ZI(Ljava/lang/String;Lorg/apache/maven/surefire/booter/AbstractPathConfiguration;Lorg/apache/maven/surefire/booter/ClassLoaderConfiguration;ZZ)V+,-./0(getProviderClassName()Ljava/lang/String;SWgetClasspathConfiguration()Lorg/apache/maven/surefire/booter/AbstractPathConfiguration;BXgetClassLoaderConfiguration()Lorg/apache/maven/surefire/booter/ClassLoaderConfiguration;@stripEnd(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; gikmoqvx{%writeSurefireTestClasspathProperty()VisShadefire()ZinForkedVm(Ljava/lang/String;Lorg/apache/maven/surefire/booter/ClasspathConfiguration;Lorg/apache/maven/surefire/booter/ClassLoaderConfiguration;)Lorg/apache/maven/surefire/booter/StartupConfiguration;<isProviderMainClass()Z5&isManifestOnlyJarRequestedAndUsable()ZN&getActualClassName()Ljava/lang/String;X: isInfoEnabled()Z,isWarnEnabled()Z7debug(Ljava/lang/String;)V'error(Ljava/lang/String;)VH/error(Ljava/lang/String;Ljava/lang/Throwable;)VMisErrorEnabled()ZBisDebugEnabled()Z! ()Vinfo(Ljava/lang/String;)V2warning(Ljava/lang/String;)V=error(Ljava/lang/Throwable;)VR;< ()V"&')?createAbortedExecutionPredicate()Ljava/util/function/Predicate; +0456:;<>?C ()V,=elambda$executeRecursively$7(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V|}executeRecursively()Vwxzlambda$executeRecursively$8()V{.lambda$reportCompletion$10()Ljava/lang/String; +execute()V JKLMOPRSU[\g$lambda$execute$0()Ljava/lang/String;a +prepare()VkoUgetExecutionMode()Lorg/junit/platform/engine/support/hierarchical/Node$ExecutionMode;@w(Lorg/junit/platform/engine/support/hierarchical/NodeTestTaskContext;Lorg/junit/platform/engine/TestDescriptor;)V3456NgetResourceLock()Lorg/junit/platform/engine/support/hierarchical/ResourceLock;;lambda$executeRecursively$5()V +reportCompletion()V checkWhetherSkipped()Vsaccess$000(Lorg/junit/platform/engine/support/hierarchical/NodeTestTask;)Lorg/junit/platform/engine/support/hierarchical/NodeTestTaskContext;$ ()V&ZsetParentContext(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)VD.lambda$reportCompletion$11()Ljava/lang/String; +cleanUp()V>?+ZinvokeAfterAllMethods(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V\invokeAfterAllCallbacks(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)VysynthesizeBeforeEachMethodAdapter(Ljava/lang/reflect/Method;)Lorg/junit/jupiter/engine/execution/BeforeEachMethodAdapter; invokeMethodInExtensionContext(Ljava/lang/reflect/Method;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;)V2getDefaultChildExecutionMode()Ljava/util/Optional;lambda$before$0(Lorg/junit/jupiter/engine/descriptor/ClassExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Vlambda$invokeBeforeAllMethodExecutionExceptionHandlers$9(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/LifecycleMethodExecutionExceptionHandler;Ljava/lang/Throwable;)V7instantiateAndPostProcessTestInstance(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;)Lorg/junit/jupiter/api/extension/TestInstances;.getExplicitExecutionMode()Ljava/util/Optional;|before(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext; 8getType()Lorg/junit/platform/engine/TestDescriptor$Type;pZregisterBeforeEachMethodAdapters(Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;)V]invokeBeforeAllCallbacks(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)VregisterMethodsAsExtensions(Ljava/util/List;Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;Ljava/util/function/Function;)V*getLegacyReportingName()Ljava/lang/String;ulambda$invokeAfterAllMethodExecutionExceptionHandlers$12(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/LifecycleMethodExecutionExceptionHandler;Ljava/lang/Throwable;)Vlambda$invokeTestInstancePreDestroyCallbacks$16(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/TestInstancePreDestroyCallback;)VtestInstancesProvider(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/jupiter/engine/descriptor/ClassExtensionContext;)Lorg/junit/jupiter/engine/execution/TestInstancesProvider;[invokeBeforeAllMethods(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Vlambda$invokeBeforeAllMethods$8(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)VYregisterAfterEachMethodAdapters(Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;)VgetTestClass()Ljava/lang/Class;i&getExclusiveResources()Ljava/util/Set;olambda$invokeMethodInExtensionContext$20(Ljava/lang/reflect/Method;)Lorg/junit/platform/commons/JUnitException;bsetDefaultChildExecutionMode(Lorg/junit/platform/engine/support/hierarchical/Node$ExecutionMode;)Vprepare(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;lambda$invokeAfterAllMethods$10(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)VXisPerClassLifecycle(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)ZJafter(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V +resolveTestInstanceFactory(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Lorg/junit/jupiter/api/extension/TestInstanceFactory; invokeTestInstancePostProcessors(Ljava/lang/Object;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/api/extension/ExtensionContext;)VsinvokeTestInstanceFactory(Ljava/util/Optional;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;instantiateTestClass(Ljava/util/Optional;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/TestInstances;lambda$invokeTestInstancePostProcessors$6(Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/TestInstancePostProcessor;)VinvokeAfterAllMethodExecutionExceptionHandlers(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/Throwable;)V(Lorg/junit/platform/engine/UniqueId;Ljava/lang/Class;Ljava/util/function/Supplier;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V^`abc9lambda$testInstancesProvider$2(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/jupiter/engine/descriptor/ClassExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;)Lorg/junit/jupiter/api/extension/TestInstances; ()VQinvokeTestClassConstructor(Ljava/util/Optional;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;jinvokeTestInstancePreDestroyCallbacks(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)VEexecuteAndMaskThrowable(Lorg/junit/jupiter/api/function/Executable;)VinvokeBeforeAllMethodExecutionExceptionHandlers(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/Throwable;)VwsynthesizeAfterEachMethodAdapter(Ljava/lang/reflect/Method;)Lorg/junit/jupiter/engine/execution/AfterEachMethodAdapter;@(ZLjava/io/PrintStream;)V*-./2close()Lorg/apache/maven/surefire/suite/RunResult;;>createReporter()Lorg/apache/maven/surefire/report/RunListener;5AJexecute([Ljava/lang/String;)Lorg/apache/maven/surefire/booter/ProcessInfo;I(Lorg/apache/maven/surefire/booter/PpidChecker;Ljava/lang/String;)VB9getRootUrisForPackage(Ljava/lang/String;)Ljava/util/List;WlogMalformedClassName(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/InternalError;)VhscanForClassesInPackage(Ljava/lang/String;Lorg/junit/platform/commons/util/ClassFilter;)Ljava/util/List;JKLNprocessClassFileSafely(Ljava/nio/file/Path;Ljava/lang/String;Lorg/junit/platform/commons/util/ClassFilter;Ljava/nio/file/Path;Ljava/util/function/Consumer;)VUhandleInternalError(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/InternalError;)V'getClassLoader()Ljava/lang/ClassLoader;pfindClassesForUri(Ljava/net/URI;Ljava/lang/String;Lorg/junit/platform/commons/util/ClassFilter;)Ljava/util/List;fghnojscanForClassesInClasspathRoot(Ljava/net/URI;Lorg/junit/platform/commons/util/ClassFilter;)Ljava/util/List;RSUwfindClassesForPath(Ljava/nio/file/Path;Ljava/lang/String;Lorg/junit/platform/commons/util/ClassFilter;)Ljava/util/List;tuw{}lambda$findClassesForPath$3(Ljava/nio/file/Path;Ljava/lang/String;Lorg/junit/platform/commons/util/ClassFilter;Ljava/util/List;Ljava/nio/file/Path;)Vx1packagePath(Ljava/lang/String;)Ljava/lang/String;E(Ljava/util/function/Supplier;Ljava/util/function/BiFunction;)VBDEsfindClassesForUris(Ljava/util/List;Ljava/lang/String;Lorg/junit/platform/commons/util/ClassFilter;)Ljava/util/List;]^_`a;handleThrowable(Ljava/nio/file/Path;Ljava/lang/Throwable;)V@determineSimpleClassName(Ljava/nio/file/Path;)Ljava/lang/String;MlogGenericFileProcessingException(Ljava/nio/file/Path;Ljava/lang/Throwable;)V ()V26ndetermineFullyQualifiedClassName(Ljava/nio/file/Path;Ljava/lang/String;Ljava/nio/file/Path;)Ljava/lang/String;Xlambda$logMalformedClassName$6(Ljava/nio/file/Path;Ljava/lang/String;)Ljava/lang/String;Rlambda$logGenericFileProcessingException$7(Ljava/nio/file/Path;)Ljava/lang/String;SdetermineSubpackageName(Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/lang/String;CsexecutionJustFinished(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;)V VWXY[\]_`ncreate(Lorg/junit/platform/engine/ConfigurationParameters;Ljava/util/function/BiConsumer;)Ljava/util/Optional;,-./235678:;<=? unregister()VJKCexecutionJustStarted(Lorg/junit/platform/launcher/TestIdentifier;)VPQP(Ljava/util/Optional;Ljava/util/Optional;Ljava/util/function/BiConsumer;)VCDEFDbincludeClassNamePatterns([Ljava/lang/String;)Lorg/junit/platform/engine/discovery/ClassNameFilter;9bexcludeClassNamePatterns([Ljava/lang/String;)Lorg/junit/platform/engine/discovery/ClassNameFilter;JE9lambda$findMethod$0(Ljava/lang/String;)Ljava/lang/String;!CfindMethod(Ljava/lang/String;Ljava/lang/Class;)Ljava/util/Optional; #$% ()V ()VFtest(Ljava/lang/Class;)Z !#$' ()VG8getType()Lorg/junit/platform/engine/TestDescriptor$Type;2?(Lorg/junit/platform/engine/UniqueId;Ljava/lang/String;)V'HI hashCode()IEindexOf(Ljava/lang/Object;)I&listIterator()Ljava/util/ListIterator;equals(Ljava/lang/Object;)Z<=?iterator()Ljava/util/Iterator; lastIndexOf(Ljava/lang/Object;)I ()V'listIterator(I)Ljava/util/ListIterator;!subList(II)Ljava/util/List;#JKLMexact(Lorg/junit/platform/engine/TestDescriptor;Ljava/util/function/Supplier;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Match; partial(Lorg/junit/platform/engine/TestDescriptor;Ljava/util/function/Supplier;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Match; (Lorg/junit/platform/engine/TestDescriptor;Ljava/util/function/Supplier;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Match$Type;)V    expand()Ljava/util/Set; +uexact(Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Match;=getTestDescriptor()Lorg/junit/platform/engine/TestDescriptor; wpartial(Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Match; +isExact()Z N(Ljava/lang/String;)V 0(Ljava/lang/String;Ljava/lang/Throwable;)V ()V (Ljava/lang/Throwable;)VO ()V&selectorProcessed(Lorg/junit/platform/engine/UniqueId;Lorg/junit/platform/engine/DiscoverySelector;Lorg/junit/platform/engine/SelectorResolutionResult;)V6PgetTags()Ljava/util/Set;:&instantiateTestClass(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/extension/ExtensionRegistrar;Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/extension/TestInstances;Mt(Lorg/junit/platform/engine/UniqueId;Ljava/lang/Class;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V2UgetExecutionMode()Lorg/junit/platform/engine/support/hierarchical/Node$ExecutionMode;F)getEnclosingTestClasses()Ljava/util/List;?^lambda$getExecutionMode$0()Lorg/junit/platform/engine/support/hierarchical/Node$ExecutionMode;GQIbuild()Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Q(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$State;)VwithTestInstancesProvider(Lorg/junit/jupiter/engine/execution/TestInstancesProvider;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$Builder;(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$State;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$1;)VwithThrowableCollector(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$Builder;withExtensionContext(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$Builder;RnewState()Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$State;withExtensionRegistry(Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext$Builder;R:toDouble(Ljava/lang/String;D)D4createInteger(Ljava/lang/String;)Ljava/lang/Integer; min([J)J min(III)ItoDouble(Ljava/lang/String;)D min(BBB)Bmax([I)I max(BBB)B min(JJJ)J:createBigInteger(Ljava/lang/String;)Ljava/math/BigInteger; isDigits(Ljava/lang/String;)ZisNumber(Ljava/lang/String;)Z compare(SS)ItoByte(Ljava/lang/String;)B min(DDD)DtoFloat(Ljava/lang/String;F)Fmax([S)S)withDecimalsParsing(Ljava/lang/String;I)Z + max(III)I:createBigDecimal(Ljava/lang/String;)Ljava/math/BigDecimal; 1getMantissa(Ljava/lang/String;)Ljava/lang/String; min([B)B  max(DDD)Dmin([D)D ()VOmin([F)F min(SSS)S.createLong(Ljava/lang/String;)Ljava/lang/Long; max([B)B min(FFF)Fmin([I)I max([D)DisAllZeros(Ljava/lang/String;)Z + + + + + +toShort(Ljava/lang/String;S)S2createNumber(Ljava/lang/String;)Ljava/lang/Number;M max([F)FtoByte(Ljava/lang/String;B)BtoInt(Ljava/lang/String;I)Iz{~toLong(Ljava/lang/String;)Jmax([J)J"validateArray(Ljava/lang/Object;)Vmin([S)S compare(II)I max(JJJ)JtoFloat(Ljava/lang/String;)F max(FFF)F max(SSS)S2getMantissa(Ljava/lang/String;I)Ljava/lang/String; + + +toInt(Ljava/lang/String;)IetoLong(Ljava/lang/String;J)J2createDouble(Ljava/lang/String;)Ljava/lang/Double; + + +0createFloat(Ljava/lang/String;)Ljava/lang/Float; + + +isParsable(Ljava/lang/String;)Z  compare(BB)I ()V#%')+-/13579;=?ACE isCreatable(Ljava/lang/String;)ZBtoShort(Ljava/lang/String;)S compare(JJ)ISLorderTestClasses(Ljava/util/List;Lorg/apache/maven/surefire/util/RunOrder;)VIKMOPQRUWXYZ]_WgetSortOrderComparator(Lorg/apache/maven/surefire/util/RunOrder;)Ljava/util/Comparator;egikmopt8getReverseAlphabeticalComparator()Ljava/util/Comparator;z@(Lorg/apache/maven/surefire/testset/RunOrderParameters;I)V123451getAlphabeticalComparator()Ljava/util/Comparator;horderTestClasses(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/util/TestsToRun;<>@CDT7(Lorg/apache/maven/surefire/booter/Classpath;ZZ)V679;<=@getInprocClasspath()Lorg/apache/maven/surefire/booter/Classpath;RYtoRealPath(Ljava/lang/Class;)Lorg/apache/maven/surefire/booter/AbstractPathConfiguration;WXZ\BgetProviderClasspath()Lorg/apache/maven/surefire/booter/Classpath;hisChildDelegation()ZsisEnableAssertions()Zm0createMergedClassLoader()Ljava/lang/ClassLoader;bcUVW hashCode()Iequals(Ljava/lang/Object;)ZW(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;)V(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;Lorg/junit/jupiter/engine/execution/ExtensionValuesStore$1;)VX ()VY(Ljava/lang/String;)V ()V Z6execute(Lorg/junit/platform/engine/ExecutionRequest;)V/01236 ()VcreateExecutorService(Lorg/junit/platform/engine/ExecutionRequest;)Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService;McreateThrowableCollectorFactory(Lorg/junit/platform/engine/ExecutionRequest;)Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Factory;d[clookupExecutionModeForcedByAncestor(Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Optional;)*+-VgetForcedExecutionMode(Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Optional;%yuseResourceLock(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/support/hierarchical/ResourceLock;)V!xgetResourceLock(Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/engine/support/hierarchical/ResourceLock;1forceDescendantExecutionMode(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/support/hierarchical/Node$ExecutionMode;)V ()V\]^indexOf(Ljava/lang/Object;)I$containsAll(Ljava/util/Collection;)Zcontains(Ljava/lang/Object;)Z lastIndexOf(Ljava/lang/Object;)I_9(Lorg/apache/maven/surefire/testset/ResolvedTest;)V%matchClassPatter(Ljava/lang/String;)Z'matchTestClassFile(Ljava/lang/String;)Zgof([Ljava/lang/String;)Lorg/apache/maven/surefire/shade/org/apache/maven/shared/utils/io/MatchPatterns;*matchClassRegexPatter(Ljava/lang/String;)Z`a>addToParent(Ljava/util/function/Function;)Ljava/util/Optional;icreateAndAdd(Lorg/junit/platform/engine/TestDescriptor;Ljava/util/function/Function;)Ljava/util/Optional;(Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolution;Lorg/junit/platform/engine/TestDescriptor;)V[addToParent(Ljava/util/function/Supplier;Ljava/util/function/Function;)Ljava/util/Optional;blambda$resolve$1(Lorg/junit/platform/engine/DiscoverySelector;Ljava/util/Set;)Ljava/util/Optional; Jresolve(Lorg/junit/platform/engine/DiscoverySelector;)Ljava/util/Optional;b hashCode()I +equals(Ljava/lang/Object;)Z + ()V ([Ljava/lang/Object;)V  Wcreate([Ljava/lang/Object;)Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;   c unused()V used()V ()Vdclose()V,e +$getTestEngines()Ljava/lang/Iterable;*YisExcluded(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/Filter;)ZKRapplyPostDiscoveryFilters(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;)V67<prune()VGKacceptInAllTestEngines(Lorg/junit/platform/engine/TestDescriptor$Visitor;)VOVadd(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/TestDescriptor;)V&qlambda$applyPostDiscoveryFilters$0(Lorg/junit/platform/engine/Filter;Lorg/junit/platform/engine/TestDescriptor;)V89 ()V fgetTestDescriptorFor(Lorg/junit/platform/engine/TestEngine;)Lorg/junit/platform/engine/TestDescriptor;2,getEngineDescriptors()Ljava/util/Collection;.fghlambda$orderContainedMethods$5(Lorg/junit/jupiter/engine/descriptor/ClassBasedTestDescriptor;Ljava/lang/Class;Lorg/junit/jupiter/api/MethodOrderer;)VFHIJLMNOPSUXZ[_`efghklmnrstgorderContainedMethods(Lorg/junit/jupiter/engine/descriptor/ClassBasedTestDescriptor;Ljava/lang/Class;)VABCDilambda$orderContainedMethods$3(Lorg/junit/jupiter/api/MethodOrderer;ILjava/lang/Class;)Ljava/lang/String;]2visit(Lorg/junit/platform/engine/TestDescriptor;)V12478?(Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V+,ilambda$orderContainedMethods$4(Lorg/junit/jupiter/api/MethodOrderer;ILjava/lang/Class;)Ljava/lang/String;b ()V'iF(Lorg/junit/platform/engine/support/hierarchical/NodeTestTask;)V4execute(Lorg/junit/platform/engine/TestDescriptor;)V awaitFinished()Vjk9getOrComputeIfAbsent(Ljava/lang/Class;)Ljava/lang/Object;UgetOrDefault(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;lhgetLockForResources(Ljava/util/Collection;)Lorg/junit/platform/engine/support/hierarchical/ResourceLock;'(lambda$getDistinctSortedLocks$2(Lorg/junit/platform/engine/support/hierarchical/ExclusiveResource;)Ljava/util/concurrent/locks/Lock;57>getDistinctSortedLocks(Ljava/util/Collection;)Ljava/util/List;-./02349 ()V!]toResourceLock(Ljava/util/List;)Lorg/junit/platform/engine/support/hierarchical/ResourceLock;>?@BCE ()V$]lambda$getDistinctSortedLocks$1(Ljava/lang/String;)Ljava/util/concurrent/locks/ReadWriteLock;6m1getDefaultTestMethodTimeout()Ljava/util/Optional;19getDefaultTestTemplateMethodTimeout()Ljava/util/Optional;56getDefaultBeforeAllMethodTimeout()Ljava/util/Optional;>8getDefaultTestFactoryMethodTimeout()Ljava/util/Optional;:5getDefaultAfterAllMethodTimeout()Ljava/util/Optional;Jwlambda$parseTimeoutDuration$1(Ljava/lang/String;Ljava/lang/String;)Lorg/junit/jupiter/engine/extension/TimeoutDuration;beh7getDefaultBeforeEachMethodTimeout()Ljava/util/Optional;B;(Lorg/junit/jupiter/api/extension/ExtensionContext;)V(),-6getDefaultLifecycleMethodTimeout()Ljava/util/Optional;R'getDefaultTimeout()Ljava/util/Optional;V ()V&SparseOrDefault(Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/util/Optional;[\5getDefaultTestableMethodTimeout()Ljava/util/Optional;NUlambda$parseTimeoutDuration$0(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;f6getDefaultAfterEachMethodTimeout()Ljava/util/Optional;F(Ljava/util/Collection;Ljava/util/Collection;)Vbequals(Ljava/lang/Object;)ZupdatedFilters(ZLorg/apache/maven/surefire/testset/ResolvedTest;Lorg/apache/maven/surefire/testset/IncludedExcludedPatterns;Ljava/util/Collection;Ljava/util/Collection;)V0shouldRun(Ljava/lang/String;Ljava/lang/String;)Z amergeIncludedAndExcludedTests(Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Collection; +isRegexPrefixedPattern(Ljava/lang/String;)Z $haveMethodPatterns(Ljava/util/Set;)Z/shouldRun(Ljava/lang/Class;Ljava/lang/String;)Z +isEmpty()Z)(ZZLjava/util/Set;Ljava/util/Set;)Vjklmn hashCode()IAgetWildcard()Lorg/apache/maven/surefire/testset/TestListResolver;2unwrapRegex(Ljava/lang/String;)[Ljava/lang/String;for(Lorg/apache/maven/surefire/testset/TestListResolver;)Lorg/apache/maven/surefire/testset/TestFilter;*getPluginParameterTest()Ljava/lang/String;resolveTestRequest(Ljava/lang/String;Lorg/apache/maven/surefire/testset/IncludedExcludedPatterns;Ljava/util/Collection;Ljava/util/Collection;)VCaggregatedTest(Ljava/lang/String;Ljava/util/Set;)Ljava/lang/String; optionallyWildcardFilter(Lorg/apache/maven/surefire/testset/TestListResolver;)Lorg/apache/maven/surefire/testset/TestListResolver; isWildcard()Z$getIncludedPatterns()Ljava/util/Set;%isRegexMinLength(Ljava/lang/String;)Z(Ljava/lang/String;)V]hasExcludedMethodPatterns()ZhasMethodPatterns()Z4toClassFileName(Ljava/lang/Class;)Ljava/lang/String;;removeExclamationMark(Ljava/lang/String;)Ljava/lang/String; ()V46toString()Ljava/lang/String;(Ljava/util/Collection;)VABCDFHJLMOUVWXNgetEmptyTestListResolver()Lorg/apache/maven/surefire/testset/TestListResolver;$getExcludedPatterns()Ljava/util/Set;oSparse(Ljava/lang/CharSequence;)Lorg/junit/jupiter/engine/extension/TimeoutDuration;6789:;<> ()V +%*+,-./012 ()V#pq +GgetDefaultExecutionMode()Lorg/junit/jupiter/api/parallel/ExecutionMode;CLgetDefaultDisplayNameGenerator()Lorg/junit/jupiter/api/DisplayNameGenerator;\"isExtensionAutoDetectionEnabled()Z>NgetDefaultClassesExecutionMode()Lorg/junit/jupiter/api/parallel/ExecutionMode;IJOgetDefaultTestInstanceLifecycle()Lorg/junit/jupiter/api/TestInstance$Lifecycle;O;getExecutionConditionFilter()Ljava/util/function/Predicate;V ()V"%(isParallelExecutionEnabled()Z9DgetRawConfigurationParameter(Ljava/lang/String;)Ljava/util/Optional;4<(Lorg/junit/platform/engine/ConfigurationParameters;)V-.rsHtryLoadClass(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;QnewInstance(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;_cgkhinvokeMethodWithArray(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;EloadClass(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;instantiateTwoArgs(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;[getMethod(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;)ZgetMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;04DinvokeGetter(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;FninvokeStaticMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;RgetConstructor(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;SW^invokeSetter(Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/lang/Object;)Ljava/lang/Object;qinstantiateOneArg(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;VinvokeSetter(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)ViinvokeMethodWithArray2(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; ()V UinvokeGetter(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;KLsinstantiateObject(Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/ClassLoader;)Ljava/lang/Object;Yinstantiate(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;stx|\invokeMethodChain([Ljava/lang/Class;[Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; + ()V#$]tryGetMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;<@t(Ljava/lang/String;)V%0(Ljava/lang/String;Ljava/lang/Throwable;)V) ()V!uvwDparameterTypesAsString(Ljava/lang/reflect/Method;)Ljava/lang/String;MNx +newConfigurationParameters()Ljava/util/Map; Einvoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult; lpqrtvxz|9getPropertiesList(Ljava/lang/String;)Ljava/util/Optional;/newFilters()[Lorg/junit/platform/engine/Filter; jinvokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;Lorg/apache/maven/surefire/report/RunListener;)V:scanClasspath()Lorg/apache/maven/surefire/util/TestsToRun;C(Lorg/apache/maven/surefire/providerapi/ProviderParameters;)VVi(Lorg/apache/maven/surefire/providerapi/ProviderParameters;Lorg/junit/platform/launcher/Launcher;)VZ[\]^_getSuites()Ljava/lang/Iterable;e/getFilters()[Lorg/junit/platform/engine/Filter;buildLauncherDiscoveryRequest(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/junit/platform/launcher/LauncherDiscoveryRequest;+getConfigurationParameters()Ljava/util/Map;yzproceed()Ljava/lang/Object;j(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;)Vbcdeskip()Vo{HgetStackTraceWriter()Lorg/apache/maven/surefire/report/StackTraceWriter;getElapsed()Ljava/lang/Integer;s(Ljava/lang/String;Ljava/lang/String;Lorg/apache/maven/surefire/report/StackTraceWriter;Ljava/lang/Integer;)Vf@(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)VC!getSourceName()Ljava/lang/String;(Ljava/lang/String;Ljava/lang/String;Lorg/apache/maven/surefire/report/StackTraceWriter;Ljava/lang/Integer;Ljava/util/Map;)Vlsignored(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/maven/surefire/report/SimpleReportEntry;v$getNameWithGroup()Ljava/lang/String;`(Ljava/lang/String;Ljava/lang/String;Lorg/apache/maven/surefire/report/StackTraceWriter;)V>equals(Ljava/lang/Object;)ZgetGroup()Ljava/lang/String;CisStackEqual(Lorg/apache/maven/surefire/report/SimpleReportEntry;)ZUsafeGetMessage(Lorg/apache/maven/surefire/report/StackTraceWriter;)Ljava/lang/String;getName()Ljava/lang/String;IisElapsedTimeEqual(Lorg/apache/maven/surefire/report/SimpleReportEntry;)Zvassumption(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/maven/surefire/report/SimpleReportEntry;qgetMessage()Ljava/lang/String;<(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V9 hashCode()I?(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)VHwithException(Ljava/lang/String;Ljava/lang/String;Lorg/apache/maven/surefire/report/StackTraceWriter;)Lorg/apache/maven/surefire/report/SimpleReportEntry;{-(Ljava/lang/String;Ljava/lang/String;)V4DisSourceEqual(Lorg/apache/maven/surefire/report/SimpleReportEntry;)ZBisNameEqual(Lorg/apache/maven/surefire/report/SimpleReportEntry;)Z(Ljava/lang/String;Ljava/lang/String;Lorg/apache/maven/surefire/report/StackTraceWriter;Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Map;)V MNPRTWY[]_atoString()Ljava/lang/String;$getSystemProperties()Ljava/util/Map; ()V/| CgetSingleton()Lorg/apache/maven/surefire/booter/DumpErrorSingleton;2=dumpStreamException(Ljava/lang/Throwable;Ljava/lang/String;)VL#dumpStreamText(Ljava/lang/String;)VVdumpText(Ljava/lang/String;)VG>createDumpFile(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;[ ()V' ()V-'init(Ljava/io/File;Ljava/lang/String;)V78%dumpException(Ljava/lang/Throwable;)VB7dumpException(Ljava/lang/Throwable;Ljava/lang/String;)V=DcreateDumpStreamFile(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;`+dumpStreamException(Ljava/lang/Throwable;)VQ} ()V cancel()V#%')~(Ljava/lang/Class;)V567 hashCode()Igequals(Ljava/lang/Object;)ZWXZ[]^glambda$getJavaClass$0(Ljava/lang/Exception;)Lorg/junit/platform/commons/PreconditionViolationException;K(Ljava/lang/String;)V12 getClassName()Ljava/lang/String;>toString()Ljava/lang/String;lgetJavaClass()Ljava/lang/Class;IJN lambda$resolveUniqueIdIntoTestDescriptor$4(Lorg/junit/platform/engine/UniqueId$Segment;Lorg/junit/jupiter/engine/config/JupiterConfiguration;Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Optional;xcreateUniqueId(Ljava/lang/reflect/Method;Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/engine/UniqueId;_(Ljava/lang/String;ILjava/util/function/Predicate;Ljava/lang/String;[Ljava/lang/String;)Vresolve(Ljava/util/List;Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Ljava/util/Optional;lambda$resolve$1(Ljava/lang/reflect/Method;Ljava/lang/Class;Lorg/junit/jupiter/engine/config/JupiterConfiguration;Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Optional;resolveUniqueIdIntoTestDescriptor(Lorg/junit/platform/engine/UniqueId;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Ljava/util/Optional; ()V[selectClass(Ljava/util/List;Ljava/lang/Class;)Lorg/junit/platform/engine/DiscoverySelector;(Ljava/lang/String;ILjava/util/function/Predicate;Ljava/lang/String;[Ljava/lang/String;Lorg/junit/jupiter/engine/discovery/MethodSelectorResolver$1;)VEdeserialize()Lorg/apache/maven/surefire/booter/ProviderConfiguration;!GHIKLMOPRSTVWXY[]_adeijlnprstvwxy(Ljava/io/InputStream;)V9:QgetProviderConfiguration()Lorg/apache/maven/surefire/booter/StartupConfiguration;getPluginPid()Ljava/lang/Long;B(Ljava/lang/Class;)Ve hashCode()Ifrom(Ljava/lang/Class;Lorg/junit/platform/engine/support/descriptor/FilePosition;)Lorg/junit/platform/engine/support/descriptor/ClassSource;T getClassName()Ljava/lang/String;uequals(Ljava/lang/Object;)Zglambda$getJavaClass$0(Ljava/lang/Exception;)Lorg/junit/platform/commons/PreconditionViolationException;(Ljava/lang/String;)V\from(Ljava/lang/String;Lorg/junit/platform/engine/support/descriptor/FilePosition;)Lorg/junit/platform/engine/support/descriptor/ClassSource;@V(Ljava/lang/String;Lorg/junit/platform/engine/support/descriptor/FilePosition;)V_`atoString()Ljava/lang/String;!getPosition()Ljava/util/Optional;Rfrom(Ljava/lang/String;)Lorg/junit/platform/engine/support/descriptor/ClassSource;5U(Ljava/lang/Class;Lorg/junit/platform/engine/support/descriptor/FilePosition;)VhijkQfrom(Ljava/lang/Class;)Lorg/junit/platform/engine/support/descriptor/ClassSource;IgetJavaClass()Ljava/lang/Class;Ncall(Ljava/util/concurrent/Callable;)Lorg/junit/platform/commons/function/Try;89DcheckNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;TVXDsuccess(Ljava/lang/Object;)Lorg/junit/platform/commons/function/Try;DGfailure(Ljava/lang/Exception;)Lorg/junit/platform/commons/function/Try;O4(Lorg/junit/platform/commons/function/Try$1;)V*Lof(Ljava/util/concurrent/Callable;)Lorg/junit/platform/commons/function/Try;]` ()Vd'enumEntries()Lkotlin/enums/EnumEntries;encode(C)Ljava/lang/String;696getDefault()Lorg/junit/platform/engine/UniqueIdFormat;-2checkAllowed(Ljava/lang/String;)Ljava/lang/String;opqrs)checkDoesNotContain(Ljava/lang/String;C)Vwquote(C)Ljava/lang/String;1,encode(Ljava/lang/String;)Ljava/lang/String;,decode(Ljava/lang/String;)Ljava/lang/String;Hdescribe(Lorg/junit/platform/engine/UniqueId$Segment;)Ljava/lang/String;=parse(Ljava/lang/String;)Lorg/junit/platform/engine/UniqueId;_`a>format(Lorg/junit/platform/engine/UniqueId;)Ljava/lang/String; ()V*McreateSegment(Ljava/lang/String;)Lorg/junit/platform/engine/UniqueId$Segment;efgijk (CCCC)VBDEFGHIJPQRSTUClambda$checkDoesNotContain$0(Ljava/lang/String;C)Ljava/lang/String;x write(I)Vp ()Vi resolveParameter(Lorg/junit/jupiter/api/extension/ParameterContext;Ljava/lang/reflect/Executable;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;resolveParameters(Ljava/lang/reflect/Method;Ljava/util/Optional;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)[Ljava/lang/Object;resolveParameters(Ljava/lang/reflect/Executable;Ljava/util/Optional;Ljava/util/Optional;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)[Ljava/lang/Object;  ()V34invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;^_`abvalidateResolvedType(Ljava/lang/reflect/Parameter;Ljava/lang/Object;Ljava/lang/reflect/Executable;Lorg/junit/jupiter/api/extension/ParameterResolver;)V +9asLabel(Ljava/lang/reflect/Executable;)Ljava/lang/String; ()V1lambda$resolveParameter$2(Lorg/junit/jupiter/api/extension/ParameterResolver;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ParameterContext;Ljava/lang/reflect/Executable;)Ljava/lang/String;invoke(Ljava/lang/reflect/Constructor;Ljava/util/Optional;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;JLMQinvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall;)Ljava/lang/Object;h[lambda$invoke$0(Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;i@equalsType(Lorg/apache/maven/surefire/booter/TypeEncodedValue;)Z hashCode()IxyzisTypeClass()Z.equals(Ljava/lang/Object;)Zfhjloq#getDecodedValue()Ljava/lang/Object;3-(Ljava/lang/String;Ljava/lang/String;)V'():getDecodedValue(Ljava/lang/ClassLoader;)Ljava/lang/Object;8:<>@BDFHJLNPRUVZ_AequalsValue(Lorg/apache/maven/surefire/booter/TypeEncodedValue;)ZMlogFailureMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Exception;)V4 ()VRlambda$logFailureMessage$5(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;5get(Lorg/junit/platform/engine/ConfigurationParameters;Ljava/lang/String;Ljava/util/function/Supplier;)Lorg/junit/jupiter/api/DisplayNameGenerator; !"#$?logGeneratorClassMessage(Ljava/lang/String;Ljava/lang/String;)V< ()VNinstantiateGenerator(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional;*+,-./~getTestInstances(Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;)Lorg/junit/jupiter/api/extension/TestInstances;(Ljava/lang/String;)V'0(Ljava/lang/String;Ljava/lang/Throwable;)V+ ()V#(invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(Ljava/lang/Class;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/jupiter/engine/descriptor/TestMethodTestDescriptor$CallbackInvoker;)Vlambda$invokeTestWatchers$16(Lorg/junit/jupiter/api/extension/TestWatcher;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/String;finvokeAfterTestExecutionCallbacks(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Vexecute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;lambda$invokeTestExecutionExceptionHandlers$7(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/TestExecutionExceptionHandler;Ljava/lang/Throwable;)Vlambda$invokeAllAfterMethodsOrCallbacks$13(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector;Lorg/junit/jupiter/engine/descriptor/TestMethodTestDescriptor$CallbackInvoker;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/Extension;)Vlambda$prepare$0(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;Lorg/junit/jupiter/engine/descriptor/MethodExtensionContext;)VlminvokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Vlambda$nodeSkipped$14(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$SkipResult;Lorg/junit/jupiter/api/extension/TestWatcher;)V(Lorg/junit/platform/engine/UniqueId;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/jupiter/engine/config/JupiterConfiguration;Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall;)VZ[ginvokeBeforeTestExecutionCallbacks(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Vlambda$invokeAfterEachCallbacks$11(Lorg/junit/jupiter/api/extension/AfterEachCallback;Lorg/junit/jupiter/api/extension/ExtensionContext;)VinvokeBeforeEachExecutionExceptionHandlers(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Ljava/lang/Throwable;)Vlambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V]invokeAfterEachCallbacks(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V8getType()Lorg/junit/platform/engine/TestDescriptor$Type;`lambda$nodeFinished$15(Lorg/junit/platform/engine/TestExecutionResult$Status;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/platform/engine/TestExecutionResult;Lorg/junit/jupiter/api/extension/TestWatcher;)VnodeSkipped(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/support/hierarchical/Node$SkipResult;)Vlambda$invokeAfterEachMethods$9(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/AfterEachMethodAdapter;Lorg/junit/jupiter/api/extension/ExtensionContext;)VinvokeAfterEachExecutionExceptionHandlers(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Ljava/lang/Throwable;)VnodeFinished(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/TestExecutionResult;)Vlambda$invokeTestWatchers$17(Ljava/util/function/Consumer;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/jupiter/api/extension/TestWatcher;)Vlambda$invokeBeforeEachExecutionExceptionHandlers$3(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/LifecycleMethodExecutionExceptionHandler;Ljava/lang/Throwable;)V[invokeAfterEachMethods(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Vprepare(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext; +ghijkqrstuuinvokeTestWatchers(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;ZLjava/util/function/Consumer;)V(Lorg/junit/platform/engine/UniqueId;Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)VTUpopulateNewExtensionRegistry(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;zYisPerMethodLifecycle(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)ZinvokeAllAfterMethodsOrCallbacks(Ljava/lang/Class;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/jupiter/engine/descriptor/TestMethodTestDescriptor$CallbackInvoker;)Vlambda$invokeAfterTestExecutionCallbacks$8(Lorg/junit/jupiter/api/extension/AfterTestExecutionCallback;Lorg/junit/jupiter/api/extension/ExtensionContext;)Vlambda$invokeBeforeEachMethods$2(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/BeforeEachMethodAdapter;Lorg/junit/jupiter/api/extension/ExtensionContext;)Vlambda$invokeAfterEachExecutionExceptionHandlers$10(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/api/extension/LifecycleMethodExecutionExceptionHandler;Ljava/lang/Throwable;)V ()VKLM\invokeBeforeEachMethods(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)VjinvokeTestInstancePreDestroyCallbacks(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V^invokeBeforeEachCallbacks(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)VinvokeTestExecutionExceptionHandlers(Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/Throwable;)Vlambda$invokeBeforeTestExecutionCallbacks$4(Lorg/junit/jupiter/api/extension/BeforeTestExecutionCallback;Lorg/junit/jupiter/api/extension/ExtensionContext;)Vlambda$invokeBeforeEachCallbacks$1(Lorg/junit/jupiter/api/extension/BeforeEachCallback;Lorg/junit/jupiter/api/extension/ExtensionContext;)V(Ljava/lang/String;)V0(Ljava/lang/String;Ljava/lang/Throwable;)V# ()V*,rethrowIfBlacklisted(Ljava/lang/Throwable;)V89 ()VLRWaioAapply(Ljava/lang/Object;)Lorg/junit/platform/engine/FilterResult;$ ()V!+toPredicate()Ljava/util/function/Predicate;) ()V,(Ljava/lang/Class;Ljava/lang/String;)V jget(Lorg/junit/platform/engine/ConfigurationParameters;Ljava/lang/String;Ljava/lang/Enum;)Ljava/lang/Enum; $&'(*+,.23: ()VTlambda$get$1(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Enum;)Ljava/lang/String;6 isNotBlank(Ljava/lang/String;)Z{BunescapeString(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;)V  digit(C)IisBlank(Ljava/lang/String;)Zn ()V79<BEGEescapeToPrintable(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;)V >split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;QUY\]_a7startsWith(Ljava/lang/StringBuffer;Ljava/lang/String;)Z ()VJKHunescapeBytes(Ljava/lang/String;Ljava/lang/String;)Ljava/nio/ByteBuffer;`escapeBytesToPrintable([B[BII)Lorg/apache/maven/surefire/util/internal/StringUtils$EncodedArray;6encodeStringForForkCommunication(Ljava/lang/String;)[B ()V'-38alambda$get$0(Ljava/util/function/Function;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;vy{Hget(Ljava/lang/String;Ljava/util/function/Function;)Ljava/util/Optional;st run()VPQRTlambda$resolve$2(Lorg/junit/platform/engine/DiscoverySelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;~fenqueueAdditionalSelectors(Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;)VklAresolveCompletely(Lorg/junit/platform/engine/DiscoverySelector;)V XY[\]^aefgetContext(Lorg/junit/platform/engine/DiscoverySelector;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;access$000(Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolution;)Lorg/junit/platform/engine/TestDescriptor;9[resolveUniqueId(Lorg/junit/platform/engine/discovery/UniqueIdSelector;)Ljava/util/Optional;Jresolve(Lorg/junit/platform/engine/DiscoverySelector;)Ljava/util/Optional;wxz{}lambda$resolve$5(Lorg/junit/platform/engine/DiscoverySelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;jlambda$enqueueAdditionalSelectors$1(Lorg/junit/platform/engine/support/discovery/SelectorResolver$Match;)Vmnopqgresolve(Lorg/junit/platform/engine/DiscoverySelector;Ljava/util/function/Function;)Ljava/util/Optional;(Lorg/junit/platform/engine/EngineDiscoveryRequest;Lorg/junit/platform/engine/TestDescriptor;Ljava/util/List;Ljava/util/List;)V @ABCFGHIJKL(Ljava/net/URI;)V,- hashCode()IMequals(Ljava/lang/Object;)Z=>@ACDtoString()Ljava/lang/String;R getClasspathRoot()Ljava/net/URI;4containsExactly(I)ZGaccess$100(Lorg/apache/maven/surefire/util/TestsToRun;)Ljava/util/List;'allowEagerReading()Z isFinished()ZmarkTestSetFinished()V{'containsAtLeast(Ljava/util/Iterator;I)Ziterator()Ljava/util/Iterator;O%getLocatedClasses()[Ljava/lang/Class;(Ljava/util/Set;)V56containsAtLeast(I)Ziterated()Ljava/util/Iterator;DtoString()Ljava/lang/String;%newWeakIterator()Ljava/util/Iterator;GfromClass(Ljava/lang/Class;)Lorg/apache/maven/surefire/util/TestsToRun;<3getClassByName(Ljava/lang/String;)Ljava/lang/Class;YloadProperties(Ljava/io/InputStream;)Lorg/apache/maven/surefire/booter/PropertiesWrapper;123468<LwritePropertiesFile(Ljava/io/File;Ljava/lang/String;Ljava/util/Properties;)V_c$setSystemProperties(Ljava/io/File;)VIJZwritePropertiesFile(Ljava/util/Properties;Ljava/io/File;Ljava/lang/String;Z)Ljava/io/File;QRTWY ()V"RloadProperties(Ljava/io/File;)Lorg/apache/maven/surefire/booter/PropertiesWrapper;Cclose(Ljava/io/InputStream;)Vm + hashCode()Iequals(Ljava/lang/Object;)Z(Ljava/lang/String;)VwxzisValid(Ljava/lang/String;)ZVWY[\]^getName()Ljava/lang/String; ()V67toString()Ljava/lang/String;4doesNotContainReservedCharacter(Ljava/lang/String;)Zb=create(Ljava/lang/String;)Lorg/junit/platform/engine/TestTag;t2lambda$new$0(Ljava/lang/String;)Ljava/lang/String;ytoByteArray()[B  +(I)V?IZ[\_`aAtoBufferedInputStream(Ljava/io/InputStream;)Ljava/io/InputStream;write(Ljava/io/InputStream;)I .toString(Ljava/lang/String;)Ljava/lang/String;needNewBuffer(I)V kmoptuvx{~ writeTo(Ljava/io/OutputStream;)V6toString(Ljava/nio/charset/Charset;)Ljava/lang/String; write(I)V write([BII)V ()V<size()ItoString()Ljava/lang/String;reset()V + ()VPBtoBufferedInputStream(Ljava/io/InputStream;I)Ljava/io/InputStream;close()V$toInputStream()Ljava/io/InputStream; ;config(Ljava/lang/Throwable;Ljava/util/function/Supplier;)VxQlog(Ljava/util/logging/Level;Ljava/lang/Throwable;Ljava/util/function/Supplier;)V9warn(Ljava/lang/Throwable;Ljava/util/function/Supplier;)Vd:trace(Ljava/lang/Throwable;Ljava/util/function/Supplier;)V(Ljava/lang/String;)VNOP ()VH:error(Ljava/lang/Throwable;Ljava/util/function/Supplier;)VZncreateLogRecord(Ljava/util/logging/Level;Ljava/lang/Throwable;Ljava/lang/String;)Ljava/util/logging/LogRecord;9info(Ljava/lang/Throwable;Ljava/util/function/Supplier;)Vn&config(Ljava/util/function/Supplier;)Vs5toStream(Ljava/lang/Object;)Ljava/util/stream/Stream;8getOnlyElement(Ljava/util/Collection;)Ljava/lang/Object;@ACAlambda$getOnlyElement$0(Ljava/util/Collection;)Ljava/lang/String;B)toSet([Ljava/lang/Object;)Ljava/util/Set;PQRTUWXY0toUnmodifiableList()Ljava/util/stream/Collector;plambda$readAndStoreTimeoutSoChildrenInheritIt$0(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;)V=interceptTestMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VTgetDefaultTimeout(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Lorg/junit/jupiter/engine/extension/TimeoutDuration;interceptTestTemplateMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V\Gintercept(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;1decorate(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutDuration;)Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;lambda$decorate$2(Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/String;interceptTestFactoryMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;dinterceptBeforeEachMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VL[readAndStoreTimeoutSoChildrenInheritIt(Lorg/junit/jupiter/api/extension/ExtensionContext;)V<interceptAfterAllMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VtngetExecutor(Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/util/concurrent/ScheduledExecutorService;interceptAfterEachMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Vl>beforeAll(Lorg/junit/jupiter/api/extension/ExtensionContext;)V3!interceptTestableMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)Ljava/lang/Object;&isTimeoutDisabled(Ljava/lang/String;)ZFisTimeoutDisabled(Lorg/junit/jupiter/api/extension/ExtensionContext;)Zdescribe(Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/String;getGlobalTimeoutConfiguration(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/engine/extension/TimeoutConfiguration;lambda$getGlobalTimeoutConfiguration$1(Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/String;)Lorg/junit/jupiter/engine/extension/TimeoutConfiguration;interceptBeforeAllMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VDinterceptLifecycleMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/TimeoutExtension$TimeoutProvider;)V|~CreadTimeoutFromAnnotation(Ljava/util/Optional;)Ljava/util/Optional; ()V*?beforeEach(Lorg/junit/jupiter/api/extension/ExtensionContext;)V8 ()V( ()V_fm getDisplayNameGenerator(Ljava/lang/Class;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Lorg/junit/jupiter/api/DisplayNameGenerator;[]^_hdetermineDisplayNameForMethod(Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Ljava/lang/String;LMcreateDisplayNameSupplierForClass(Ljava/lang/Class;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Ljava/util/function/Supplier;QcreateDisplayNameSupplierForNestedClass(Ljava/lang/Class;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Ljava/util/function/Supplier;VidetermineDisplayName(Ljava/lang/reflect/AnnotatedElement;Ljava/util/function/Supplier;)Ljava/lang/String;789:>?CG ()V*/4_lambda$getDisplayNameGenerator$4(Ljava/lang/Class;)Lorg/junit/jupiter/api/DisplayNameGenerator;`acdf?getDisplayNameGeneration(Ljava/lang/Class;)Ljava/util/Optional;qstuwxy ()V( (Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V -/0234569:;$publishReportEntry(Ljava/util/Map;)VXgetTags()Ljava/util/Set;u~getStore(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;)Lorg/junit/jupiter/api/extension/ExtensionContext$Store;no=getTestDescriptor()Lorg/junit/platform/engine/TestDescriptor;igetUniqueId()Ljava/lang/String;N;getRoot()Lorg/junit/jupiter/api/extension/ExtensionContext;bcegetParent()Ljava/util/Optional;]xcreateStore(Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;@ABDclose()VI"getDisplayName()Ljava/lang/String;SAgetConfigurationParameter(Ljava/lang/String;)Ljava/util/Optional;z(Ljava/lang/Throwable;)V( :containsTests(Lorg/junit/platform/engine/TestDescriptor;)Zprune()VgetDescendants()Ljava/util/Set;vwxy{isContainer()Z isTest()Z*getLegacyReportingName()Ljava/lang/String;D;accept(Lorg/junit/platform/engine/TestDescriptor$Visitor;)V isRoot()ZmayRegisterTests()Z_includePackageNames([Ljava/lang/String;)Lorg/junit/platform/engine/discovery/PackageNameFilter;.\excludePackageNames(Ljava/util/List;)Lorg/junit/platform/engine/discovery/PackageNameFilter;d_excludePackageNames([Ljava/lang/String;)Lorg/junit/platform/engine/discovery/PackageNameFilter;R\includePackageNames(Ljava/util/List;)Lorg/junit/platform/engine/discovery/PackageNameFilter;@BtestPlanExecutionFinished(Lorg/junit/platform/launcher/TestPlan;)VB?executionStarted(Lorg/junit/platform/launcher/TestIdentifier;)VswreportingEntryPublished(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/reporting/ReportEntry;)VAtestPlanExecutionStarted(Lorg/junit/platform/launcher/TestPlan;)V9QexecutionSkipped(Lorg/junit/platform/launcher/TestIdentifier;Ljava/lang/String;)VaDdynamicTestRegistered(Lorg/junit/platform/launcher/TestIdentifier;)VNoexecutionFinished(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;)V1newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;p(Ljava/lang/String;)VijZ(Ljava/lang/String;Lorg/apache/maven/surefire/util/internal/DaemonThreadFactory$1;)Vb@generateDisplayNameForClass(Ljava/lang/Class;)Ljava/lang/String;[\]FgenerateDisplayNameForNestedClass(Ljava/lang/Class;)Ljava/lang/String;b ()VW[generateDisplayNameForMethod(Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/String;g getArray()[BNaccess$000()Lorg/apache/maven/surefire/util/internal/StringUtils$EncodedArray; ([BI)V ()V +getSize()IinvokeExecutionExceptionHandlers(Ljava/lang/Class;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Ljava/lang/Throwable;Lorg/junit/jupiter/engine/descriptor/JupiterTestDescriptor$ExceptionHandlerInvoker;)Vn2getDefaultChildExecutionMode()Ljava/util/Optional;UgetExecutionMode()Lorg/junit/platform/engine/support/hierarchical/Node$ExecutionMode;Ilambda$getTags$1(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/String;)ZUV\`XgetExclusiveResourcesFromAnnotation(Ljava/lang/reflect/AnnotatedElement;)Ljava/util/Set;.getExplicitExecutionMode()Ljava/util/Optional;(Lorg/junit/platform/engine/UniqueId;Ljava/lang/String;Lorg/junit/platform/engine/TestSource;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)VJKinvokeExecutionExceptionHandlers(Ljava/util/List;Ljava/lang/Throwable;Lorg/junit/jupiter/engine/descriptor/JupiterTestDescriptor$ExceptionHandlerInvoker;)Vuv{~ ()V=?toSkipResult(Lorg/junit/jupiter/api/extension/ConditionEvaluationResult;)Lorg/junit/platform/engine/support/hierarchical/Node$SkipResult;(Lorg/junit/platform/engine/UniqueId;Ljava/lang/reflect/AnnotatedElement;Ljava/util/function/Supplier;Lorg/junit/platform/engine/TestSource;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)VE(Lorg/apache/maven/surefire/booter/ForkedBooter;)Vtest(Ljava/lang/Class;)Z"#% ()V ()Vrun()Vu(Lorg/apache/maven/surefire/booter/ForkedBooter;Lorg/apache/maven/surefire/booter/ForkedBooter$PingScheduler;)V3update(Lorg/apache/maven/surefire/booter/Command;)Vc(Lorg/apache/maven/surefire/booter/ForkedBooter;Ljava/util/concurrent/atomic/AtomicBoolean;)V3update(Lorg/apache/maven/surefire/booter/Command;)V +8(Lorg/apache/maven/surefire/booter/ForkedBooter;)Vrun()V(Lorg/apache/maven/surefire/booter/ForkedBooter;Lorg/apache/maven/surefire/booter/PpidChecker;Ljava/util/concurrent/atomic/AtomicBoolean;)V3update(Lorg/apache/maven/surefire/booter/Command;)VX(Lorg/apache/maven/surefire/booter/ForkedBooter;Ljava/util/concurrent/Semaphore;)Vrun()V9(Lorg/apache/maven/surefire/booter/ForkedBooter;I)Vulambda$injectFields$1(Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/reflect/Field;)VdfiresolveParameter(Lorg/junit/jupiter/api/extension/ParameterContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;>beforeAll(Lorg/junit/jupiter/api/extension/ExtensionContext;)VJinjectFields(Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/Object;Ljava/lang/Class;Ljava/util/function/Predicate;)Vc5assertValidFieldCandidate(Ljava/lang/reflect/Field;)VopqdgetPathOrFile(Ljava/lang/Class;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;OcreateTempDir()Lorg/junit/jupiter/engine/extension/TempDirectory$CloseablePath;xsupportsParameter(Lorg/junit/jupiter/api/extension/ParameterContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Z{|}9assertSupportedType(Ljava/lang/String;Ljava/lang/Class;)V ()V??beforeEach(Lorg/junit/jupiter/api/extension/ExtensionContext;)VTUXinjectStaticFields(Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/Class;)VY[injectInstanceFields(Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/Object;)V] ()V=(Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/jupiter/engine/descriptor/JupiterEngineDescriptor;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V#getTestMethod()Ljava/util/Optional;<+getExecutionException()Ljava/util/Optional;A&getTestInstances()Ljava/util/Optional;7"getTestClass()Ljava/util/Optional;(%getTestInstance()Ljava/util/Optional;2.getTestInstanceLifecycle()Ljava/util/Optional;- getElement()Ljava/util/Optional;#*hasParameters(Ljava/lang/reflect/Method;)Z@generateDisplayNameForClass(Ljava/lang/Class;)Ljava/lang/String;vFgenerateDisplayNameForNestedClass(Ljava/lang/Class;)Ljava/lang/String;{8replaceUnderscores(Ljava/lang/String;)Ljava/lang/String; ()Vr[generateDisplayNameForMethod(Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/String;&execute()Ljava/util/concurrent/Future;2345789(Lorg/junit/platform/engine/ExecutionRequest;Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService;Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Factory;)V*+,-.GgetDefaultExecutionMode()Lorg/junit/jupiter/api/parallel/ExecutionMode;;LgetDefaultDisplayNameGenerator()Lorg/junit/jupiter/api/DisplayNameGenerator;TNlambda$getDefaultTestInstanceLifecycle$4(Ljava/lang/String;)Ljava/lang/Object;HMlambda$getDefaultDisplayNameGenerator$6(Ljava/lang/String;)Ljava/lang/Object;U?(Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V!$%OgetDefaultTestInstanceLifecycle()Lorg/junit/jupiter/api/TestInstance$Lifecycle;GIlambda$isParallelExecutionEnabled$0(Ljava/lang/String;)Ljava/lang/Object;0DgetRawConfigurationParameter(Ljava/lang/String;)Ljava/util/Optional;*"isExtensionAutoDetectionEnabled()Z5NgetDefaultClassesExecutionMode()Lorg/junit/jupiter/api/parallel/ExecutionMode;AFlambda$getDefaultExecutionMode$2(Ljava/lang/String;)Ljava/lang/Object;<;getExecutionConditionFilter()Ljava/util/function/Predicate;NisParallelExecutionEnabled()Z/Nlambda$isExtensionAutoDetectionEnabled$1(Ljava/lang/String;)Ljava/lang/Object;6Mlambda$getDefaultClassesExecutionMode$3(Ljava/lang/String;)Ljava/lang/Object;BJlambda$getExecutionConditionFilter$5(Ljava/lang/String;)Ljava/lang/Object;O,remove(Ljava/lang/Object;)Ljava/lang/Object;HI)get(Ljava/lang/Object;)Ljava/lang/Object;&'WgetOrComputeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;345:get(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;,-.~(Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;)V !*put(Ljava/lang/Object;Ljava/lang/Object;)VBChgetOrComputeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;Ljava/lang/Class;)Ljava/lang/Object;:;<==remove(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;NOPPfindRepeatableAnnotations(Ljava/util/Optional;Ljava/lang/Class;)Ljava/util/List;IfindAnnotation(Ljava/util/Optional;Ljava/lang/Class;)Ljava/util/Optional;iCisAnnotated(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)ZTfindAnnotatedFields(Ljava/lang/Class;Ljava/lang/Class;Ljava/util/function/Predicate;Lorg/junit/platform/commons/support/HierarchyTraversalMode;)Ljava/util/List;findAnnotatedMethods(Ljava/lang/Class;Ljava/lang/Class;Lorg/junit/platform/commons/support/HierarchyTraversalMode;)Ljava/util/List;Nlambda$findAnnotatedFieldValues$1(Ljava/lang/Class;Ljava/lang/reflect/Field;)Z3isAnnotated(Ljava/util/Optional;Ljava/lang/Class;)ZD^findPublicAnnotatedFields(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;LfindAnnotatedFieldValues(Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;]findAnnotatedFieldValues(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;MfindAnnotatedFieldValues(Ljava/lang/Object;Ljava/lang/Class;)Ljava/util/List;YfindAnnotation(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/util/Optional;~GfindAnnotatedFields(Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;^findAnnotatedFieldValues(Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;`findRepeatableAnnotations(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/util/List;Nlambda$findAnnotatedFieldValues$2(Ljava/lang/Class;Ljava/lang/reflect/Field;)ZgetTags()Ljava/util/Set;i hashCode()IremoveFromHierarchy()V?(Lorg/junit/platform/engine/UniqueId;Ljava/lang/String;)VHgetSource()Ljava/util/Optional;ne(Lorg/junit/platform/engine/UniqueId;Ljava/lang/String;Lorg/junit/platform/engine/TestSource;)V;WXYZ8removeChild(Lorg/junit/platform/engine/TestDescriptor;)V6setParent(Lorg/junit/platform/engine/TestDescriptor;)VxgetChildren()Ljava/util/Set;}getParent()Ljava/util/Optional;s1getUniqueId()Lorg/junit/platform/engine/UniqueId;_HfindByUniqueId(Lorg/junit/platform/engine/UniqueId;)Ljava/util/Optional;equals(Ljava/lang/Object;)Z5addChild(Lorg/junit/platform/engine/TestDescriptor;)VtoString()Ljava/lang/String;"getDisplayName()Ljava/lang/String;d>lambda$get$2(Ljava/lang/String;)Ljava/util/function/Predicate;$%'$lambda$static$1(Ljava/lang/Object;)Zhget(Lorg/junit/platform/engine/ConfigurationParameters;Ljava/lang/String;)Ljava/util/function/Predicate; !"#) ()V$lambda$static$0(Ljava/lang/Object;)Z>matchesRegex(Ljava/lang/String;)Ljava/util/function/Predicate;./4convertToRegEx(Ljava/lang/String;)Ljava/lang/String;7;>@ isKnown(Ljava/lang/String;)Z@BDG"listParameters()Ljava/lang/String;LMOQSU ()V ! isExit()Z6JparameterOf(Ljava/lang/String;)Lorg/apache/maven/surefire/booter/Shutdown;Z\^aisDefaultShutdown()Z;getParam()Ljava/lang/String;, isKill()Z1.(Ljava/lang/String;ILjava/lang/String;)V&'A([Lorg/apache/maven/surefire/util/RunOrder;Ljava/io/File;)V#$%)(Ljava/lang/String;Ljava/io/File;)V)*+7getRunOrder()[Lorg/apache/maven/surefire/util/RunOrder;5$getRunStatisticsFile()Ljava/io/File;:Dalphabetical()Lorg/apache/maven/surefire/testset/RunOrderParameters;0 ()VW\aresolve(Lorg/junit/platform/engine/discovery/ModuleSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;0resolve(Lorg/junit/platform/engine/discovery/ClasspathRootSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;+E(Ljava/util/function/Predicate;Ljava/util/function/Predicate;)V$%&resolve(Lorg/junit/platform/engine/discovery/PackageSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;5iclassSelectors(Ljava/util/List;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;9:<}3copy(Ljava/io/InputStream;Ljava/io/OutputStream;I)J 6toInputStream(Ljava/lang/String;)Ljava/io/InputStream;0readLines(Ljava/io/InputStream;)Ljava/util/List;readFully(Ljava/io/Reader;[C)V.'toByteArray(Ljava/net/URLConnection;)[B()V0toString([BLjava/lang/String;)Ljava/lang/String;Hwrite(Ljava/lang/CharSequence;Ljava/io/OutputStream;Ljava/lang/String;)V&closeQuietly(Ljava/net/ServerSocket;)V;buffer(Ljava/io/InputStream;I)Ljava/io/BufferedInputStream; + + +%readFully(Ljava/io/InputStream;[BII)V///>copy(Ljava/io/InputStream;Ljava/io/Writer;Ljava/lang/String;)V#toCharArray(Ljava/io/InputStream;Ljava/nio/charset/Charset;)[CBreadLines(Ljava/io/InputStream;Ljava/lang/String;)Ljava/util/List;$toCharArray(Ljava/io/InputStream;)[C9contentEqualsIgnoreEOL(Ljava/io/Reader;Ljava/io/Reader;)Z +))))))))))]writeLines(Ljava/util/Collection;Ljava/lang/String;Ljava/io/OutputStream;Ljava/lang/String;)V+closeQuietly(Ljava/nio/channels/Selector;)V*toString(Ljava/net/URL;)Ljava/lang/String;9copyLarge(Ljava/io/InputStream;Ljava/io/OutputStream;JJ)J"toByteArray(Ljava/net/URI;)[B #closeQuietly([Ljava/io/Closeable;)V write([CLjava/io/OutputStream;)V?copy(Ljava/io/Reader;Ljava/io/OutputStream;Ljava/lang/String;)V''writeChunked([BLjava/io/OutputStream;)V7copyLarge(Ljava/io/InputStream;Ljava/io/OutputStream;)J!closeQuietly(Ljava/io/Reader;)V*toString(Ljava/net/URI;)Ljava/lang/String;:buffer(Ljava/io/InputStream;)Ljava/io/BufferedInputStream; + + ++readLines(Ljava/io/Reader;)Ljava/util/List;closeQuietly(Ljava/io/Writer;)VtoString([B)Ljava/lang/String;-copy(Ljava/io/Reader;Ljava/io/OutputStream;)V&HreadFully(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;)V/000AtoBufferedInputStream(Ljava/io/InputStream;)Ljava/io/InputStream;9copyLarge(Ljava/io/InputStream;Ljava/io/OutputStream;[B)J!!!!!:contentEquals(Ljava/io/InputStream;Ljava/io/InputStream;)Z'''''(((((((((KwriteLines(Ljava/util/Collection;Ljava/lang/String;Ljava/io/OutputStream;)V"closeQuietly(Ljava/io/Closeable;)VJreadLines(Ljava/io/InputStream;Ljava/nio/charset/Charset;)Ljava/util/List;blineIterator(Ljava/io/Reader;)Lorg/apache/maven/surefire/shade/org/apache/commons/io/LineIterator;0buffer(Ljava/io/Reader;)Ljava/io/BufferedReader; 6toCharArray(Ljava/io/InputStream;Ljava/lang/String;)[C4skipFully(Ljava/nio/channels/ReadableByteChannel;J)V+++++ closeQuietly(Ljava/net/Socket;)V#readFully(Ljava/io/InputStream;I)[B///DtoString(Ljava/net/URI;Ljava/nio/charset/Charset;)Ljava/lang/String;,toString(Ljava/io/Reader;)Ljava/lang/String;=buffer(Ljava/io/OutputStream;I)Ljava/io/BufferedOutputStream; + + +HtoInputStream(Ljava/lang/String;Ljava/lang/String;)Ljava/io/InputStream;0copyLarge(Ljava/io/Reader;Ljava/io/Writer;JJ[C)J%%%%%%%&&&&&&&2copy(Ljava/io/InputStream;Ljava/io/OutputStream;)I !toByteArray(Ljava/lang/String;)[B Hwrite(Ljava/lang/StringBuffer;Ljava/io/OutputStream;Ljava/lang/String;)V1toString(Ljava/io/InputStream;)Ljava/lang/String;$toByteArray(Ljava/io/InputStream;)[B 2write([CLjava/io/OutputStream;Ljava/lang/String;)VJwrite(Ljava/lang/String;Ljava/io/OutputStream;Ljava/nio/charset/Charset;)VPtoInputStream(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/io/InputStream;write([BLjava/io/Writer;)VskipFully(Ljava/io/Reader;J)V,,,toCharArray(Ljava/io/Reader;)[C.copyLarge(Ljava/io/Reader;Ljava/io/Writer;[C)J$%%%%ewriteLines(Ljava/util/Collection;Ljava/lang/String;Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V,write([BLjava/io/Writer;Ljava/lang/String;)V!writeChunked([CLjava/io/Writer;)VtoByteArray(Ljava/io/Reader;)[B DtoString(Ljava/net/URL;Ljava/nio/charset/Charset;)Ljava/lang/String;Fcopy(Ljava/io/InputStream;Ljava/io/Writer;Ljava/nio/charset/Charset;)V##%closeQuietly(Ljava/io/OutputStream;)V;toBufferedReader(Ljava/io/Reader;I)Ljava/io/BufferedReader;read(Ljava/io/InputStream;[B)I-()Vz*write(Ljava/lang/String;Ljava/io/Writer;)Vread(Ljava/io/Reader;[C)I-)getJavaMethod()Ljava/lang/reflect/Method;Xlambda$lazyLoadJavaMethod$2()Lorg/junit/platform/commons/PreconditionViolationException; hashCode()I?(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)VCDEFXlambda$lazyLoadJavaMethod$1()Lorg/junit/platform/commons/PreconditionViolationException; getClassName()Ljava/lang/String;`llambda$lazyLoadJavaClass$0(Ljava/lang/Exception;)Lorg/junit/platform/commons/PreconditionViolationException;+getMethodParameterTypes()Ljava/lang/String;y-(Ljava/lang/String;Ljava/lang/String;)V@!getMethodName()Ljava/lang/String;glazyLoadJavaClass()V,(Ljava/lang/Class;Ljava/lang/String;)VJ4(Ljava/lang/Class;Ljava/lang/reflect/Method;)VTUVWXYequals(Ljava/lang/Object;)ZtoString()Ljava/lang/String;lazyLoadJavaMethod()V>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)VMNOPQgetJavaClass()Ljava/lang/Class;proceed()Ljava/lang/Object;<getTarget()Ljava/util/Optional;,getArguments()Ljava/util/List;6!getTargetClass()Ljava/lang/Class;&J(Ljava/lang/reflect/Method;Ljava/util/Optional;[Ljava/lang/Object;)V !)getExecutable()Ljava/lang/reflect/Method;1!getAllInstances()Ljava/util/List;8(getInnermostInstance()Ljava/lang/Object;.3findInstance(Ljava/lang/Class;)Ljava/util/Optional;=>?@ABE'getEnclosingInstances()Ljava/util/List;3~of(Lorg/junit/jupiter/api/extension/TestInstances;Ljava/lang/Object;)Lorg/junit/jupiter/engine/execution/DefaultTestInstances;!"#Oof(Ljava/lang/Object;)Lorg/junit/jupiter/engine/execution/DefaultTestInstances;(Ljava/util/List;)V() ()V ()V '1toStrings(Ljava/util/Collection;)Ljava/util/List;34683fromStrings(Ljava/util/Collection;)Ljava/util/List;)*,. ()V!#$%0(Ljava/lang/String;Ljava/lang/Throwable;)V!(Ljava/lang/String;)V0(Ljava/lang/String;Ljava/lang/Throwable;)V!=hasTestOrTestFactoryOrTestTemplateMethods(Ljava/lang/Class;)Z2test(Ljava/lang/Class;)Z-."hasNestedTests(Ljava/lang/Class;)Z6 ()V "$%') ()VgetTestInstanceLifecycle(Ljava/lang/Class;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Lorg/junit/jupiter/api/TestInstance$Lifecycle;$%()* (Ljava/util/Map;)V'Dlambda$fromClasspathResource$2(Ljava/lang/String;)Ljava/lang/String;ITlambda$fromClasspathResource$0(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;<*(Ljava/util/Map;Ljava/lang/String;)V*+,-.?fromClasspathResource(Ljava/lang/String;)Ljava/util/Properties; 25689:?@BCHN+get(Ljava/lang/String;)Ljava/util/Optional;S ()V!size()IatoString()Ljava/lang/String;~2getBoolean(Ljava/lang/String;)Ljava/util/Optional;XYZ\1getProperty(Ljava/lang/String;)Ljava/lang/String;ehkmtuy#loadListeners()Ljava/lang/Iterable; !# ()V>lambda$loadListeners$0(Ljava/lang/Iterable;)Ljava/lang/String;" ()V(ZLjava/lang/String;)VXskip(Ljava/lang/String;)Lorg/junit/platform/engine/support/hierarchical/Node$SkipResult;KdoNotSkip()Lorg/junit/platform/engine/support/hierarchical/Node$SkipResult; isSkipped()Z ()VgetReason()Ljava/util/Optional;toString()Ljava/lang/String;-(Ljava/lang/String;Ljava/lang/String;)V"#$!getClassifier()Ljava/lang/String;.getVersion()Ljava/lang/String;)#getReportsDirectory()Ljava/io/File;?(Ljava/io/File;Z)V,-.5isTrimStackTrace()ZI+getOriginalSystemOut()Ljava/io/PrintStream;TcreateTestDescriptor(Lorg/junit/platform/engine/UniqueId;Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Lorg/junit/platform/engine/TestDescriptor;_(Ljava/lang/String;ILjava/util/function/Predicate;Ljava/lang/String;[Ljava/lang/String;)VcreateTestDescriptor(Lorg/junit/platform/engine/UniqueId;Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Lorg/junit/platform/engine/TestDescriptor;_(Ljava/lang/String;ILjava/util/function/Predicate;Ljava/lang/String;[Ljava/lang/String;)V"insertToQueue(Ljava/lang/String;)ZhsetShutdown(Lorg/apache/maven/surefire/booter/Shutdown;)Lorg/apache/maven/surefire/booter/CommandReader;ijawaitNextTest()VwakeupIterator()VDaddNoopListener(Lorg/apache/maven/surefire/booter/CommandListener;)VCremoveListener(Lorg/apache/maven/surefire/booter/CommandListener;)VFaddByeAckListener(Lorg/apache/maven/surefire/booter/CommandListener;)VMaddTestsFinishedListener(Lorg/apache/maven/surefire/booter/CommandListener;)V;getReader()Lorg/apache/maven/surefire/booter/CommandReader;_`bd@addListener(Lorg/apache/maven/surefire/booter/CommandListener;)Vstop()VMaddSkipNextTestsListener(Lorg/apache/maven/surefire/booter/CommandListener;)V=access$200(Lorg/apache/maven/surefire/booter/CommandReader;)Z@DaddTestListener(Lorg/apache/maven/surefire/booter/CommandListener;)VwaddListener(Lorg/apache/maven/surefire/booter/MasterProcessCommand;Lorg/apache/maven/surefire/booter/CommandListener;)VisQueueFull()Z=getIterableClasses(Ljava/io/PrintStream;)Ljava/lang/Iterable; isStopped()ZssetLogger(Lorg/apache/maven/plugin/surefire/log/api/ConsoleLogger;)Lorg/apache/maven/surefire/booter/CommandReader;opawaitStarted()Zvz{makeQueueFull()V ()VDHaddShutdownListener(Lorg/apache/maven/surefire/booter/CommandListener;)Viterated()Ljava/util/Iterator; ()VFIKMOQWZcreateTestDescriptor(Lorg/junit/platform/engine/UniqueId;Ljava/lang/Class;Ljava/lang/reflect/Method;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Lorg/junit/platform/engine/TestDescriptor;_(Ljava/lang/String;ILjava/util/function/Predicate;Ljava/lang/String;[Ljava/lang/String;)VZgetExecutionAdvisor()Lorg/junit/platform/engine/support/hierarchical/NodeExecutionAdvisor;.igetThrowableCollectorFactory()Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Factory;*dgetExecutorService()Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService;&@getListener()Lorg/junit/platform/engine/EngineExecutionListener;"(Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService;Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Factory;Lorg/junit/platform/engine/support/hierarchical/NodeExecutionAdvisor;)VHnotEmpty(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/Collection;~VcontainsNoNullElements(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/Collection;?notNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;67[containsNoNullElements([Ljava/lang/Object;Ljava/util/function/Supplier;)[Ljava/lang/Object;KnotBlank(Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/lang/String;*condition(ZLjava/util/function/Supplier;)VJnotNull(Ljava/lang/Object;Ljava/util/function/Supplier;)Ljava/lang/Object;DEMnotEmpty([Ljava/lang/Object;Ljava/util/function/Supplier;)[Ljava/lang/Object;jkPcontainsNoNullElements([Ljava/lang/Object;Ljava/lang/String;)[Ljava/lang/Object;@notBlank(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;BnotEmpty([Ljava/lang/Object;Ljava/lang/String;)[Ljava/lang/Object;WXSnotEmpty(Ljava/util/Collection;Ljava/util/function/Supplier;)Ljava/util/Collection;acontainsNoNullElements(Ljava/util/Collection;Ljava/util/function/Supplier;)Ljava/util/Collection;condition(ZLjava/lang/String;)V getTime()Ljava/lang/Comparable;UVAunixProcessInfo(JJ)Lorg/apache/maven/surefire/booter/ProcessInfo;-/(Ljava/lang/Long;Ljava/lang/Comparable;)V9:; checkValid()Vkm isInvalid()ZE +isError()ZJ=isTimeBefore(Lorg/apache/maven/surefire/booter/ProcessInfo;)Zdef canUse()Z@ ()V#$DwindowsProcessInfo(JJ)Lorg/apache/maven/surefire/booter/ProcessInfo;2 getPID()JOP>isTimeEqualTo(Lorg/apache/maven/surefire/booter/ProcessInfo;)Z\]^xsupportsParameter(Lorg/junit/jupiter/api/extension/ParameterContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Z! ()VresolveParameter(Lorg/junit/jupiter/api/extension/ParameterContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/TestInfo;&canExecuteLocalUnixPs()ZcanExecuteStandardUnixPs()Z7windows()Lorg/apache/maven/surefire/booter/ProcessInfo;'fromMinutes(Ljava/util/regex/Matcher;)J$fromDays(Ljava/util/regex/Matcher;)J unixPathToPS()Ljava/lang/String;=createWindowsCreationDateFormat()Ljava/text/SimpleDateFormat; +(J)VEST canUse()ZZ[ checkValid(Ljava/util/Scanner;)V4unix()Lorg/apache/maven/surefire/booter/ProcessInfo;destroyActiveCommands()V;access$000(Lorg/apache/maven/surefire/booter/PpidChecker;)J7checkProcessInfo()V isStopped()ZhasWmicStandardSystemPath()Z ()V=>KisProcessAlive()Ziknqstwy{|canExecuteUnixPs()Z%fromHours(Ljava/util/regex/Matcher;)J'fromSeconds(Ljava/util/regex/Matcher;)JAgetRootTestDescriptor()Lorg/junit/platform/engine/TestDescriptor;8(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/EngineExecutionListener;Lorg/junit/platform/engine/ConfigurationParameters;)V)*+,OgetConfigurationParameters()Lorg/junit/platform/engine/ConfigurationParameters;HOgetEngineExecutionListener()Lorg/junit/platform/engine/EngineExecutionListener;@\enableTestEngineAutoRegistration(Z)Lorg/junit/platform/launcher/core/LauncherConfig$Builder;8build()Lorg/junit/platform/launcher/core/LauncherConfig;paddTestEngines([Lorg/junit/platform/engine/TestEngine;)Lorg/junit/platform/launcher/core/LauncherConfig$Builder;addTestExecutionListeners([Lorg/junit/platform/launcher/TestExecutionListener;)Lorg/junit/platform/launcher/core/LauncherConfig$Builder; ()VgikmogenableTestExecutionListenerAutoRegistration(Z)Lorg/junit/platform/launcher/core/LauncherConfig$Builder;}~<(Lorg/junit/platform/launcher/core/LauncherConfig$1;)Ve isNotEmpty()Z+hasAbortedExecution(Ljava/lang/Throwable;)ZXexecute(Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Executable;)VILM'(Ljava/util/function/Predicate;)V78 +isEmpty()Z#getThrowable()Ljava/lang/Throwable;}assertEmpty()VFtoTestExecutionResult()Lorg/junit/platform/engine/TestExecutionResult;add(Ljava/lang/Throwable;)VY[\^_`bd(Ljava/lang/Class;Z)V !!test(Ljava/lang/reflect/Method;)Z '(*+-.014lambda$toResolution$13(Lorg/junit/jupiter/engine/descriptor/ClassBasedTestDescriptor;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;JselectClass(Ljava/util/List;)Lorg/junit/platform/engine/DiscoverySelector;eselectMethod(Ljava/util/List;Ljava/lang/reflect/Method;)Lorg/junit/platform/engine/DiscoverySelector;resolve(Lorg/junit/platform/engine/discovery/ClassSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;BCEFGJKNresolve(Lorg/junit/platform/engine/discovery/UniqueIdSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution; \]^_`bcefgr](Ljava/util/function/Predicate;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V;<=lambda$resolve$4(Lorg/junit/platform/engine/discovery/NestedClassSelector;Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Optional;Ualambda$resolve$8(Lorg/junit/platform/engine/TestDescriptor;Ljava/lang/Class;)Ljava/util/Optional;mlambda$resolve$6(Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;Ljava/lang/Class;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;aresolve(Lorg/junit/platform/engine/discovery/NestedClassSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;STWnewClassTestDescriptor(Lorg/junit/platform/engine/TestDescriptor;Ljava/lang/Class;)Lorg/junit/jupiter/engine/descriptor/ClassTestDescriptor;vw ()V56alambda$resolve$2(Ljava/lang/Class;Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Optional;Lblambda$resolve$9(Ljava/lang/String;Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Optional;hijkloHlambda$toResolution$12(Ljava/lang/Class;Ljava/util/List;)Ljava/util/Set;newNestedClassTestDescriptor(Lorg/junit/platform/engine/TestDescriptor;Ljava/lang/Class;)Lorg/junit/jupiter/engine/descriptor/NestedClassTestDescriptor;|}ktoResolution(Ljava/util/Optional;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;0getAdditionalTestEngines()Ljava/util/Collection;9&isTestEngineAutoRegistrationEnabled()Z/1isTestExecutionListenerAutoRegistrationEnabled()Z4;getAdditionalTestExecutionListeners()Ljava/util/Collection;>7(ZZLjava/util/Collection;Ljava/util/Collection;)V%'()* ()VgasNode(Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/engine/support/hierarchical/Node;jaccess$100(Lorg/junit/platform/launcher/core/TestExecutionListenerRegistry;Ljava/util/function/Consumer;)V(Lorg/junit/platform/launcher/core/TestExecutionListenerRegistry;)V%&'(+getTestExecutionListeners()Ljava/util/List;-AnotifyEagerTestExecutionListeners(Ljava/util/function/Consumer;)V? ()V"VgetCompositeTestExecutionListener()Lorg/junit/platform/launcher/TestExecutionListener;CresolveParameter(Lorg/junit/jupiter/api/extension/ParameterContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Lorg/junit/jupiter/api/TestReporter; xsupportsParameter(Lorg/junit/jupiter/api/extension/ParameterContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Z ()Vskip()V@setTestRequest(Lorg/apache/maven/surefire/testset/TestRequest;)V:getScanResult()Lorg/apache/maven/surefire/util/ScanResult;fisInsideFork()Z)setClassLoaders(Ljava/lang/ClassLoader;)V*setSystemExitTimeout(Ljava/lang/Integer;)VRgetReporterConfiguration()Lorg/apache/maven/surefire/report/ReporterConfiguration;getSkipAfterFailureCount()I+getTestClassLoader()Ljava/lang/ClassLoader;9setShutdown(Lorg/apache/maven/surefire/booter/Shutdown;)V&getProviderProperties()Ljava/util/Map;JgetRunOrderCalculator()Lorg/apache/maven/surefire/util/RunOrderCalculator;rs]getDirectoryScannerParameters()Lorg/apache/maven/surefire/testset/DirectoryScannerParameters;FgetReporterFactory()Lorg/apache/maven/surefire/report/ReporterFactory;y?getTestRequest()Lorg/apache/maven/surefire/testset/TestRequest;IgetTestArtifactInfo()Lorg/apache/maven/surefire/testset/TestArtifactInfo;BgetConsoleLogger()Lorg/apache/maven/surefire/report/ConsoleStream;#getMainCliOptions()Ljava/util/List;FgetDirectoryScanner()Lorg/apache/maven/surefire/util/DirectoryScanner;\]^_`$setMainCliOptions(Ljava/util/List;)VNsetRunOrderParameters(Lorg/apache/maven/surefire/testset/RunOrderParameters;)V'setProviderProperties(Ljava/util/Map;)V^setDirectoryScannerParameters(Lorg/apache/maven/surefire/testset/DirectoryScannerParameters;)V8getShutdown()Lorg/apache/maven/surefire/booter/Shutdown;JsetTestArtifactInfo(Lorg/apache/maven/surefire/testset/TestArtifactInfo;)VgetThreadCount()IklsetSkipAfterFailureCount(I)V)getSystemExitTimeout()Ljava/lang/Integer;<(Lorg/apache/maven/surefire/report/ReporterFactory;Z)V<STUSsetReporterConfiguration(Lorg/apache/maven/surefire/report/ReporterConfiguration;)V]createThrowableCollector()Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector;" ()V3getLocation(Ljava/lang/Object;)Ljava/util/Optional;=?@ABCGHIKNTUV\.getDefaultClassLoader()Ljava/lang/ClassLoader;)*+/2 jconfigurationParameters(Ljava/util/Map;)Lorg/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder;Krequest()Lorg/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder;^]selectors(Ljava/util/List;)Lorg/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder;tuvw ()VPRSTUV{selectors([Lorg/junit/platform/engine/DiscoverySelector;)Lorg/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder;hijnfilters([Lorg/junit/platform/engine/Filter;)Lorg/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder;~configurationParameter(Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/launcher/core/LauncherDiscoveryRequestBuilder;=build()Lorg/junit/platform/launcher/LauncherDiscoveryRequest;0storeFilter(Lorg/junit/platform/engine/Filter;)V proceed()Ljava/lang/Object;8.getExecutable()Ljava/lang/reflect/Constructor;)getTarget()Ljava/util/Optional;3;(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)VgetArguments()Ljava/util/List;.!getTargetClass()Ljava/lang/Class;$HgetConfiguration()Lorg/junit/jupiter/engine/config/JupiterConfiguration;)prepare(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext; 34567:;<=UgetExecutionMode()Lorg/junit/platform/engine/support/hierarchical/Node$ExecutionMode;.c(Lorg/junit/platform/engine/UniqueId;Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V$% NexcludeTags(Ljava/util/List;)Lorg/junit/platform/launcher/PostDiscoveryFilter;~NincludeTags(Ljava/util/List;)Lorg/junit/platform/launcher/PostDiscoveryFilter;YQincludeTags([Ljava/lang/String;)Lorg/junit/platform/launcher/PostDiscoveryFilter;FGQexcludeTags([Ljava/lang/String;)Lorg/junit/platform/launcher/PostDiscoveryFilter;klrincludeMatching(Ljava/util/List;Ljava/util/function/BiPredicate;)Lorg/junit/platform/launcher/PostDiscoveryFilter;*parseAll(Ljava/util/List;)Ljava/util/List;lambda$includeMatching$1(Ljava/util/function/BiPredicate;Ljava/util/List;Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/engine/FilterResult;Plambda$parse$2(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/RuntimeException;Rparse(Ljava/lang/String;)Lorg/junit/platform/launcher/tagexpression/TagExpression;'enumEntries()Lkotlin/enums/EnumEntries;GenumEntries(Lkotlin/jvm/functions/Function0;)Lkotlin/enums/EnumEntries;(8enumEntries([Ljava/lang/Enum;)Lkotlin/enums/EnumEntries;, (ZZ)V$%&isUseManifestOnlyJar()Z0&isManifestOnlyJarRequestedAndUsable()Z5isUseSystemClassLoader()Z+MsetClasspath(Ljava/lang/String;Lorg/apache/maven/surefire/booter/Classpath;)V,addList(Ljava/util/List;Ljava/lang/String;)V 1getStringList(Ljava/lang/String;)Ljava/util/List;\]_acf#getIntProperty(Ljava/lang/String;)IFLgetClasspath(Ljava/lang/String;)Lorg/apache/maven/surefire/booter/Classpath;'getBooleanProperty(Ljava/lang/String;)ZA2setProperty(Ljava/lang/String;Ljava/lang/String;)V(Ljava/util/Map;)V%&(*getProperties()Ljava/util/Map;/3getLongProperty(Ljava/lang/String;)Ljava/lang/Long;KL1getFileProperty(Ljava/lang/String;)Ljava/io/File;QRTVWcopyTo(Ljava/util/Map;)VZgetTypeEncodedValue(Ljava/lang/String;)Lorg/apache/maven/surefire/booter/TypeEncodedValue;rsuvwx|setAsSystemProperties()V461getProperty(Ljava/lang/String;)Ljava/lang/String;<cancelPingScheduler()VEcreateExitHandler()Lorg/apache/maven/surefire/booter/CommandListener; +execute()V ~acknowledgedExit()V glistenToShutdownCommands(Ljava/lang/Long;)Lorg/apache/maven/surefire/booter/ForkedBooter$PingScheduler; kill(I)VisDebugging()ZdprocessCheckerJob(Lorg/apache/maven/surefire/booter/ForkedBooter$PingScheduler;)Ljava/lang/Runnable;DgetJvmTerminator()Ljava/util/concurrent/ScheduledThreadPoolExecutor;WcreateForkingReporterFactory()Lorg/apache/maven/surefire/booter/ForkingReporterFactory;kill()VGcanUseNewPingMechanism(Lorg/apache/maven/surefire/booter/PpidChecker;)Z_createSurefirePropertiesIfFileExists(Ljava/lang/String;Ljava/lang/String;)Ljava/io/InputStream;DcreatePingScheduler()Ljava/util/concurrent/ScheduledExecutorService;createProviderInCurrentClassloader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/providerapi/SurefireProvider;exit(I)V4acquireOnePermit(Ljava/util/concurrent/Semaphore;J)Z?runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;'launchLastDitchDaemonShutdownThread(I)VVsetupBooter(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V[\^_abcefhjlnoqtuvwlcreateTestSet(Lorg/apache/maven/surefire/booter/TypeEncodedValue;ZLjava/lang/ClassLoader;)Ljava/lang/Object;|createPingJob(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/apache/maven/surefire/booter/PpidChecker;)Ljava/lang/Runnable;pcreatePingHandler(Ljava/util/concurrent/atomic/AtomicBoolean;)Lorg/apache/maven/surefire/booter/CommandListener;main([Ljava/lang/String;)VinvokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+encodeAndWriteToOutput(Ljava/lang/String;)V ()VDLMOe(Lorg/junit/platform/engine/EngineDiscoveryRequest;Lorg/junit/platform/engine/TestDescriptor;)VibuildClassNamePredicate(Lorg/junit/platform/engine/EngineDiscoveryRequest;)Ljava/util/function/Predicate;?getEngineDescriptor()Lorg/junit/platform/engine/TestDescriptor;GgetDiscoveryRequest()Lorg/junit/platform/engine/EngineDiscoveryRequest;2getClassNameFilter()Ljava/util/function/Predicate;3(Ljava/lang/ClassLoader;ZLjava/lang/String;)V!#'-/1addURL(Ljava/net/URL;)V>@A.loadClass(Ljava/lang/String;)Ljava/lang/Class;IKMQU[`d ()V)toString()Ljava/lang/String;k;successful()Lorg/junit/platform/engine/TestExecutionResult;DAgetStatus()Lorg/junit/platform/engine/TestExecutionResult$Status;m"getThrowable()Ljava/util/Optional;w ()V<Lfailed(Ljava/lang/Throwable;)Lorg/junit/platform/engine/TestExecutionResult;\toString()Ljava/lang/String;}~Maborted(Ljava/lang/Throwable;)Lorg/junit/platform/engine/TestExecutionResult;PT(Lorg/junit/platform/engine/TestExecutionResult$Status;Ljava/lang/Throwable;)Vbcd getGroupId()Ljava/util/Optional;5createExecutionContext(Lorg/junit/platform/engine/ExecutionRequest;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;UVgetId()Ljava/lang/String;-#getArtifactId()Ljava/util/Optional;= ()V)discover(Lorg/junit/platform/engine/EngineDiscoveryRequest;Lorg/junit/platform/engine/UniqueId;)Lorg/junit/platform/engine/TestDescriptor;BCDEFcreateExecutorService(Lorg/junit/platform/engine/ExecutionRequest;)Lorg/junit/platform/engine/support/hierarchical/HierarchicalTestExecutorService;KLMNP{getJupiterConfiguration(Lorg/junit/platform/engine/ExecutionRequest;)Lorg/junit/jupiter/engine/config/JupiterConfiguration;bccreateThrowableCollectorFactory(Lorg/junit/platform/engine/ExecutionRequest;)Lorg/junit/platform/engine/support/hierarchical/ThrowableCollector$Factory;^ hashCode()ILMNPequals(Ljava/lang/Object;)Z@ACDFGXgetLockMode()Lorg/junit/platform/engine/support/hierarchical/ExclusiveResource$LockMode;;toString()Ljava/lang/String;UgetKey()Ljava/lang/String;4f(Ljava/lang/String;Lorg/junit/platform/engine/support/hierarchical/ExclusiveResource$LockMode;)V+,-isInternalError()ZisErrorFree()ZisFailureOrTimeout()Z hashCode()Itfailure(Lorg/apache/maven/surefire/suite/RunResult;Ljava/lang/Exception;)Lorg/apache/maven/surefire/suite/RunResult;>(IIIII)VN getSkipped()Iaaggregate(Lorg/apache/maven/surefire/suite/RunResult;)Lorg/apache/maven/surefire/suite/RunResult; isTimeout()Z!(IIIIILjava/lang/String;Z)VXYZ[\]^__timeout(Lorg/apache/maven/surefire/suite/RunResult;)Lorg/apache/maven/surefire/suite/RunResult;9 (IIIILjava/lang/String;Z)VS isFailure()ZgetFailure()Ljava/lang/String; (IIII)VI6getStackTrace(Ljava/lang/Exception;)Ljava/lang/String;dfhilms getFlakes()Iequals(Ljava/lang/Object;)ZgetCompletedCount()IxgetFailures()I$getFailsafeCode()Ljava/lang/Integer;7noTestsRun()Lorg/apache/maven/surefire/suite/RunResult; getErrors()I}terrorCode(Lorg/apache/maven/surefire/suite/RunResult;Ljava/lang/String;Z)Lorg/apache/maven/surefire/suite/RunResult;C(Ljava/lang/String;)V0(Ljava/lang/String;Ljava/lang/Throwable;)V" interceptBeforeEachMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VfinterceptAfterAllMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VinterceptAfterEachMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VinterceptBeforeAllMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VWinterceptTestMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)VuinterceptTestClassConstructor(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;HinterceptDynamicTest(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ExtensionContext;)VinterceptTestFactoryMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Object;interceptTestTemplateMethod(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)V JexcludeEngines(Ljava/util/List;)Lorg/junit/platform/launcher/EngineFilter;e4lambda$apply$2(Ljava/lang/String;)Ljava/lang/String;}JincludeEngines(Ljava/util/List;)Lorg/junit/platform/launcher/EngineFilter;G4lambda$apply$3(Ljava/lang/String;)Ljava/lang/String;~Uapply(Lorg/junit/platform/engine/TestEngine;)Lorg/junit/platform/engine/FilterResult;rstvw|toString()Ljava/lang/String;MexcludeEngines([Ljava/lang/String;)Lorg/junit/platform/launcher/EngineFilter;VMincludeEngines([Ljava/lang/String;)Lorg/junit/platform/launcher/EngineFilter;84lambda$apply$1(Ljava/lang/String;)Ljava/lang/String;yH(Ljava/util/List;Lorg/junit/platform/launcher/EngineFilter$Type;)Vklm1validateAndTrim(Ljava/util/List;)Ljava/util/List;4lambda$apply$0(Ljava/lang/String;)Ljava/lang/String;xNroot(Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/UniqueId;PC(Lorg/junit/platform/engine/UniqueIdFormat;Ljava/util/List;)Vfgh hashCode()IgetRoot()Ljava/util/Optional;l(Lorg/junit/platform/engine/UniqueIdFormat;Lorg/junit/platform/engine/UniqueId$Segment;)VZ[\clone()Ljava/lang/Object;Pappend(Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/UniqueId;!getEngineId()Ljava/util/Optional;u=parse(Ljava/lang/String;)Lorg/junit/platform/engine/UniqueId;45equals(Ljava/lang/Object;)ZgetSegments()Ljava/util/List;}Xappend(Lorg/junit/platform/engine/UniqueId$Segment;)Lorg/junit/platform/engine/UniqueId;0hasPrefix(Lorg/junit/platform/engine/UniqueId;)ZAforEngine(Ljava/lang/String;)Lorg/junit/platform/engine/UniqueId;CDtoString()Ljava/lang/String;7removeLastSegment()Lorg/junit/platform/engine/UniqueId;g~getSuperclassFields(Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;}getDeclaredMethods(Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;)detectInnerClassCycle(Ljava/lang/Class;)V +,isMultidimensionalArray(Ljava/lang/Object;)ZUfindMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/util/Optional;$isFinal(Ljava/lang/reflect/Member;)ZjfindAllClassesInClasspathRoot(Ljava/net/URI;Lorg/junit/platform/commons/util/ClassFilter;)Ljava/util/List;&isPrivate(Ljava/lang/reflect/Member;)Z4isAssignableTo(Ljava/lang/Object;Ljava/lang/Class;)Z lambda$loadRequiredParameterType$23(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Exception;)Lorg/junit/platform/commons/JUnitException;2getWrapperType(Ljava/lang/Class;)Ljava/lang/Class;itryToReadFieldValue(Ljava/lang/reflect/Field;Ljava/lang/Object;)Lorg/junit/platform/commons/function/Try; aloadRequiredParameterType(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;CnewInstance(Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;2lambda$static$0(Ljava/util/Map;Ljava/lang/Class;)VfindAllMethodsInHierarchy(Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;WhasCompatibleSignature(Ljava/lang/reflect/Method;Ljava/lang/String;[Ljava/lang/Class;)ZisPrivate(Ljava/lang/Class;)ZIlambda$tryToReadFieldValue$4(Ljava/lang/reflect/Field;)Ljava/lang/String; 8getOuterInstance(Ljava/lang/Object;)Ljava/util/Optional;QnewInstance(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;Slambda$tryToLoadClass$9(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;       ZgetFullyQualifiedMethodName(Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/String; ntryToGetMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Lorg/junit/platform/commons/function/Try;^resolveParameterTypes(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Class;9isWideningConversion(Ljava/lang/Class;Ljava/lang/Class;)ZOfindMethod(Ljava/lang/Class;Ljava/util/function/Predicate;)Ljava/util/Optional; getSuperclassMethods(Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;>getUnderlyingCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;%isStatic(Ljava/lang/reflect/Member;)Z'isAbstract(Ljava/lang/reflect/Member;)ZisPublic(Ljava/lang/Class;)Z1loadClass(Ljava/lang/String;)Ljava/util/Optional; +JdefaultMethodSorter(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I}getInterfaceFields(Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List; findMethods(Ljava/lang/Class;Ljava/util/function/Predicate;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;?toSortedMutableList([Ljava/lang/reflect/Field;)Ljava/util/List;LfindMethods(Ljava/lang/Class;Ljava/util/function/Predicate;)Ljava/util/List;KisMethodShadowedByLocalMethods(Ljava/lang/reflect/Method;Ljava/util/List;)ZIisMethodShadowedBy(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)ZMgetOutermostInstance(Ljava/lang/Object;Ljava/lang/Class;)Ljava/util/Optional;isAbstract(Ljava/lang/Class;)ZHloadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Optional; Elambda$getDeclaredConstructor$16(Ljava/lang/Class;)Ljava/lang/String;$isGeneric(Ljava/lang/reflect/Type;)Z'isNotFinal(Ljava/lang/reflect/Member;)ZYreadFieldValue(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/util/Optional;4getDefaultMethods(Ljava/lang/Class;)Ljava/util/List; +hfindAllClassesInPackage(Ljava/lang/String;Lorg/junit/platform/commons/util/ClassFilter;)Ljava/util/List;CreadFieldValues(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List; +4getDeclaredFields(Ljava/lang/Class;)Ljava/util/List;Ylambda$getOuterInstance$12(Ljava/lang/Object;Ljava/lang/reflect/Field;)Ljava/lang/Object;RfindNestedClasses(Ljava/lang/Class;Ljava/util/function/Predicate;Ljava/util/Set;)V &isGeneric(Ljava/lang/reflect/Method;)ZTgetMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/util/Optional;,getFields(Ljava/lang/Class;)Ljava/util/List;~getInterfaceMethods(Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;QfindConstructors(Ljava/lang/Class;Ljava/util/function/Predicate;)Ljava/util/List;DparseFullyQualifiedMethodName(Ljava/lang/String;)[Ljava/lang/String; /getAllClasspathRootDirectories()Ljava/util/Set;wfindAllClassesInPackage(Ljava/lang/String;Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/List;OreadFieldValue(Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/util/Optional; @toSortedMutableList([Ljava/lang/reflect/Method;)Ljava/util/List;isNotFinal(Ljava/lang/Class;)ZKtryToLoadClass(Ljava/lang/String;)Lorg/junit/platform/commons/function/Try; Mlambda$parseFullyQualifiedMethodName$10(Ljava/lang/String;)Ljava/lang/String; =readFieldValue(Ljava/lang/reflect/Field;)Ljava/util/Optional; Wlambda$readFieldValues$7(Ljava/lang/Object;Ljava/lang/reflect/Field;)Ljava/lang/Object; + +HisFieldShadowedByLocalFields(Ljava/lang/reflect/Field;Ljava/util/List;)ZareadFieldValues(Ljava/util/List;Ljava/lang/Object;Ljava/util/function/Predicate;)Ljava/util/List; + + + + + +WtryToReadFieldValue(Ljava/lang/reflect/Field;)Lorg/junit/platform/commons/function/Try; yfindAllClassesInClasspathRoot(Ljava/net/URI;Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/List;UfindMethod(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional;Clambda$invokeMethod$8(Ljava/lang/reflect/Method;)Ljava/lang/String; +isStatic(Ljava/lang/Class;)Z isSearchable(Ljava/lang/Class;)Z%isPublic(Ljava/lang/reflect/Member;)Z isInnerClass(Ljava/lang/Class;)ZvfindAllClassesInModule(Ljava/lang/String;Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/List;(isNotStatic(Ljava/lang/reflect/Member;)ZRfindNestedClasses(Ljava/lang/Class;Ljava/util/function/Predicate;)Ljava/util/List;gfindAllClassesInModule(Ljava/lang/String;Lorg/junit/platform/commons/util/ClassFilter;)Ljava/util/List;-getMethods(Ljava/lang/Class;)Ljava/util/List;isFinal(Ljava/lang/Class;)ZJloadArrayType(Ljava/lang/ClassLoader;Ljava/lang/String;I)Ljava/lang/Class; (returnsVoid(Ljava/lang/reflect/Method;)ZCgetAllAssignmentCompatibleClasses(Ljava/lang/Class;)Ljava/util/Set;DgetAllAssignmentCompatibleClasses(Ljava/lang/Class;Ljava/util/Set;)V isNotPrivate(Ljava/lang/Class;)ZfindFields(Ljava/lang/Class;Ljava/util/function/Predicate;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;HgetDeclaredConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;stryToReadFieldValue(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Lorg/junit/platform/commons/function/Try;AisMethodPresent(Ljava/lang/Class;Ljava/util/function/Predicate;)Z)isNotPrivate(Ljava/lang/reflect/Member;)ZGdefaultFieldSorter(Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;)I ()VMeqtvxbtryToLoadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Lorg/junit/platform/commons/function/Try;     findAllFieldsInHierarchy(Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;dgetFullyQualifiedMethodName(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/String; isArray(Ljava/lang/Object;)ZXmakeAccessible(Ljava/lang/reflect/AccessibleObject;)Ljava/lang/reflect/AccessibleObject;isNotStatic(Ljava/lang/Class;)Z_invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; + + + +(Ljava/lang/String;)V 0(Ljava/lang/String;Ljava/lang/Throwable;)V$(Lorg/apache/maven/surefire/testset/DirectoryScannerParameters;Lorg/apache/maven/surefire/testset/RunOrderParameters;ZLorg/apache/maven/surefire/report/ReporterConfiguration;Lorg/apache/maven/surefire/testset/TestArtifactInfo;Lorg/apache/maven/surefire/testset/TestRequest;Ljava/util/Map;Lorg/apache/maven/surefire/booter/TypeEncodedValue;ZLjava/util/List;ILorg/apache/maven/surefire/booter/Shutdown;Ljava/lang/Integer;)VNOPQRSTUVWXYZ[#getMainCliOptions()Ljava/util/List;CgetTestForFork()Lorg/apache/maven/surefire/booter/TypeEncodedValue;isReadTestsFromInStream()ZSgetDirScannerParams()Lorg/apache/maven/surefire/testset/DirectoryScannerParameters;qRgetReporterConfiguration()Lorg/apache/maven/surefire/report/ReporterConfiguration;`getSkipAfterFailureCount()IgetIncludes()Ljava/util/List;wsystemExitTimeout(J)JEgetTestArtifact()Lorg/apache/maven/surefire/testset/TestArtifactInfo;&getProviderProperties()Ljava/util/Map;isFailIfNoTests()ZfgetBaseDir()Ljava/io/File;kGgetTestSuiteDefinition()Lorg/apache/maven/surefire/testset/TestRequest;8getShutdown()Lorg/apache/maven/surefire/booter/Shutdown;MgetRunOrderParameters()Lorg/apache/maven/surefire/testset/RunOrderParameters;)getSystemExitTimeout()Ljava/lang/Integer;getExcludes()Ljava/util/List;}nonNull(Ljava/lang/Object;)Z:isNull(Ljava/lang/Object;)Z1systemProps()Ljava/util/Map;UFrequireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;CEG4requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;P ()V"#BuseNonNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;( write(I)VKOflush()Vf write([BII)V<println(Ljava/lang/String;)VVXZ[B(ZLorg/apache/maven/surefire/report/ConsoleOutputReceiver;)V234 +write([B)VCclose()Va(ZLjava/lang/String;)V456 isDisabled()Z?Venabled(Ljava/lang/String;)Lorg/junit/jupiter/api/extension/ConditionEvaluationResult;#getReason()Ljava/util/Optional;GtoString()Ljava/lang/String;MNOPWdisabled(Ljava/lang/String;)Lorg/junit/jupiter/api/extension/ConditionEvaluationResult;-%testExecutionSkippedByUser()V;testFailed(Lorg/apache/maven/surefire/report/ReportEntry;)VisDebugEnabled()ZHtestSetCompleted(Lorg/apache/maven/surefire/report/TestSetReportEntry;)VLtoString(BLorg/apache/maven/surefire/report/ReportEntry;I)Ljava/lang/String;writeTestOutput([BIIZ)V4append(Ljava/lang/StringBuilder;Ljava/lang/String;)V sendProps()Vdebug(Ljava/lang/String;)V!comma(Ljava/lang/StringBuilder;)VcreateHeader(BI)[B>testSucceeded(Lorg/apache/maven/surefire/report/ReportEntry;)Vinfo(Ljava/lang/String;)Vwarning(Ljava/lang/String;)V>nullableEncoding(Ljava/lang/StringBuilder;Ljava/lang/String;)VUencode(Ljava/lang/StringBuilder;Lorg/apache/maven/surefire/report/StackTraceWriter;)VHtoPropertyString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;isInfoEnabled()ZGtestSetStarting(Lorg/apache/maven/surefire/report/TestSetReportEntry;)Verror(Ljava/lang/String;)V+encodeAndWriteToTarget(Ljava/lang/String;)V=testStarting(Lorg/apache/maven/surefire/report/ReportEntry;)V?nullableEncoding(Ljava/lang/StringBuilder;Ljava/lang/Integer;)V,encode(Ljava/lang/String;)Ljava/lang/String;println(Ljava/lang/String;)VFtestAssumptionFailure(Lorg/apache/maven/surefire/report/ReportEntry;)Verror(Ljava/lang/Throwable;)VVencode(Ljava/lang/StringBuilder;Lorg/apache/maven/surefire/report/StackTraceWriter;Z)V isWarnEnabled()Z:testError(Lorg/apache/maven/surefire/report/ReportEntry;)V/error(Ljava/lang/String;Ljava/lang/Throwable;)Vlog(BLjava/lang/String;)VisErrorEnabled()Z#append(Ljava/lang/StringBuilder;B)Vprintln([BII)V (Ljava/io/PrintStream;IZ)V()Vuskip()V[(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Ljava/util/List;)Vw{|}fail(Ljava/lang/String;)V .(Ljava/lang/String;IILjava/lang/Class;)V678getDataType()Ljava/lang/Class;BgetId()I=Kdecode(Ljava/io/DataInputStream;)Lorg/apache/maven/surefire/booter/Command; stvz{}~Aresolve(I)Lorg/apache/maven/surefire/booter/MasterProcessCommand;"fromDataType(Ljava/lang/String;)[B ()V&()*+./hasDataType()ZGencode(Ljava/lang/String;)[B MORTWXZ\]^`setCommandAndDataLength(II[B)V +encode()[Bfhjklm(toDataTypeAsString([B)Ljava/lang/String; jandThenTry(Lorg/junit/platform/commons/function/Try$Transformer;)Lorg/junit/platform/commons/function/Try;QifFailure(Ljava/util/function/Consumer;)Lorg/junit/platform/commons/function/Try;get()Ljava/lang/Object; hashCode()I(Ljava/lang/Exception;)VQifSuccess(Ljava/util/function/Consumer;)Lorg/junit/platform/commons/function/Try;SorElseTry(Ljava/util/concurrent/Callable;)Lorg/junit/platform/commons/function/Try;8uncheckedCast()Lorg/junit/platform/commons/function/Try;;getOrThrow(Ljava/util/function/Function;)Ljava/lang/Object;NorElse(Ljava/util/function/Supplier;)Lorg/junit/platform/commons/function/Try;OandThen(Ljava/util/function/Function;)Lorg/junit/platform/commons/function/Try;equals(Ljava/lang/Object;)Z toOptional()Ljava/util/Optional; hashCode()IEequals(Ljava/lang/Object;)Z5689;<-(Lorg/junit/platform/engine/UniqueId;)V$%toString()Ljava/lang/String;J1getUniqueId()Lorg/junit/platform/engine/UniqueId;, QcleanUp(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)V9execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;jbefore(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;T&getExclusiveResources()Ljava/util/Set;shouldBeSkipped(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)Lorg/junit/platform/engine/support/hierarchical/Node$SkipResult;BnodeSkipped(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/support/hierarchical/Node$SkipResult;)VUgetExecutionMode()Lorg/junit/platform/engine/support/hierarchical/Node$ExecutionMode;prepare(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;,nodeFinished(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/TestExecutionResult;)VOafter(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;)Vzaround(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$Invocation;)V myTest()V ()V hashCode()Irstequals(Ljava/lang/Object;)Z`begjlR(Lorg/apache/maven/surefire/booter/MasterProcessCommand;Ljava/lang/String;)V-./@(Lorg/apache/maven/surefire/booter/MasterProcessCommand;)V> ()V$%&'getData()Ljava/lang/String;H@isType(Lorg/apache/maven/surefire/booter/MasterProcessCommand;)ZZ;toShutdownData()Lorg/apache/maven/surefire/booter/Shutdown;QSUatoShutdown(Lorg/apache/maven/surefire/booter/Shutdown;)Lorg/apache/maven/surefire/booter/Command;4HtoRunClass(Ljava/lang/String;)Lorg/apache/maven/surefire/booter/Command;9GgetCommandType()Lorg/apache/maven/surefire/booter/MasterProcessCommand;C resolve(Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;Ljava/util/List;Ljava/lang/Class;Ljava/lang/reflect/Method;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution; OPQRSTVW`ZexpansionCallback(Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/function/Supplier;~?(Lorg/junit/jupiter/engine/config/JupiterConfiguration;)V?@ ()V:;Mlambda$resolve$3(Ljava/util/Set;Ljava/lang/reflect/Method;)Ljava/lang/String;XY]=access$100()Lorg/junit/jupiter/engine/discovery/MethodFinder;8Ulambda$expansionCallback$6(Lorg/junit/platform/engine/TestDescriptor;)Ljava/util/Set;resolve(Lorg/junit/platform/engine/discovery/NestedMethodSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;Jresolve(Lorg/junit/platform/engine/discovery/UniqueIdSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;eghijkxyresolve(Lorg/junit/platform/engine/discovery/MethodSelector;Lorg/junit/platform/engine/support/discovery/SelectorResolver$Context;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;Elambda$resolve$5(Lorg/junit/platform/engine/UniqueId;Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;lmnopsvAapply(Ljava/lang/Object;)Lorg/junit/platform/engine/FilterResult;>?@AB ()V!-.toString()Ljava/lang/String;STUV2alwaysIncluded()Lorg/junit/platform/engine/Filter;2(Ljava/util/Collection;)V784access$000()Lorg/junit/platform/engine/FilterResult;+toPredicate()Ljava/util/function/Predicate;IJKL(Ljava/lang/String;)V0(Ljava/lang/String;Ljava/lang/Throwable;)V"-throwAssert()V>3checkNotNull(Ljava/lang/Object;Ljava/lang/String;)VneedClassReification()VthrowUndefinedForReified()VLcheckFieldIsNotNull(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Vpq,throwParameterIsNullNPE(Ljava/lang/String;)V/throwUninitializedProperty(Ljava/lang/String;)V6BcheckReturnedValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;)VjkareEqual(Ljava/lang/Double;D)Z,throwParameterIsNullIAE(Ljava/lang/String;)V!checkNotNull(Ljava/lang/Object;)VthrowIllegalState()VN,reifiedOperationMarker(ILjava/lang/String;)V-throwUndefinedForReified(Ljava/lang/String;)VTcheckReturnedValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)VbcBstringPlus(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;DcheckExpressionValueIsNotNull(Ljava/lang/Object;Ljava/lang/String;)VVW>checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V|}-areEqual(Ljava/lang/Float;Ljava/lang/Float;)Z>sanitizeStackTrace(Ljava/lang/Throwable;)Ljava/lang/Throwable;/areEqual(Ljava/lang/Double;Ljava/lang/Double;)ZreifiedOperationMarker(ILjava/lang/String;Ljava/lang/String;)VBcheckNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V\]/areEqual(Ljava/lang/Object;Ljava/lang/Object;)ZthrowNpe(Ljava/lang/String;)V(throwJavaNpe()V-areEqual(FLjava/lang/Float;)Z>throwUninitializedPropertyAccessException(Ljava/lang/String;)V:areEqual(DLjava/lang/Double;)Z throwNpe()V$)throwIllegalArgument(Ljava/lang/String;)VJ compare(JJ)IKcreateParameterIsNullExceptionMessage(Ljava/lang/String;)Ljava/lang/String; 4checkHasClass(Ljava/lang/String;Ljava/lang/String;)V9(Lorg/apache/maven/surefire/testset/ResolvedTest;)VsanityCheck()V$matchMethodName(Ljava/lang/String;)Z fetchCache()VBbuilder()Lorg/junit/platform/launcher/core/LauncherConfig$Builder;_5nullSafeToString(Ljava/lang/Class;)Ljava/lang/String;56nullSafeToString([Ljava/lang/Class;)Ljava/lang/String;DSnullSafeToString(Ljava/util/function/Function;[Ljava/lang/Class;)Ljava/lang/String;WYZ\ Uunresolved()Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;'(Ljava/util/Set;Ljava/util/Set;)VgetSelectors()Ljava/util/Set;getMatches()Ljava/util/Set;match(Lorg/junit/platform/engine/support/discovery/SelectorResolver$Match;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;amatches(Ljava/util/Set;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution;cselectors(Ljava/util/Set;)Lorg/junit/platform/engine/support/discovery/SelectorResolver$Resolution; isResolved()Z ()VI(Lorg/apache/maven/surefire/booter/PpidChecker;Ljava/lang/String;)V{consumeLine(Ljava/lang/String;Lorg/apache/maven/surefire/booter/ProcessInfo;)Lorg/apache/maven/surefire/booter/ProcessInfo; hasTestClassPattern()Z?canMatchExclusiveClasses(Ljava/lang/String;Ljava/lang/String;)Z;canMatchExclusiveAll(Ljava/lang/String;Ljava/lang/String;)Z;reformatClassPattern(Ljava/lang/String;Z)Ljava/lang/String; access$200([Ljava/lang/String;)V)isRegexTestClassPattern()Z8canMatchExclusive(Ljava/lang/String;Ljava/lang/String;)Zequals(Ljava/lang/Object;)Z +isEmpty()Z,checkIllegalCharacters([Ljava/lang/String;)V3convertToPath(Ljava/lang/String;)Ljava/lang/String;+alwaysInclusiveQuietly(Ljava/lang/String;)ZQ(Lorg/apache/maven/surefire/testset/ResolvedTest$Type;Ljava/lang/String;Z)V rstuvxz{|}~ hashCode()I'getTestClassPattern()Ljava/lang/String;hasTestMethodPattern()Z?canMatchExclusiveMethods(Ljava/lang/String;Ljava/lang/String;)Z7matchAsExclusive(Ljava/lang/String;Ljava/lang/String;)ZDdescription(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;.tryBlank(Ljava/lang/String;)Ljava/lang/String;isRegexTestMethodPattern()Z(getTestMethodPattern()Ljava/lang/String;=fromFullyQualifiedClass(Ljava/lang/String;)Ljava/lang/String; toString()Ljava/lang/String;,match(Ljava/lang/String;Ljava/lang/String;)ZmatchClass(Ljava/lang/String;)Z matchMethod(Ljava/lang/String;)Z.(Ljava/lang/String;Ljava/lang/String;Z)VEGTUVWY[^`cdefg/wrapRegex(Ljava/lang/String;)Ljava/lang/String;7matchAsInclusive(Ljava/lang/String;Ljava/lang/String;)Z7throwSanityError(Ljava/lang/IllegalArgumentException;)VI(Lorg/apache/maven/surefire/booter/PpidChecker;Ljava/lang/String;)V{consumeLine(Ljava/lang/String;Lorg/apache/maven/surefire/booter/ProcessInfo;)Lorg/apache/maven/surefire/booter/ProcessInfo; (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/junit/platform/launcher/core/LauncherConfigurationParameters;)V456789)getPostDiscoveryFilters()Ljava/util/List;OOgetConfigurationParameters()Lorg/junit/platform/engine/ConfigurationParameters;T"getEngineFilters()Ljava/util/List;D5getSelectorsByType(Ljava/lang/Class;)Ljava/util/List;>?3getFiltersByType(Ljava/lang/Class;)Ljava/util/List;IJ ()V"GstartCapture(Lorg/apache/maven/surefire/report/ConsoleOutputReceiver;)V&' included()ZUDincluded(Ljava/lang/String;)Lorg/junit/platform/engine/FilterResult;$Dexcluded(Ljava/lang/String;)Lorg/junit/platform/engine/FilterResult;.(ZLjava/lang/String;)VLMN excluded()Z\oincludedIf(ZLjava/util/function/Supplier;Ljava/util/function/Supplier;)Lorg/junit/platform/engine/FilterResult;EgetReason()Ljava/util/Optional;dtoString()Ljava/lang/String;jklm5includedIf(Z)Lorg/junit/platform/engine/FilterResult;8isContainer()Z ()V isTest()ZIgetRequiredTestInstances()Lorg/junit/jupiter/api/extension/TestInstances;+getRequiredTestInstance()Ljava/lang/Object;9publishReportEntry(Ljava/lang/String;Ljava/lang/String;)V'getRequiredTestClass()Ljava/lang/Class;1getRequiredTestMethod()Ljava/lang/reflect/Method;'publishReportEntry(Ljava/lang/String;)VGremoveListener(Lorg/junit/platform/commons/logging/LogRecordListener;)VCaccess$000()Ljava/util/Set; ()V$DaddListener(Lorg/junit/platform/commons/logging/LogRecordListener;)V;GgetLogger(Ljava/lang/Class;)Lorg/junit/platform/commons/logging/Logger;/03sexecutionJustFinished(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;)VuCexecutionJustStarted(Lorg/junit/platform/launcher/TestIdentifier;)Vr hashCode()I:getCompactLogMessage(Ljava/lang/String;)Ljava/lang/String;getAsUrlList()Ljava/util/List;}~VaddClassPathElementUrl(Ljava/lang/String;)Lorg/apache/maven/surefire/booter/Classpath;egiiterator()Ljava/util/Iterator;G(Lorg/apache/maven/surefire/booter/Classpath;Ljava/lang/String;)VJKLMgetClassPath()Ljava/util/List;ojoin(Lorg/apache/maven/surefire/booter/Classpath;Lorg/apache/maven/surefire/booter/Classpath;)Lorg/apache/maven/surefire/booter/Classpath;3468:<createClassLoader(ZZLjava/lang/String;)Ljava/lang/ClassLoader; addTo(Ljava/util/Collection;)VA3clone()Lorg/apache/maven/surefire/booter/Classpath;(Ljava/util/Collection;)VQRSUVX[3getLogMessage(Ljava/lang/String;)Ljava/lang/String; ()VEF*writeToSystemProperty(Ljava/lang/String;)V ()V writeTo(Ljava/util/Map;)V;=!getClassName(I)Ljava/lang/String;5size()I/ +isEmpty()ZREloadClass(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;Gfrom(Ljava/util/Map;)Lorg/apache/maven/surefire/util/DefaultScanResult;CDGHJLgetClasses()Ljava/util/List;WtgetClassesSkippedByValidation(Lorg/apache/maven/surefire/util/ScannerFilter;Ljava/lang/ClassLoader;)Ljava/util/List;rtuwy{}}applyFilter(Lorg/apache/maven/surefire/util/ScannerFilter;Ljava/lang/ClassLoader;)Lorg/apache/maven/surefire/util/TestsToRun;]_`bdfhl(Ljava/util/List;)V()lappend(Lorg/apache/maven/surefire/util/DefaultScanResult;)Lorg/apache/maven/surefire/util/DefaultScanResult;getP1()Ljava/lang/Object;+getP2()Ljava/lang/Object;0-(Ljava/lang/Object;Ljava/lang/Object;)V$%&addSelectorResolver(Lorg/junit/platform/engine/support/discovery/SelectorResolver;)Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$Builder;addTestDescriptorVisitor(Ljava/util/function/Function;)Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$Builder;addClassContainerSelectorResolver(Ljava/util/function/Predicate;)Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$Builder;lambda$addClassContainerSelectorResolver$0(Ljava/util/function/Predicate;Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$InitializationContext;)Lorg/junit/platform/engine/support/discovery/SelectorResolver;W(Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$1;)V ()VaddSelectorResolver(Ljava/util/function/Function;)Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$Builder;Sbuild()Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver;ofVoid(Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$VoidInterceptorCall;)Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Mlambda$ofVoid$0(Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$VoidInterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Void;NO vget(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;IJgetOrComputeIfAbsent(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;Ljava/util/function/Function;Ljava/lang/Class;)Ljava/lang/Object;XYeget(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;)Ljava/lang/Object;DEhremove(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;)Ljava/lang/Object;absgetStoredValue(Lorg/junit/jupiter/engine/execution/ExtensionValuesStore$CompositeKey;)Ljava/util/function/Supplier;klmopsfput(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;Ljava/lang/Object;)V][castToRequiredType(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;yz|}~yremove(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;fg closeAllStoredCloseableValues()V89:;<=@getOrComputeIfAbsent(Lorg/junit/jupiter/api/extension/ExtensionContext$Namespace;Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;NOPQRTB(Lorg/junit/jupiter/engine/execution/ExtensionValuesStore;)V+-.#getDisplayName(I)Ljava/lang/String;1)getAdditionalExtensions()Ljava/util/List;B ()V#)/50(Ljava/lang/String;Ljava/lang/Throwable;)V=(Lorg/apache/maven/surefire/booter/PropertiesWrapper;)V23(Lorg/apache/maven/surefire/booter/Classpath;Lorg/apache/maven/surefire/booter/Classpath;Lorg/apache/maven/surefire/booter/Classpath;ZZ)V:;<@getInprocClasspath()Lorg/apache/maven/surefire/booter/Classpath;BisClassPathConfig()ZSisModularPathConfig()ZM*trickClassPathWhenManifestOnlyClasspath()VXY>getTestClasspath()Lorg/apache/maven/surefire/booter/Classpath;G (ZZ)V- ()VLS] QgetTestIdentifier(Ljava/lang/String;)Lorg/junit/platform/launcher/TestIdentifier;@lambda$getTestIdentifier$3(Ljava/lang/String;)Ljava/lang/String;getRoots()Ljava/util/Set;r5countTestIdentifiers(Ljava/util/function/Predicate;)J/lambda$add$2(Ljava/lang/String;)Ljava/util/Set;dHgetChildren(Lorg/junit/platform/launcher/TestIdentifier;)Ljava/util/Set;KgetDescendants(Lorg/junit/platform/launcher/TestIdentifier;)Ljava/util/Set;Bfrom(Ljava/util/Collection;)Lorg/junit/platform/launcher/TestPlan;NOPQRKgetParent(Lorg/junit/platform/launcher/TestIdentifier;)Ljava/util/Optional;|}.getChildren(Ljava/lang/String;)Ljava/util/Set; +(Z)V9;=UVcontainsTests()Z2add(Lorg/junit/platform/launcher/TestIdentifier;)V_`abceh6orderedHashCode$kotlin_stdlib(Ljava/util/Collection;)I%checkPositionIndex$kotlin_stdlib(II)Vqr$checkElementIndex$kotlin_stdlib(II)VklJorderedEquals$kotlin_stdlib(Ljava/util/Collection;Ljava/util/Collection;)Z%checkRangeIndexes$kotlin_stdlib(III)Vwxz{&checkBoundsIndexes$kotlin_stdlib(III)VnewCapacity$kotlin_stdlib(II)I"getThrowable()Ljava/util/Optional;pY(Lorg/junit/platform/engine/SelectorResolutionResult$Status;Ljava/lang/Throwable;)V[\] ()V9:FgetStatus()Lorg/junit/platform/engine/SelectorResolutionResult$Status;ftoString()Ljava/lang/String;vwxy@unresolved()Lorg/junit/platform/engine/SelectorResolutionResult;L>resolved()Lorg/junit/platform/engine/SelectorResolutionResult;CQfailed(Ljava/lang/Throwable;)Lorg/junit/platform/engine/SelectorResolutionResult;Uw(Ljava/util/List;Ljava/util/List;Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$1;)V4)(Ljava/util/List;Ljava/util/List;)V:;<instantiate(Ljava/util/List;Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$InitializationContext;)Ljava/util/List;vfresolve(Lorg/junit/platform/engine/EngineDiscoveryRequest;Lorg/junit/platform/engine/TestDescriptor;)Vlmnopq]builder()Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$Builder; ()Vaccept(Ljava/lang/Class;)Z4568:R(Lorg/junit/platform/launcher/Launcher;[Lorg/junit/platform/engine/Filter;)V+,-UtestAborted(Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/Throwable;)VXTtestFailed(Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/lang/Throwable;)VeCtestSuccessful(Lorg/junit/jupiter/api/extension/ExtensionContext;)VKUtestDisabled(Lorg/junit/jupiter/api/extension/ExtensionContext;Ljava/util/Optional;)V?NselectUri(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/UriSelector;GIL.selectModules(Ljava/util/Set;)Ljava/util/List;ZselectDirectory(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/DirectorySelector;jselectClasspathResource(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/ClasspathResourceSelector;LselectFile(Ljava/io/File;)Lorg/junit/platform/engine/discovery/FileSelector;5selectClasspathRoots(Ljava/util/Set;)Ljava/util/List;TselectModule(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/ModuleSelector;JselectUri(Ljava/net/URI;)Lorg/junit/platform/engine/discovery/UriSelector;\]fselectMethod(Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/MethodSelector;selectNestedMethod(Ljava/util/List;Ljava/lang/Class;Ljava/lang/reflect/Method;)Lorg/junit/platform/engine/discovery/NestedMethodSelector; mselectMethod(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lorg/junit/platform/engine/discovery/MethodSelector;TselectMethod(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/MethodSelector;selectNestedMethod(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/NestedMethodSelector;QselectClass(Ljava/lang/Class;)Lorg/junit/platform/engine/discovery/ClassSelector;eselectMethod(Ljava/lang/Class;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/MethodSelector;wselectMethod(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/MethodSelector;mselectNestedClass(Ljava/util/List;Ljava/lang/Class;)Lorg/junit/platform/engine/discovery/NestedClassSelector;VselectPackage(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/PackageSelector;:lambda$selectDirectory$1(Ljava/io/File;)Ljava/lang/String;selectNestedMethod(Ljava/util/List;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/NestedMethodSelector; XselectUniqueId(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/UniqueIdSelector; selectNestedMethod(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/NestedMethodSelector;selectNestedMethod(Ljava/util/List;Ljava/lang/Class;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/NestedMethodSelector;VselectDirectory(Ljava/io/File;)Lorg/junit/platform/engine/discovery/DirectorySelector;nselectNestedClass(Ljava/util/List;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/NestedClassSelector;5lambda$selectFile$0(Ljava/io/File;)Ljava/lang/String;PselectFile(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/FileSelector;mnRselectClass(Ljava/lang/String;)Lorg/junit/platform/engine/discovery/ClassSelector;xselectMethod(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/junit/platform/engine/discovery/MethodSelector;jselectUniqueId(Lorg/junit/platform/engine/UniqueId;)Lorg/junit/platform/engine/discovery/UniqueIdSelector; @lambda$createRegistryWithDefaultExtensions$1()Ljava/lang/String;LMQregisterExtension(Lorg/junit/jupiter/api/extension/Extension;Ljava/lang/Object;)V^registerAutoDetectedExtensions(Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;)VZ]cOlambda$registerAutoDetectedExtensions$3(Ljava/lang/Iterable;)Ljava/lang/String;^_`?registerExtension(Lorg/junit/jupiter/api/extension/Extension;)VcreateRegistryFrom(Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;Ljava/util/List;)Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;rtuv'isAlreadyRegistered(Ljava/lang/Class;)ZF(Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;)V{} ()V02%registerExtension(Ljava/lang/Class;)V7streamLocal(Ljava/lang/Class;)Ljava/util/stream/Stream;2stream(Ljava/lang/Class;)Ljava/util/stream/Stream;createRegistryWithDefaultExtensions(Lorg/junit/jupiter/engine/config/JupiterConfiguration;)Lorg/junit/jupiter/engine/extension/MutableExtensionRegistry;HKPRSVFregisterDefaultExtension(Lorg/junit/jupiter/api/extension/Extension;)V ()V.0 isClosed()Z\4(Lorg/apache/maven/surefire/util/TestsToRun;)VRU doRemove()VpdoNext()Ljava/lang/Class;hij doHasNext()Zb remove()Vu^EremoveAndHump(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;!!!!!!!(isAlphanumericSpace(Ljava/lang/String;)Z3countMatches(Ljava/lang/String;Ljava/lang/String;)I +UreplaceOnce(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; *chop(Ljava/lang/String;)Ljava/lang/String; ,split(Ljava/lang/String;)[Ljava/lang/String;isNotBlank(Ljava/lang/String;)Z-center(Ljava/lang/String;I)Ljava/lang/String; !isAlphaSpace(Ljava/lang/String;)ZEdefaultString(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;0substring(Ljava/lang/String;I)Ljava/lang/String; KunifyLineSeparators(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;%%%%&&&&&&&&&&&&&?split(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String;     6lastIndexOfAny(Ljava/lang/String;[Ljava/lang/String;)I@interpolate(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String; + !!!+left(Ljava/lang/String;I)Ljava/lang/String;?center(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; ;capitalizeFirstLetter(Ljava/lang/String;)Ljava/lang/String;!!!!!!"":uncapitaliseAllWords(Ljava/lang/String;)Ljava/lang/String;!isWhitespace(Ljava/lang/String;)Z/chompLast(Ljava/lang/String;)Ljava/lang/String;?removeDuplicateWhitespace(Ljava/lang/String;)Ljava/lang/String; +%%%%%%%%%%0capitalise(Ljava/lang/String;)Ljava/lang/String;1abbreviate(Ljava/lang/String;I)Ljava/lang/String;9unifyLineSeparators(Ljava/lang/String;)Ljava/lang/String;%/upperCase(Ljava/lang/String;)Ljava/lang/String;=join([Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String; + Bdifference(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 7equalsIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z,escape(Ljava/lang/String;)Ljava/lang/String;"1chopNewline(Ljava/lang/String;)Ljava/lang/String;isAlpha(Ljava/lang/String;)Z3differenceAt(Ljava/lang/String;Ljava/lang/String;)I 2abbreviate(Ljava/lang/String;II)Ljava/lang/String;GgetNestedString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;.leftPad(Ljava/lang/String;I)Ljava/lang/String;/escape(Ljava/lang/String;[CC)Ljava/lang/String; $$$$$$$$$$$$%+strip(Ljava/lang/String;)Ljava/lang/String;:lowercaseFirstLetter(Ljava/lang/String;)Ljava/lang/String;"""/rightPad(Ljava/lang/String;I)Ljava/lang/String;7quoteAndEscape(Ljava/lang/String;C[C)Ljava/lang/String;#@getChomp(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;.swapCase(Ljava/lang/String;)Ljava/lang/String;>split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;@leftPad(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; ()VC+mid(Ljava/lang/String;II)Ljava/lang/String; =chomp(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; 6deleteWhitespace(Ljava/lang/String;)Ljava/lang/String;qrsuwzAchompLast(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;3defaultString(Ljava/lang/Object;)Ljava/lang/String;CgetPrechomp(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;;quoteAndEscape(Ljava/lang/String;C[C[CCZ)Ljava/lang/String;####$$$$$$$$$$$$NreverseDelimitedString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;Rreplace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; + 5quoteAndEscape(Ljava/lang/String;C)Ljava/lang/String;#2indexOfAny(Ljava/lang/String;[Ljava/lang/String;)I "reverseArray([Ljava/lang/String;)V/replace(Ljava/lang/String;CC)Ljava/lang/String; +-repeat(Ljava/lang/String;I)Ljava/lang/String;BstripAll([Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;isBlank(Ljava/lang/String;)Z2addAndDeHump(Ljava/lang/String;)Ljava/lang/String;"""""">join(Ljava/util/Iterator;Ljava/lang/String;)Ljava/lang/String; + + + + + + + +0replace(Ljava/lang/String;CCI)Ljava/lang/String; YgetNestedString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;isEmpty(Ljava/lang/String;)Z3replaceOnce(Ljava/lang/String;CC)Ljava/lang/String; +-equals(Ljava/lang/String;Ljava/lang/String;)Z1substring(Ljava/lang/String;II)Ljava/lang/String;=strip(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;/lowerCase(Ljava/lang/String;)Ljava/lang/String;ArightPad(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;2concatenate([Ljava/lang/Object;)Ljava/lang/String; +clean(Ljava/lang/String;)Ljava/lang/String;TisNotEmpty(Ljava/lang/String;)Z-reverse(Ljava/lang/String;)Ljava/lang/String;*trim(Ljava/lang/String;)Ljava/lang/String;bBstripStart(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +8capitaliseAllWords(Ljava/lang/String;)Ljava/lang/String;9quoteAndEscape(Ljava/lang/String;C[CCZ)Ljava/lang/String;#0stripAll([Ljava/lang/String;)[Ljava/lang/String;GoverlayString(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String; /contains(Ljava/lang/String;Ljava/lang/String;)Z'2uncapitalise(Ljava/lang/String;)Ljava/lang/String;#isAlphanumeric(Ljava/lang/String;)Z9endsWithIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z'''''Qreplace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; contains(Ljava/lang/String;C)Z&+chomp(Ljava/lang/String;)Ljava/lang/String; @prechomp(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;@stripEnd(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ,right(Ljava/lang/String;I)Ljava/lang/String;isNumeric(Ljava/lang/String;)Z(Ljava/lang/String;)V0(Ljava/lang/String;Ljava/lang/Throwable;)V! hashCode()It+(Ljava/util/List;Ljava/lang/String;)V456!getNestedClass()Ljava/lang/Class;bequals(Ljava/lang/Object;)Zghjkmno(getEnclosingClassNames()Ljava/util/List;BtoString()Ljava/lang/String;yz{|&getNestedClassName()Ljava/lang/String;V*(Ljava/util/List;Ljava/lang/Class;)V9:;%getEnclosingClasses()Ljava/util/List;OgetTags()Ljava/util/Set; hashCode()I(Ljava/lang/String;Ljava/lang/String;Lorg/junit/platform/engine/TestSource;Ljava/util/Set;Lorg/junit/platform/engine/TestDescriptor$Type;Ljava/lang/String;Ljava/lang/String;)V EFGHIJKLMgetSource()Ljava/util/Optional;isContainer()ZgetUniqueId()Ljava/lang/String;Z\from(Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/launcher/TestIdentifier; +89:;<=>?@Aequals(Ljava/lang/Object;)Z8getType()Lorg/junit/platform/engine/TestDescriptor$Type;toString()Ljava/lang/String; !getParentId()Ljava/util/Optional;f isTest()Z*getLegacyReportingName()Ljava/lang/String;"getDisplayName()Ljava/lang/String;y hashCode()Iequals(Ljava/lang/Object;)ZgetValue()Ljava/lang/String;getType()Ljava/lang/String;toString()Ljava/lang/String;-(Ljava/lang/String;Ljava/lang/String;)VPfindRepeatableAnnotations(Ljava/util/Optional;Ljava/lang/Class;)Ljava/util/List;IfindAnnotation(Ljava/util/Optional;Ljava/lang/Class;)Ljava/util/Optional;fgjCisAnnotated(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Z]1isInJavaLangAnnotationPackage(Ljava/lang/Class;)Z3isRepeatableAnnotationContainer(Ljava/lang/Class;)ZfindRepeatableAnnotations([Ljava/lang/annotation/Annotation;Ljava/lang/Class;Ljava/lang/Class;ZLjava/util/Set;Ljava/util/Set;)VifindAnnotation(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;ZLjava/util/Set;)Ljava/util/Optional;y{|Nlambda$isRepeatableAnnotationContainer$4(Ljava/lang/Class;)Ljava/lang/Boolean;findAnnotatedFields(Ljava/lang/Class;Ljava/lang/Class;Ljava/util/function/Predicate;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;3isAnnotated(Ljava/util/Optional;Ljava/lang/Class;)ZM^findPublicAnnotatedFields(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/List;YfindAnnotation(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/util/Optional;qrsfindRepeatableAnnotations(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;Ljava/lang/Class;ZLjava/util/Set;Ljava/util/Set;)V lambda$findRepeatableAnnotations$1(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Exception;)Lorg/junit/platform/commons/JUnitException;findAnnotatedMethods(Ljava/lang/Class;Ljava/lang/Class;Lorg/junit/platform/commons/util/ReflectionUtils$HierarchyTraversalMode;)Ljava/util/List;efindAnnotatedFields(Ljava/lang/Class;Ljava/lang/Class;Ljava/util/function/Predicate;)Ljava/util/List; ()V?kfindMetaAnnotation(Ljava/lang/Class;[Ljava/lang/annotation/Annotation;ZLjava/util/Set;)Ljava/util/Optional;`findRepeatableAnnotations(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/util/List; +Klambda$validate$1(Lorg/junit/platform/engine/TestEngine;)Ljava/lang/String;)*[validate(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/TestDescriptor;)V$(Klambda$validate$0(Lorg/junit/platform/engine/TestEngine;)Ljava/lang/String;%'6isAcyclic(Lorg/junit/platform/engine/TestDescriptor;)Z 12345678:;? ()V]proceed(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;)Ljava/lang/Object;@Cinvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;)Ljava/lang/Object;!"#%chainAndInvoke(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Ljava/util/List;)Ljava/lang/Object;+,-./chainInterceptors(Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/engine/execution/InvocationInterceptorChain$InterceptorCall;Ljava/util/List;)Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;56789; ()V getGroupId()Ljava/util/Optional;j getVersion()Ljava/util/Optional;#getArtifactId()Ljava/util/Optional;HcomposeFilters(Ljava/util/Collection;)Lorg/junit/platform/engine/Filter;NPQSTVUcomposeFilters([Lorg/junit/platform/engine/Filter;)Lorg/junit/platform/engine/Filter;78:;=>@nadaptFilter(Lorg/junit/platform/engine/Filter;Ljava/util/function/Function;)Lorg/junit/platform/engine/Filter;b+toPredicate()Ljava/util/function/Predicate;p(Ljava/lang/String;)V)0(Ljava/lang/String;Ljava/lang/Throwable;)V:(Ljava/lang/Throwable;)VEresolveSelectors(Lorg/junit/platform/engine/EngineDiscoveryRequest;Lorg/junit/jupiter/engine/descriptor/JupiterEngineDescriptor;)V-lambda$static$1(Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$InitializationContext;)Lorg/junit/platform/engine/support/discovery/SelectorResolver;&lambda$static$2(Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$InitializationContext;)Lorg/junit/platform/engine/TestDescriptor$Visitor;' ()V#$) ()V lambda$static$0(Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$InitializationContext;)Lorg/junit/platform/engine/support/discovery/SelectorResolver;%lambda$static$3(Lorg/junit/platform/engine/support/discovery/EngineDiscoveryRequestResolver$InitializationContext;)Lorg/junit/platform/engine/TestDescriptor$Visitor;( hashCode()Ifequals(Ljava/lang/Object;)ZVWYZ\](Ljava/lang/String;)V-.toString()Ljava/lang/String;kgetPath()Ljava/nio/file/Path;CgetDirectory()Ljava/io/File;8getRawPath()Ljava/lang/String;M;startTestSet(Lorg/junit/platform/launcher/TestIdentifier;)VgetStackTraceWriter(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;)Lorg/apache/maven/surefire/report/StackTraceWriter;nreportFailedTest(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;)VCensureTestSetStarted(Lorg/junit/platform/launcher/TestIdentifier;)V|OgetMethodName(Lorg/junit/platform/launcher/TestIdentifier;)Ljava/util/Optional;?executionStarted(Lorg/junit/platform/launcher/TestIdentifier;)VLMOQSTAtestPlanExecutionStarted(Lorg/junit/platform/launcher/TestPlan;)V@7updateTestPlan(Lorg/junit/platform/launcher/TestPlan;)Vvw?isTestSetStarted(Lorg/junit/platform/launcher/TestIdentifier;)ZVgetLegacyReportingName(Lorg/junit/platform/launcher/TestIdentifier;)Ljava/lang/String;QexecutionSkipped(Lorg/junit/platform/launcher/TestIdentifier;Ljava/lang/String;)V[\]^oexecutionFinished(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;)VegikmoqgetStackTraceWriter(Lorg/junit/platform/launcher/TestIdentifier;Ljava/lang/Throwable;)Lorg/apache/maven/surefire/report/StackTraceWriter;>completeTestSet(Lorg/junit/platform/launcher/TestIdentifier;)VcreateReportEntry(Lorg/junit/platform/launcher/TestIdentifier;Lorg/junit/platform/engine/TestExecutionResult;)Lorg/apache/maven/surefire/report/SimpleReportEntry;LgetClassName(Lorg/junit/platform/launcher/TestIdentifier;)Ljava/lang/String;zcreateTestSetReportEntry(Lorg/junit/platform/launcher/TestIdentifier;)Lorg/apache/maven/surefire/report/SimpleReportEntry;BtestPlanExecutionFinished(Lorg/junit/platform/launcher/TestPlan;)VF7(Lorg/apache/maven/surefire/report/RunListener;)V69:createReportEntry(Lorg/junit/platform/launcher/TestIdentifier;Lorg/apache/maven/surefire/report/StackTraceWriter;)Lorg/apache/maven/surefire/report/SimpleReportEntry;EstartTestSetIfPossible(Lorg/junit/platform/launcher/TestIdentifier;)VIcompleteTestSetIfNecessary(Lorg/junit/platform/launcher/TestIdentifier;)VscreateReportEntry(Lorg/junit/platform/launcher/TestIdentifier;)Lorg/apache/maven/surefire/report/SimpleReportEntry;[getLegacyReportingClassName(Lorg/junit/platform/launcher/TestIdentifier;)Ljava/lang/String;mexecutionFinished(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/TestExecutionResult;)V8igetTestIdentifier(Lorg/junit/platform/engine/TestDescriptor;)Lorg/junit/platform/launcher/TestIdentifier;A=executionStarted(Lorg/junit/platform/engine/TestDescriptor;)V.b(Lorg/junit/platform/launcher/TestPlan;Lorg/junit/platform/launcher/TestExecutionListener;)V !"OexecutionSkipped(Lorg/junit/platform/engine/TestDescriptor;Ljava/lang/String;)V3BdynamicTestRegistered(Lorg/junit/platform/engine/TestDescriptor;)V'()ureportingEntryPublished(Lorg/junit/platform/engine/TestDescriptor;Lorg/junit/platform/engine/reporting/ReportEntry;)V=ylambda$ofVoidMethod$0(Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;Lorg/junit/jupiter/api/extension/InvocationInterceptor;Lorg/junit/jupiter/api/extension/InvocationInterceptor$Invocation;Lorg/junit/jupiter/api/extension/ReflectiveInvocationContext;Lorg/junit/jupiter/api/extension/ExtensionContext;)Ljava/lang/Void;stofVoidMethod(Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall;)Lorg/junit/jupiter/engine/execution/ExecutableInvoker$ReflectiveInterceptorCall;r(Ljava/util/Map;)V ++,-.01379;entrySet()Ljava/util/Set;ABCEFHZ(Ljava/io/File;Ljava/util/List;Ljava/util/List;Ljava/util/List;ZLjava/lang/String;)V=>getIncludes()Ljava/util/List;Y7getRunOrder()[Lorg/apache/maven/surefire/util/RunOrder;sisFailIfNoTests()Znr(Ljava/io/File;Ljava/util/List;Ljava/util/List;Ljava/util/List;Z[Lorg/apache/maven/surefire/util/RunOrder;)V0123456"getSpecificTests()Ljava/util/List;D'getTestClassesDirectory()Ljava/io/File;NgetExcludes()Ljava/util/List;d UfindMethod(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Optional;itryToReadFieldValue(Ljava/lang/reflect/Field;Ljava/lang/Object;)Lorg/junit/platform/commons/function/Try;CnewInstance(Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;1loadClass(Ljava/lang/String;)Ljava/util/Optional;FwfindAllClassesInPackage(Ljava/lang/String;Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/List;vfindAllClassesInModule(Ljava/lang/String;Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/List;KtryToLoadClass(Ljava/lang/String;)Lorg/junit/platform/commons/function/Try;[RfindNestedClasses(Ljava/lang/Class;Ljava/util/function/Predicate;)Ljava/util/List;findMethods(Ljava/lang/Class;Ljava/util/function/Predicate;Lorg/junit/platform/commons/support/HierarchyTraversalMode;)Ljava/util/List;findFields(Ljava/lang/Class;Ljava/util/function/Predicate;Lorg/junit/platform/commons/support/HierarchyTraversalMode;)Ljava/util/List;UfindMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/util/Optional;yfindAllClassesInClasspathRoot(Ljava/net/URI;Ljava/util/function/Predicate;Ljava/util/function/Predicate;)Ljava/util/List;r_invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;JcreateDiscoveredTestEnginesMessage(Ljava/lang/Iterable;)Ljava/lang/String;,-./01 ()V %loadTestEngines()Ljava/lang/Iterable;#$%&IcomputeAttributes(Lorg/junit/platform/engine/TestEngine;)Ljava/util/List;6789:; ()V-getDefaultExecutionMode()Ljava/util/Optional;hgetJavaIoTmpDir()Ljava/io/File;4isOSNameMatch(Ljava/lang/String;Ljava/lang/String;)ZTisOSMatch(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z*getJavaVersionMatches(Ljava/lang/String;)Z3getOSMatches(Ljava/lang/String;Ljava/lang/String;)Z%getOSMatchesName(Ljava/lang/String;)Z]isJavaVersionAtLeast(Lorg/apache/maven/surefire/shade/org/apache/commons/lang3/JavaVersion;)Z7getSystemProperty(Ljava/lang/String;)Ljava/lang/String;isJavaAwtHeadless()Z7isOSVersionMatch(Ljava/lang/String;Ljava/lang/String;)Z ()V`Xn     + + +               ()VgetUserDir()Ljava/io/File;getUserHome()Ljava/io/File;9isJavaVersionMatch(Ljava/lang/String;Ljava/lang/String;)ZgetJavaHome()Ljava/io/File; hashCode()ITequals(Ljava/lang/Object;)ZDEGHJK(Ljava/lang/String;)V+,-toString()Ljava/lang/String;Y,getClasspathResourceName()Ljava/lang/String;; popMarker()Z]_`b +hasNext()Z23next()Ljava/lang/Object;;=?C ()V% remove()VLNPT1newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;12467()V ()V!()*+7newDaemonThread(Ljava/lang/Runnable;)Ljava/lang/Thread;JKLMOQRNnewDaemonThreadFactory(Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory;EInewDaemonThread(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/lang/Thread;WXYZ\^_T1l ^P7_3chaSBdm|5DkxIs(Zz~M2-nE!WYRAq,{e8o/$ 9.=<b'}%?itFC:N 0[^ \ No newline at end of file diff --git a/kover-maven-plugin/examples/additional-binary-report/pom.xml b/kover-maven-plugin/examples/additional-binary-report/pom.xml new file mode 100644 index 00000000..0519c782 --- /dev/null +++ b/kover-maven-plugin/examples/additional-binary-report/pom.xml @@ -0,0 +1,133 @@ + + + + + 4.0.0 + + org.example + additional-binary-report + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-xml + + report-xml + + + + kover-log + + log + + + + kover-verify + + verify + + + + + + ${project.basedir}/additional.ic + + + + + + 100 + + + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/additional-binary-report/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/additional-binary-report/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/additional-binary-report/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/additional-binary-report/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/additional-binary-report/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/additional-binary-report/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/all-goals/pom.xml b/kover-maven-plugin/examples/all-goals/pom.xml new file mode 100644 index 00000000..7a39ae21 --- /dev/null +++ b/kover-maven-plugin/examples/all-goals/pom.xml @@ -0,0 +1,131 @@ + + + + + 4.0.0 + + org.example + all-goals + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-xml + + report-xml + + + + kover-log + + log + + + + kover-html + + report-html + + + + kover-verify + + verify + + + + kover-ic + + report-ic + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/all-goals/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/all-goals/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/all-goals/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/all-goals/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/all-goals/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/all-goals/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/change-agent-line/pom.xml b/kover-maven-plugin/examples/change-agent-line/pom.xml new file mode 100644 index 00000000..d562b2e3 --- /dev/null +++ b/kover-maven-plugin/examples/change-agent-line/pom.xml @@ -0,0 +1,105 @@ + + + + + 4.0.0 + + org.example + change-agent-line + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + jvmArgs + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + + + + maven-surefire-plugin + 2.22.2 + + ${jvmArgs} + + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/change-agent-line/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/change-agent-line/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/change-agent-line/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/change-agent-line/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/change-agent-line/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/change-agent-line/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/change-paths/pom.xml b/kover-maven-plugin/examples/change-paths/pom.xml new file mode 100644 index 00000000..10826355 --- /dev/null +++ b/kover-maven-plugin/examples/change-paths/pom.xml @@ -0,0 +1,126 @@ + + + + + 4.0.0 + + org.example + change-paths + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-xml + + report-xml + + + + kover-html + + report-html + + + + kover-ic + + report-ic + + + + + + custom-html + ${project.build.directory}/custom.ic + ${project.build.directory}/custom.xml + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/change-paths/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/change-paths/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/change-paths/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/change-paths/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/change-paths/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/change-paths/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/charset/pom.xml b/kover-maven-plugin/examples/charset/pom.xml new file mode 100644 index 00000000..977eedc5 --- /dev/null +++ b/kover-maven-plugin/examples/charset/pom.xml @@ -0,0 +1,112 @@ + + + + + 4.0.0 + + org.example + charset + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + + kover-html + + report-html + + + UTF_16BE + + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/charset/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/charset/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/charset/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/charset/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/charset/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/charset/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/exclude-instrumentation/pom.xml b/kover-maven-plugin/examples/exclude-instrumentation/pom.xml new file mode 100644 index 00000000..b08a6443 --- /dev/null +++ b/kover-maven-plugin/examples/exclude-instrumentation/pom.xml @@ -0,0 +1,110 @@ + + + + + 4.0.0 + + org.example + exclude-instrumentation + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + *.Main + + + + kover-xml + + report-xml + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/exclude-instrumentation/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/exclude-instrumentation/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/exclude-instrumentation/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/exclude-instrumentation/src/main/kotlin/SecondClass.kt b/kover-maven-plugin/examples/exclude-instrumentation/src/main/kotlin/SecondClass.kt new file mode 100644 index 00000000..133bd222 --- /dev/null +++ b/kover-maven-plugin/examples/exclude-instrumentation/src/main/kotlin/SecondClass.kt @@ -0,0 +1,7 @@ +package kotlinx.kover.maven.plugin.testing + +class SecondClass { + fun used() { + println("used") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/exclude-instrumentation/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/exclude-instrumentation/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..c3d62cd5 --- /dev/null +++ b/kover-maven-plugin/examples/exclude-instrumentation/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + SecondClass().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-common/pom.xml b/kover-maven-plugin/examples/filters-common/pom.xml new file mode 100644 index 00000000..a27ba1fd --- /dev/null +++ b/kover-maven-plugin/examples/filters-common/pom.xml @@ -0,0 +1,146 @@ + + + + + 4.0.0 + + org.example + filters-common + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-xml + + report-xml + + + + kover-log + + log + + + + kover-html + + report-html + + + + kover-verify + + verify + + + + kover-ic + + report-ic + + + + + + CLASS + + + + kotlinx.kover.maven.plugin.testing.* + + + *.ExcludedByName + *.ExcludeAnnotation + java.lang.AutoCloseable + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByAnnotation.kt b/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByAnnotation.kt new file mode 100644 index 00000000..23b19809 --- /dev/null +++ b/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByAnnotation.kt @@ -0,0 +1,14 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +annotation class ExcludeAnnotation + +@ExcludeAnnotation +class ExcludedByAnnotation { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByName.kt b/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByName.kt new file mode 100644 index 00000000..294222d0 --- /dev/null +++ b/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByName.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +class ExcludedByName { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByParent.kt b/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByParent.kt new file mode 100644 index 00000000..f4bd9420 --- /dev/null +++ b/kover-maven-plugin/examples/filters-common/src/main/kotlin/ExcludedByParent.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +import java.lang.AutoCloseable + +class ExcludedByParent: AutoCloseable { + fun function() { + println("Hello world") + } + + override fun close() { + println("foo") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-common/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/filters-common/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/filters-common/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-common/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/filters-common/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/filters-common/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-rules/pom.xml b/kover-maven-plugin/examples/filters-rules/pom.xml new file mode 100644 index 00000000..03857000 --- /dev/null +++ b/kover-maven-plugin/examples/filters-rules/pom.xml @@ -0,0 +1,183 @@ + + + + + 4.0.0 + + org.example + filters-rules + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-xml + + report-xml + + + + kover-log + + log + + + + kover-html + + report-html + + + + kover-verify + + verify + + + + kover-ic + + report-ic + + + + + + true + + + + *.ThirdClass + + + + + + Inherited filter + CLASS + + + 100 + + + + + Exclude Main + CLASS + + + *.Main + + + + + 100 + + + + + Exclude SecondClass + CLASS + + + *.SecondClass + + + + + 100 + + + + + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-rules/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/filters-rules/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/filters-rules/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-rules/src/main/kotlin/SecondClass.kt b/kover-maven-plugin/examples/filters-rules/src/main/kotlin/SecondClass.kt new file mode 100644 index 00000000..f06cf605 --- /dev/null +++ b/kover-maven-plugin/examples/filters-rules/src/main/kotlin/SecondClass.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +import java.lang.AutoCloseable + +class SecondClass { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-rules/src/main/kotlin/ThirdClass.kt b/kover-maven-plugin/examples/filters-rules/src/main/kotlin/ThirdClass.kt new file mode 100644 index 00000000..ed40a525 --- /dev/null +++ b/kover-maven-plugin/examples/filters-rules/src/main/kotlin/ThirdClass.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +import java.lang.AutoCloseable + +class ThirdClass { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/filters-rules/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/filters-rules/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/filters-rules/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/instrumentation-only/pom.xml b/kover-maven-plugin/examples/instrumentation-only/pom.xml new file mode 100644 index 00000000..4131a25e --- /dev/null +++ b/kover-maven-plugin/examples/instrumentation-only/pom.xml @@ -0,0 +1,101 @@ + + + + + 4.0.0 + + org.example + instrumentation-only + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/instrumentation-only/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/instrumentation-only/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/instrumentation-only/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/instrumentation-only/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/instrumentation-only/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/instrumentation-only/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/logs/pom.xml b/kover-maven-plugin/examples/logs/pom.xml new file mode 100644 index 00000000..1e17cb5b --- /dev/null +++ b/kover-maven-plugin/examples/logs/pom.xml @@ -0,0 +1,114 @@ + + + + + 4.0.0 + + org.example + logs + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + + kover-log + + log + + + CLASS + BRANCH + COVERED_COUNT + {value} branches covered in {entity} + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/logs/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/logs/src/main/kotlin/Main.kt new file mode 100644 index 00000000..f488ba76 --- /dev/null +++ b/kover-maven-plugin/examples/logs/src/main/kotlin/Main.kt @@ -0,0 +1,14 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used(flag: Boolean) { + if (flag) { + println("used") + } + println("false") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/logs/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/logs/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..68483a64 --- /dev/null +++ b/kover-maven-plugin/examples/logs/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used(true) + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child1-tests/pom.xml b/kover-maven-plugin/examples/merged-report/child1-tests/pom.xml new file mode 100644 index 00000000..75e1730f --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child1-tests/pom.xml @@ -0,0 +1,26 @@ + + + + + 4.0.0 + child1-tests + + + org.example + merged-report + 1.0-SNAPSHOT + + + + + org.example + child1 + ${project.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child1-tests/src/main/kotlin/TestUtils.kt b/kover-maven-plugin/examples/merged-report/child1-tests/src/main/kotlin/TestUtils.kt new file mode 100644 index 00000000..586748db --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child1-tests/src/main/kotlin/TestUtils.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +class TestUtils { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child1-tests/src/test/kotlin/Child1Tests.kt b/kover-maven-plugin/examples/merged-report/child1-tests/src/test/kotlin/Child1Tests.kt new file mode 100644 index 00000000..1ecf512e --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child1-tests/src/test/kotlin/Child1Tests.kt @@ -0,0 +1,15 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class Child1Tests { + @Test + fun test() { + TestUtils().function() + Child1Class().function() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child1/pom.xml b/kover-maven-plugin/examples/merged-report/child1/pom.xml new file mode 100644 index 00000000..5b9db449 --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child1/pom.xml @@ -0,0 +1,18 @@ + + + + + 4.0.0 + child1 + + + org.example + merged-report + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child1/src/main/kotlin/Child1Class.kt b/kover-maven-plugin/examples/merged-report/child1/src/main/kotlin/Child1Class.kt new file mode 100644 index 00000000..af44c90f --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child1/src/main/kotlin/Child1Class.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +class Child1Class { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child2-2/pom.xml b/kover-maven-plugin/examples/merged-report/child2-2/pom.xml new file mode 100644 index 00000000..c2aa1530 --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child2-2/pom.xml @@ -0,0 +1,19 @@ + + + + + 4.0.0 + child2 + 1.1-SNAPSHOT + + + org.example + merged-report + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child2-2/src/main/kotlin/Child2ExtraClass.kt b/kover-maven-plugin/examples/merged-report/child2-2/src/main/kotlin/Child2ExtraClass.kt new file mode 100644 index 00000000..941034dc --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child2-2/src/main/kotlin/Child2ExtraClass.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +class Child2ExtraClass { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child2/pom.xml b/kover-maven-plugin/examples/merged-report/child2/pom.xml new file mode 100644 index 00000000..00b61640 --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child2/pom.xml @@ -0,0 +1,18 @@ + + + + + 4.0.0 + child2 + + + org.example + merged-report + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/child2/src/main/kotlin/Child2Class.kt b/kover-maven-plugin/examples/merged-report/child2/src/main/kotlin/Child2Class.kt new file mode 100644 index 00000000..fbf41019 --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/child2/src/main/kotlin/Child2Class.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +class Child2Class { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/pom.xml b/kover-maven-plugin/examples/merged-report/pom.xml new file mode 100644 index 00000000..943fcaaa --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/pom.xml @@ -0,0 +1,113 @@ + + + + + 4.0.0 + + org.example + merged-report + 1.0-SNAPSHOT + + pom + + + child1 + child1-tests + report + child2 + child2-2 + + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/merged-report/report/pom.xml b/kover-maven-plugin/examples/merged-report/report/pom.xml new file mode 100644 index 00000000..23bcf93b --- /dev/null +++ b/kover-maven-plugin/examples/merged-report/report/pom.xml @@ -0,0 +1,95 @@ + + + + + 4.0.0 + report + 1.0-SNAPSHOT + + + org.example + merged-report + 1.0-SNAPSHOT + + + + + org.example + child1 + ${project.version} + compile + + + org.example + child1-tests + ${project.version} + test + + + org.example + child2 + (1.0-SNAPSHOT,) + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + kover-xml + + report-xml + + + + kover-log + + log + + + + print-artifact + + print-artifact-info + + + + kover-verify + + verify + + + + + + true + + CLASS + + true + + + CLASS + + + COVERED_COUNT + 100 + + + + + + + + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/multidir/pom.xml b/kover-maven-plugin/examples/multidir/pom.xml new file mode 100644 index 00000000..880dfbe3 --- /dev/null +++ b/kover-maven-plugin/examples/multidir/pom.xml @@ -0,0 +1,112 @@ + + + + + 4.0.0 + + org.example + multidir + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + ${project.basedir}/src/extra + + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + print-artifact + + print-artifact-info + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/multidir/src/extra/Secondary.kt b/kover-maven-plugin/examples/multidir/src/extra/Secondary.kt new file mode 100644 index 00000000..8c002665 --- /dev/null +++ b/kover-maven-plugin/examples/multidir/src/extra/Secondary.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.testing + +class Secondary { + fun function() { + println("Hello world") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/multidir/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/multidir/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/multidir/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/multidir/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/multidir/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/multidir/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/prepend-agent-line/pom.xml b/kover-maven-plugin/examples/prepend-agent-line/pom.xml new file mode 100644 index 00000000..161d5fd3 --- /dev/null +++ b/kover-maven-plugin/examples/prepend-agent-line/pom.xml @@ -0,0 +1,102 @@ + + + + + 4.0.0 + + org.example + prepend-agent-line + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + -ea + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/prepend-agent-line/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/prepend-agent-line/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/prepend-agent-line/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/prepend-agent-line/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/prepend-agent-line/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/prepend-agent-line/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/site/pom.xml b/kover-maven-plugin/examples/site/pom.xml new file mode 100644 index 00000000..7a4a6a90 --- /dev/null +++ b/kover-maven-plugin/examples/site/pom.xml @@ -0,0 +1,111 @@ + + + + + 4.0.0 + + org.example + site + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + + true + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/site/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/site/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/site/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/site/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/site/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/site/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/skip-config/pom.xml b/kover-maven-plugin/examples/skip-config/pom.xml new file mode 100644 index 00000000..3f9b0f5f --- /dev/null +++ b/kover-maven-plugin/examples/skip-config/pom.xml @@ -0,0 +1,134 @@ + + + + + 4.0.0 + + org.example + skip-config + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-xml + + report-xml + + + + kover-log + + log + + + + kover-html + + report-html + + + + kover-verify + + verify + + + + kover-ic + + report-ic + + + + + true + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/skip-config/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/skip-config/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/skip-config/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/skip-config/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/skip-config/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/skip-config/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/skip-property/pom.xml b/kover-maven-plugin/examples/skip-property/pom.xml new file mode 100644 index 00000000..f05038f9 --- /dev/null +++ b/kover-maven-plugin/examples/skip-property/pom.xml @@ -0,0 +1,132 @@ + + + + + 4.0.0 + + org.example + skip-property + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + true + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-xml + + report-xml + + + + kover-log + + log + + + + kover-html + + report-html + + + + kover-verify + + verify + + + + kover-ic + + report-ic + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/skip-property/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/skip-property/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/skip-property/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/skip-property/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/skip-property/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/skip-property/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/titles/pom.xml b/kover-maven-plugin/examples/titles/pom.xml new file mode 100644 index 00000000..55617ef4 --- /dev/null +++ b/kover-maven-plugin/examples/titles/pom.xml @@ -0,0 +1,119 @@ + + + + + 4.0.0 + + org.example + titles + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-xml + + report-xml + + + Custom XML + + + + kover-html + + report-html + + + Custom HTML + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/titles/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/titles/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/titles/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/titles/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/titles/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..7a1bf0b1 --- /dev/null +++ b/kover-maven-plugin/examples/titles/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import kotlin.test.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-error/pom.xml b/kover-maven-plugin/examples/verify-error/pom.xml new file mode 100644 index 00000000..835fe67f --- /dev/null +++ b/kover-maven-plugin/examples/verify-error/pom.xml @@ -0,0 +1,130 @@ + + + + + 4.0.0 + + org.example + verify-error + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-verify + + verify + + + + + + + + + + 100 + + + + + package covered lines + PACKAGE + + + MISSED_COUNT + LINE + 1 + + + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-error/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/verify-error/src/main/kotlin/Main.kt new file mode 100644 index 00000000..1c667efe --- /dev/null +++ b/kover-maven-plugin/examples/verify-error/src/main/kotlin/Main.kt @@ -0,0 +1,15 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } + + fun extra() { + println("extra") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-error/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/verify-error/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..c0622a34 --- /dev/null +++ b/kover-maven-plugin/examples/verify-error/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import org.junit.jupiter.api.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-pass/pom.xml b/kover-maven-plugin/examples/verify-pass/pom.xml new file mode 100644 index 00000000..53f10766 --- /dev/null +++ b/kover-maven-plugin/examples/verify-pass/pom.xml @@ -0,0 +1,118 @@ + + + + + 4.0.0 + + org.example + verify-pass + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-verify + + verify + + + + + + + + + 10 + + + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-pass/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/verify-pass/src/main/kotlin/Main.kt new file mode 100644 index 00000000..221f082c --- /dev/null +++ b/kover-maven-plugin/examples/verify-pass/src/main/kotlin/Main.kt @@ -0,0 +1,11 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-pass/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/verify-pass/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..c0622a34 --- /dev/null +++ b/kover-maven-plugin/examples/verify-pass/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import org.junit.jupiter.api.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-warn/pom.xml b/kover-maven-plugin/examples/verify-warn/pom.xml new file mode 100644 index 00000000..2635fbb4 --- /dev/null +++ b/kover-maven-plugin/examples/verify-warn/pom.xml @@ -0,0 +1,131 @@ + + + + + 4.0.0 + + org.example + verify-warn + 1.0-SNAPSHOT + + + UTF-8 + official + 1.8 + 0.8.2 + + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + + src/main/kotlin + src/test/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile-kotlin + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + + org.jetbrains.kotlinx + kover-maven-plugin + ${kover.version} + + + instr + + instrumentation + + + + kover-verify + + verify + + + + + true + + + + + + 100 + + + + + package covered lines + PACKAGE + + + MISSED_COUNT + LINE + 1 + + + + + + + + + maven-surefire-plugin + 2.22.2 + + + maven-failsafe-plugin + 2.22.2 + + + + + + + + org.jetbrains.kotlin + kotlin-test-junit5 + ${kotlin.version} + test + + + org.junit.jupiter + junit-jupiter + 5.8.2 + test + + + org.jetbrains.kotlin + kotlin-stdlib + ${kotlin.version} + + + + \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-warn/src/main/kotlin/Main.kt b/kover-maven-plugin/examples/verify-warn/src/main/kotlin/Main.kt new file mode 100644 index 00000000..1c667efe --- /dev/null +++ b/kover-maven-plugin/examples/verify-warn/src/main/kotlin/Main.kt @@ -0,0 +1,15 @@ +package kotlinx.kover.maven.plugin.testing + +class Main { + fun used() { + println("used") + } + + fun unused() { + println("unused") + } + + fun extra() { + println("extra") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/examples/verify-warn/src/test/kotlin/MainKtTest.kt b/kover-maven-plugin/examples/verify-warn/src/test/kotlin/MainKtTest.kt new file mode 100644 index 00000000..c0622a34 --- /dev/null +++ b/kover-maven-plugin/examples/verify-warn/src/test/kotlin/MainKtTest.kt @@ -0,0 +1,10 @@ +package kotlinx.kover.maven.plugin.testing + +import org.junit.jupiter.api.Test + +class MainKtTest { + @Test + fun myTest() { + Main().used() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/cases/MavenPluginTests.kt b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/cases/MavenPluginTests.kt new file mode 100644 index 00000000..df0f5111 --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/cases/MavenPluginTests.kt @@ -0,0 +1,265 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.tests.functional.cases + +import kotlinx.kover.maven.plugin.tests.functional.framework.* +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.ARTIFACT_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.DEFAULT_REPORT_DIR +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.INSTRUMENTATION_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.LOG_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.VERIFY_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.CounterAssert.* +import kotlinx.kover.maven.plugin.tests.functional.framework.CounterType.LINE +import org.junit.jupiter.api.Test +import kotlin.test.assertTrue + +class MavenPluginTests { + @Test + fun testInstrumentation() { + runAndCheckExample("instrumentation-only", "verify") { + assertBuildIsSuccessful() + assertBinaryReportExists() + assertDefaultXmlReportExists(false) + assertDefaultHtmlReportExists(false) + assertDefaultIcReportExists(false) + } + } + + @Test + fun testSkipByProperty() { + runAndCheckExample("skip-property", "verify") { + assertBuildIsSuccessful() + assertAllSkipped() + } + } + + @Test + fun testSkipByConfiguration() { + runAndCheckExample("skip-config", "verify") { + assertBuildIsSuccessful() + assertAllSkipped() + } + } + + @Test + fun testPassVerification() { + runAndCheckExample("verify-pass", "verify") { + assertBuildIsSuccessful() + assertVerificationPassed() + } + } + + @Test + fun testAllGoalsDefaults() { + runAndCheckExample("all-goals", "verify") { + assertBuildIsSuccessful() + + // no verification rules by default + assertNoVerificationRules() + assertDefaultHtmlReportExists() + assertDefaultIcReportExists() + assertKoverLogIs(LOG_TASK_NAME, "application line coverage: 66.6667%") + + checkDefaultXmlReport { + classCounter("kotlinx/kover/maven/plugin/testing/Main", LINE) assert Coverage(2, 1) + } + } + } + + @Test + fun testVerificationError() { + runAndCheckExample("verify-error", "verify") { + assertBuildIsSuccessful(false) + assertLogContains( + "Kover Verification Error", + "Rule violated: lines covered percentage is 50.000000, but expected minimum is 100", + "Rule 'package covered lines' violated: lines missed count for package 'kotlinx.kover.maven.plugin.testing' is 2, but expected maximum is 1" + ) + } + } + + @Test + fun testVerificationWarning() { + runAndCheckExample("verify-warn", "verify") { + assertBuildIsSuccessful() + assertKoverLogIs( + VERIFY_TASK_NAME, + """Kover Verification Error +Rule violated: lines covered percentage is 50.000000, but expected minimum is 100 +Rule 'package covered lines' violated: lines missed count for package 'kotlinx.kover.maven.plugin.testing' is 2, but expected maximum is 1""" + ) + } + } + + @Test + fun testChangeAgentLine() { + runAndCheckExample("change-agent-line", "test") { + assertBuildIsSuccessful() + assertBinaryReportExists() + + val taskLog = koverGoalLog(INSTRUMENTATION_TASK_NAME) + assertTrue( + taskLog.contains("Test property 'jvmArgs' set to \"-javaagent:"), + "Invalid instrumentation task log, actual '$taskLog'" + ) + } + } + + @Test + fun testPrependAgentLine() { + runAndCheckExample("prepend-agent-line", "test") { + assertBuildIsSuccessful() + assertBinaryReportExists() + + val taskLog = koverGoalLog(INSTRUMENTATION_TASK_NAME) + assertTrue( + taskLog.contains("Test property 'argLine' set to -ea \"-javaagent:"), + "Invalid instrumentation task log, actual '$taskLog'" + ) + } + } + + @Test + fun testMultiDirectory() { + runAndCheckExample("multidir", "verify") { + assertBuildIsSuccessful() + assertBinaryReportExists() + assertKoverLogIs( + ARTIFACT_TASK_NAME, """Kover artifact + +Binary reports +target/kover/test.ic + +Source root directories +src/main/kotlin +target/generated-sources/annotations +src/extra + +Target root directories +target/classes +""" + ) + } + } + + @Test + fun testCommonFilters() { + runAndCheckExample("filters-common", "verify") { + assertBuildIsSuccessful() + + checkDefaultXmlReport { + classCounter("kotlinx/kover/maven/plugin/testing/Main", LINE) assert IsCovered + classCounter("kotlinx/kover/maven/plugin/testing/ExcludedByParent", LINE) assert IsAbsent + classCounter("kotlinx/kover/maven/plugin/testing/ExcludedByName", LINE) assert IsAbsent + classCounter("kotlinx/kover/maven/plugin/testing/ExcludedByAnnotation", LINE) assert IsAbsent + } + assertKoverLogIs(LOG_TASK_NAME, "kotlinx.kover.maven.plugin.testing.Main line coverage: 66.6667%") + } + } + + @Test + fun testFiltersInRules() { + runAndCheckExample("filters-rules", "verify") { + assertBuildIsSuccessful() + + assertKoverLogIs( + VERIFY_TASK_NAME, """Kover Verification Error +Rule 'Inherited filter' violated: + lines covered percentage for class 'kotlinx.kover.maven.plugin.testing.Main' is 66.666700, but expected minimum is 100 + lines covered percentage for class 'kotlinx.kover.maven.plugin.testing.SecondClass' is 0.000000, but expected minimum is 100 +Rule 'Exclude Main' violated: + lines covered percentage for class 'kotlinx.kover.maven.plugin.testing.SecondClass' is 0.000000, but expected minimum is 100 + lines covered percentage for class 'kotlinx.kover.maven.plugin.testing.ThirdClass' is 0.000000, but expected minimum is 100 +Rule 'Exclude SecondClass' violated: + lines covered percentage for class 'kotlinx.kover.maven.plugin.testing.Main' is 66.666700, but expected minimum is 100 + lines covered percentage for class 'kotlinx.kover.maven.plugin.testing.ThirdClass' is 0.000000, but expected minimum is 100""" + ) + } + } + + @Test + fun testMergedReports() = runAndCheckExample("merged-report", "verify") { + assertBuildIsSuccessful() + + assertKoverLogIs( + LOG_TASK_NAME, + """kotlinx.kover.maven.plugin.testing.Child1Class line coverage: 100% +kotlinx.kover.maven.plugin.testing.Child2ExtraClass line coverage: 0%""" + ) + + assertKoverLogIs(VERIFY_TASK_NAME, """Kover Verification Error +Rule violated: + lines covered count for class 'kotlinx.kover.maven.plugin.testing.Child1Class' is 2, but expected minimum is 100 + lines covered count for class 'kotlinx.kover.maven.plugin.testing.Child2ExtraClass' is 0, but expected minimum is 100""") + + checkDefaultXmlReport("report") { + classCounter("kotlinx/kover/maven/plugin/testing/Child1Class", LINE) assert IsCovered + classCounter("kotlinx/kover/maven/plugin/testing/Child2Class", LINE) assert IsAbsent + classCounter("kotlinx/kover/maven/plugin/testing/Child2ExtraClass", LINE) assert IsFullyMissed + } + } + + @Test + fun testPathChanged() = runAndCheckExample("change-paths", "verify") { + assertBuildIsSuccessful() + assertHtmlReportExists("${DEFAULT_REPORT_DIR}/custom-html") + assertIcReportExists("custom.ic") + + checkXmlReport("custom.xml") { + classCounter("kotlinx/kover/maven/plugin/testing/Main", LINE) assert IsCovered + } + } + + @Test + fun testAdditionalBinaryReport() = runAndCheckExample("additional-binary-report", "verify") { + assertBuildIsSuccessful() + + assertKoverLogIs(LOG_TASK_NAME, "application line coverage: 100%") + checkDefaultXmlReport { + classCounter("kotlinx/kover/maven/plugin/testing/Main", LINE) assert IsFullyCovered + } + } + + @Test + fun testSiteReporting() = runAndCheckExample("site", "test", "site") { + assertBuildIsSuccessful() + assertDefaultHtmlReportExists(true) + assertDefaultXmlReportExists(false) + assertDefaultIcReportExists(false) + } + + @Test + fun testTitleOverride() = runAndCheckExample("titles", "verify") { + assertBuildIsSuccessful() + assertDefaultXmlTitle("Custom XML") + assertDefaultHtmlTitle("Custom HTML") + } + + + @Test + fun testLogTaskConfig() = runAndCheckExample("logs", "verify") { + assertBuildIsSuccessful() + assertKoverLogIs( + LOG_TASK_NAME, + """1 branches covered in kotlinx.kover.maven.plugin.testing.Main""" + ) + } + + @Test + fun testExcludeFromInstrumentation() = runAndCheckExample("exclude-instrumentation", "verify") { + assertBuildIsSuccessful() + checkDefaultXmlReport { + classCounter("kotlinx.kover.maven.plugin.testing.Main", LINE) assert IsFullyMissed + classCounter("kotlinx.kover.maven.plugin.testing.SecondClass", LINE) assert IsCovered + } + } + + @Test + fun testHtmlCharset() = runAndCheckExample("charset", "verify") { + assertBuildIsSuccessful() + assertDefaultHtmlTitle("charset", "UTF-16BE") + } + +} diff --git a/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/BuildConstants.kt b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/BuildConstants.kt new file mode 100644 index 00000000..69840198 --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/BuildConstants.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.tests.functional.framework + +object BuildConstants { + const val BINARY_REPORT_PATH = "kover/test.ic" + + const val BUILD_DIRECTORY = "target" + const val DEFAULT_REPORT_DIR = "site/kover" + const val DEFAULT_XML_REPORT_PATH = "$DEFAULT_REPORT_DIR/report.xml" + const val DEFAULT_IC_REPORT_PATH = "$DEFAULT_REPORT_DIR/report.ic" + const val DEFAULT_HTML_REPORT_PATH = "$DEFAULT_REPORT_DIR/html" + + const val INSTRUMENTATION_TASK_NAME = "instrumentation" + const val XML_TASK_NAME = "report-xml" + const val LOG_TASK_NAME = "log" + const val HTML_TASK_NAME = "report-html" + const val VERIFY_TASK_NAME = "verify" + const val IC_TASK_NAME = "report-ic" + const val ARTIFACT_TASK_NAME = "print-artifact-info" +} \ No newline at end of file diff --git a/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/Checker.kt b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/Checker.kt new file mode 100644 index 00000000..7cd7de91 --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/Checker.kt @@ -0,0 +1,42 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.tests.functional.framework + +import java.io.File +import java.nio.file.Files + +private const val EXAMPLES_DIR = "examples" + +fun runAndCheckExample(name: String, vararg args: String, checker: CheckerContext.() -> Unit) { + val exampleDir = File(EXAMPLES_DIR).resolve(name) + if (!exampleDir.exists()) { + throw MavenAssertionException("Example '$exampleDir' not found in directory '$EXAMPLES_DIR'") + } + + exampleDir.runAndCheck(args.toList(), checker) +} + +private fun File.runAndCheck(commands: List, checker: CheckerContext.() -> Unit) { + val workingDirectory = Files.createTempDirectory("kover-maven-test").toFile() + + this.copyRecursively(workingDirectory) + + val log = runMaven( + workingDirectory, + commands, + SystemProperties.repository, + SystemProperties.kotlinVersion, + SystemProperties.koverVersion + ) + + try { + createContext(log, workingDirectory).checker() + + // delete build files + workingDirectory.deleteRecursively() + } catch (t: Throwable) { + throw AssertionError("Assertion error: ${t.message}\nProject build path file://${workingDirectory.canonicalPath}\nBuild log:\n\n$log", t) + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/CheckerContext.kt b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/CheckerContext.kt new file mode 100644 index 00000000..a930ebcc --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/CheckerContext.kt @@ -0,0 +1,90 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.tests.functional.framework + +import java.io.File +import kotlin.test.assertEquals +import kotlin.test.assertNotNull +import kotlin.test.assertNull +import kotlin.test.assertTrue + +interface CheckerContext { + val isSuccessful: Boolean + + val log: String + + fun koverGoalLog(goalName: String, moduleId: String? = null): String + + fun findFile(relativePath: String, module: String? = null): File +} + +class MavenAssertionException(message: String, cause: Throwable? = null): Exception(message, cause) + +interface XmlReportContent { + fun classCounter(className: String, type: CounterType): Counter + fun methodCounter(className: String, methodName: String, type: CounterType): Counter +} + +class Counter( + val symbol: String, + val type: CounterType, + val values: CounterValues? +) + +data class CounterValues(val missed: Int, val covered: Int) + +enum class CounterType { + INSTRUCTION, + LINE, + BRANCH, + METHOD +} + +sealed class CounterAssert { + object IsAbsent : CounterAssert() + object IsFullyMissed : CounterAssert() + object IsFullyCovered : CounterAssert() + object IsCovered : CounterAssert() + class IsCoveredFor(val value: Int) : CounterAssert() + class IsCoveredGreaterOrEquals(val value: Int) : CounterAssert() + class Coverage(val covered: Int, val missed: Int) : CounterAssert() +} + +infix fun Counter.assert(condition: CounterAssert) { + when (condition) { + CounterAssert.IsAbsent -> assertNull(values, "Counter '$symbol' with type '$type' isn't absent") + CounterAssert.IsCovered -> { + assertNotNull(values, "Counter '$symbol' with type '$type' isn't covered because it absent") + assertTrue(values.covered > 0, "Counter '$symbol' with type '$type' isn't covered") + } + is CounterAssert.IsCoveredFor -> { + assertNotNull(values, "Counter '$symbol' with type '$type' isn't covered because it absent") + assertEquals(values.covered, condition.value, "Counter '$symbol' with type '$type' has illegal coverage") + } + is CounterAssert.IsCoveredGreaterOrEquals -> { + assertNotNull(values, "Counter '$symbol' with type '$type' isn't covered because it absent") + assertTrue(values.covered >= condition.value, "Counter '$symbol' with type '$type' expected to be covered more or equals ${condition.value} but actual ${values.covered}") + } + CounterAssert.IsFullyCovered -> { + assertNotNull(values, "Counter '$symbol' with type '$type' is absent so fully covered can't be checked") + + // skip empty branches + if (values.covered == 0 && values.missed == 0) return + + assertTrue(values.covered > 0, "Counter '$symbol' with type '$type' isn't fully covered") + assertEquals(0, values.missed, "Counter '$symbol' with type '$type' isn't fully covered") + } + CounterAssert.IsFullyMissed -> { + assertNotNull(values, "Counter '$symbol' with type '$type' isn't fully missed because it absent") + assertTrue(values.missed > 0, "Counter '$symbol' with type '$type' isn't fully missed") + assertEquals(0, values.covered, "Counter '$symbol' with type '$type' isn't fully missed") + } + is CounterAssert.Coverage -> { + assertNotNull(values, "Counter '$symbol' with type '$type' isn't covered because it absent") + assertEquals(values.covered, condition.covered, "Counter '$symbol' with type '$type' has illegal coverage") + assertEquals(values.missed, condition.missed, "Counter '$symbol' with type '$type' has illegal missing") + } + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/CheckerContextImpl.kt b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/CheckerContextImpl.kt new file mode 100644 index 00000000..01c11e27 --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/CheckerContextImpl.kt @@ -0,0 +1,176 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.tests.functional.framework + +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.BUILD_DIRECTORY +import org.w3c.dom.Element +import java.io.File +import javax.xml.parsers.DocumentBuilderFactory + +fun createContext(log: String, projectDirectory: File): CheckerContext { + // logs: goal name -> (module id -> log) + val goalsLog = mutableMapOf>() + + + var prevMessage = "" + var content = "" + var goalName = "" + var isGoalOutput = false + var moduleId: String? = null + + fun addLog(log: String) { + val id = moduleId ?: throw IllegalStateException("Module id missed") + goalsLog.computeIfAbsent(goalName) { mutableMapOf() }[id] = log + } + + log.lineSequence().forEach { line -> + val message = line.removePrefix("[INFO] ").removePrefix("[WARNING] ").removePrefix("[ERROR] ") + + + when { + /* + ---------------------< org.example:merged-report >---------------------- + */ + message.matches("-*< .+:.+ >-*".toRegex()) -> { + moduleId = message.substringAfterLast(":").substringBefore(" >") + if (isGoalOutput) { + addLog(content) + } + isGoalOutput = false + } + + message.startsWith("------------------------------------------------------------------------") -> { + if (isGoalOutput) { + addLog(content) + } + isGoalOutput = false + } + + /* + + --- kover:0.8.4-SNAPSHOT:report-xml (kover-xml) @ maven-test --- + */ + message.matches("-* .+:.+:.+ \\(.*\\) @ .+ -*".toRegex()) && prevMessage.isEmpty() -> { + if (isGoalOutput) { + // new goal name always starts with empty line + content.removeSuffix("\n") + addLog(content) + } + + isGoalOutput = true + goalName = message.substringAfter("- ").substringBeforeLast(" (") + content = "" + } + + else -> { + content += (if (content.isNotEmpty()) "\n" else "") + message + } + } + + prevMessage = message + } + + return CheckerContextImpl(log, goalsLog, projectDirectory) +} + +fun parseXmlReport(file: File): XmlReportContent { + return XmlReportContentImpl(file) +} + +private class CheckerContextImpl( + override val log: String, + val goals: Map>, + val projectDirectory: File +) : CheckerContext { + + override val isSuccessful: Boolean = log.contains("BUILD SUCCESS\n") + + override fun koverGoalLog(goalName: String, moduleId: String?): String { + val filtered = goals.filterKeys { string -> string.startsWith("kover:") && string.endsWith(":$goalName") }.map { it.value } + if (filtered.isEmpty()) throw MavenAssertionException("The '$goalName' goal was not found among the completed ones") + if (filtered.size > 1) throw IllegalStateException("Several goals were found that were completed with the name '$goalName'") + + val logsByModules = filtered.first() + + return if (moduleId == null) { + if (logsByModules.size == 1) { + logsByModules.values.first() + } else { + throw IllegalStateException("Goal $goalName was executed in several projects: ${logsByModules.keys}") + } + } else { + val logs = logsByModules.filterKeys { id -> moduleId == id } + if (logs.size != 1) throw IllegalStateException("Goal $goalName was not executed in module $moduleId") + logs.values.first() + } + + } + + override fun findFile(relativePath: String, module: String?): File { + val moduleDir = if (module == null) projectDirectory else projectDirectory.resolve(module) + return moduleDir.resolve(BUILD_DIRECTORY).resolve(relativePath) + } +} + +private class XmlReportContentImpl(file: File) : XmlReportContent { + private val document = DocumentBuilderFactory.newInstance() + // This option disables checking the dtd file for JaCoCo XML file + .also { it.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false) } + .newDocumentBuilder().parse(file) + + override fun classCounter(className: String, type: CounterType): Counter { + val correctedClassName = className.replace('.', '/') + val packageName = correctedClassName.substringBeforeLast('/') + + val reportElement = ((document.getElementsByTagName("report").item(0)) as Element) + + val values = reportElement + .filter("package", "name", packageName) + ?.filter("class", "name", correctedClassName) + ?.filter("counter", "type", type.name) + ?.let { + CounterValues( + it.getAttribute("missed").toInt(), + it.getAttribute("covered").toInt() + ) + } + + return Counter(className, type, values) + } + + override fun methodCounter(className: String, methodName: String, type: CounterType): Counter { + val correctedClassName = className.replace('.', '/') + val packageName = correctedClassName.substringBeforeLast('/') + + val reportElement = ((document.getElementsByTagName("report").item(0)) as Element) + + val values = reportElement + .filter("package", "name", packageName) + ?.filter("class", "name", correctedClassName) + ?.filter("method", "name", methodName) + ?.filter("counter", "type", type.name) + ?.let { + CounterValues( + it.getAttribute("missed").toInt(), + it.getAttribute("covered").toInt() + ) + } + + return Counter("$className#$methodName", type, values) + } +} + +private fun Element.filter(tag: String, attributeName: String, attributeValue: String): Element? { + val elements = getElementsByTagName(tag) + for (i in 0 until elements.length) { + val element = elements.item(i) as Element + if (element.parentNode == this) { + if (element.getAttribute(attributeName) == attributeValue) { + return element + } + } + } + return null +} \ No newline at end of file diff --git a/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/MavenAsserts.kt b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/MavenAsserts.kt new file mode 100644 index 00000000..0839c5e5 --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/MavenAsserts.kt @@ -0,0 +1,147 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.tests.functional.framework + +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.BINARY_REPORT_PATH +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.DEFAULT_HTML_REPORT_PATH +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.DEFAULT_IC_REPORT_PATH +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.DEFAULT_XML_REPORT_PATH +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.HTML_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.IC_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.INSTRUMENTATION_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.LOG_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.VERIFY_TASK_NAME +import kotlinx.kover.maven.plugin.tests.functional.framework.BuildConstants.XML_TASK_NAME +import java.nio.charset.Charset +import kotlin.test.assertEquals +import kotlin.test.assertFalse +import kotlin.test.assertTrue + +fun CheckerContext.assertBuildIsSuccessful(shouldBeSuccessful: Boolean = true) { + if (shouldBeSuccessful) { + assertTrue(isSuccessful, "Build must be successful") + } else { + assertFalse(isSuccessful, "Build must failed") + } +} + +fun CheckerContext.assertAllSkipped() { + assertBinaryReportExists(false) + assertDefaultXmlReportExists(false) + assertDefaultHtmlReportExists(false) + assertDefaultIcReportExists(false) + + assertKoverLogIs(INSTRUMENTATION_TASK_NAME, "Kover is disabled by property 'kover.skip'") + assertKoverLogIs(XML_TASK_NAME, "Kover is disabled by property 'kover.skip'") + assertKoverLogIs(LOG_TASK_NAME, "Kover is disabled by property 'kover.skip'") + assertKoverLogIs(HTML_TASK_NAME, "Kover is disabled by property 'kover.skip'") + assertKoverLogIs(VERIFY_TASK_NAME, "Kover is disabled by property 'kover.skip'") + assertKoverLogIs(IC_TASK_NAME, "Kover is disabled by property 'kover.skip'") +} + +fun CheckerContext.assertVerificationPassed() { + assertKoverLogIs(VERIFY_TASK_NAME, "Coverage rule checks passed successfully") +} + + +fun CheckerContext.assertNoVerificationRules() { + assertKoverLogIs(VERIFY_TASK_NAME, "No Kover verification rules") +} + +fun CheckerContext.assertBinaryReportExists(shouldExists: Boolean = true) { + val report = findFile(BINARY_REPORT_PATH) + if (shouldExists) { + assertTrue(report.exists(), "Binary report does not exist, path $BINARY_REPORT_PATH") + assertTrue(report.length() > 0, "Binary report is empty, path $BINARY_REPORT_PATH") + } else { + assertFalse(report.exists(), "Binary report exist but expected to be missed, path $BINARY_REPORT_PATH") + } +} + +fun CheckerContext.assertDefaultXmlReportExists(shouldExists: Boolean = true, modulePath: String? = null) { + assertXmlReportExists(DEFAULT_XML_REPORT_PATH, shouldExists, modulePath) +} +fun CheckerContext.assertXmlReportExists(path: String, shouldExists: Boolean = true, modulePath: String? = null) { + val report = findFile(path, modulePath) + if (shouldExists) { + assertTrue(report.exists(), "XML report does not exist, path $path") + } else { + assertFalse(report.exists(), "XML report exist but expected to be missed, path $path") + } +} + +fun CheckerContext.checkDefaultXmlReport(modulePath: String? = null, assertions: XmlReportContent.() -> Unit) { + checkXmlReport(DEFAULT_XML_REPORT_PATH, modulePath, assertions) +} + +fun CheckerContext.checkXmlReport(path: String, modulePath: String? = null, assertions: XmlReportContent.() -> Unit) { + assertXmlReportExists(path, modulePath = modulePath) + val xmlReport = parseXmlReport(findFile(path, modulePath)) + assertions(xmlReport) +} + +fun CheckerContext.assertDefaultIcReportExists(shouldExists: Boolean = true) { + assertIcReportExists(DEFAULT_IC_REPORT_PATH, shouldExists) +} + +fun CheckerContext.assertIcReportExists(path: String, shouldExists: Boolean = true) { + val report = findFile(path) + if (shouldExists) { + assertTrue(report.exists(), "IC report does not exist, path $path") + assertTrue(report.length() > 0, "IC report is empty, path $path") + } else { + assertFalse(report.exists(), "IC report exist but expected to be missed, path $path") + } +} + +fun CheckerContext.assertDefaultHtmlReportExists(shouldExists: Boolean = true) { + assertHtmlReportExists(DEFAULT_HTML_REPORT_PATH, shouldExists) +} + +fun CheckerContext.assertHtmlReportExists(path: String, shouldExists: Boolean = true) { + val report = findFile(path) + val exists = report.resolve("index.html").exists() + if (shouldExists) { + assertTrue(exists, "HTML report does not exist, path $path") + } else { + assertFalse(exists, "HTML report exist but expected to be missed, path $path") + } +} + +fun CheckerContext.assertKoverLogIs(taskName: String, text: String) { + val taskLog = koverGoalLog(taskName) + assertTrue(taskLog.contains(text), "Task '$taskName' log differs, expected:\n$text\nactual:\n$taskLog") +} + +fun CheckerContext.assertLogContains(vararg text: String) { + text.forEach { searchedText -> + assertTrue(searchedText in log, "Substring '$searchedText' is expected to be present in the logs") + } +} + +fun CheckerContext.assertDefaultHtmlTitle(title: String, charset: String = "UTF-8") { + assertHtmlTitle(DEFAULT_HTML_REPORT_PATH, title, charset) +} + +fun CheckerContext.assertHtmlTitle(path: String, title: String, charset: String = "UTF-8") { + val report = findFile(path) + val indexPage = report.resolve("index.html") + + val actual = indexPage.readText(Charset.forName(charset)).substringAfter("Current scope: ").substringBefore(" + val actual = report.readText().substringAfter(", + snapshotRepositoryPath: String, + kotlinVersion: String, + koverVersion: String +): String { + val cli = MavenCli() + + val stdStream = ByteArrayOutputStream() + + System.setProperty("maven.multiModuleProjectDirectory", "") + val args = mutableListOf() + args += commands + args += "--s" + args += File("src/functionalTest/templates/settings.xml").canonicalPath + args += "-DsnapshotRepository=$snapshotRepositoryPath" + args += "-Dkotlin.version=$kotlinVersion" + args += "-Dkover.version=$koverVersion" + + val printer = PrintStream(stdStream) + cli.doMain(args.toTypedArray(), projectDir.canonicalPath, printer, printer) + return stdStream.toString() +} diff --git a/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/SystemProperties.kt b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/SystemProperties.kt new file mode 100644 index 00000000..df4d8c62 --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/kotlin/kotlinx/kover/maven/plugin/tests/functional/framework/SystemProperties.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.tests.functional.framework + +object SystemProperties { + val repository: String by lazy { + System.getProperty("snapshotRepository") + } + + val koverVersion: String by lazy { + System.getProperty("koverVersion") + } + + val kotlinVersion: String by lazy { + System.getProperty("kotlinVersion") + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/functionalTest/resources/simplelogger.properties b/kover-maven-plugin/src/functionalTest/resources/simplelogger.properties new file mode 100644 index 00000000..2c018180 --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/resources/simplelogger.properties @@ -0,0 +1,8 @@ +# +# Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. +# +org.slf4j.simpleLogger.showThreadName = false +org.slf4j.simpleLogger.showLogName = false +org.slf4j.simpleLogger.showShortLogName= false +org.slf4j.simpleLogger.levelInBrackets = true +org.slf4j.simpleLogger.showDateTime = false \ No newline at end of file diff --git a/kover-maven-plugin/src/functionalTest/templates/settings.xml b/kover-maven-plugin/src/functionalTest/templates/settings.xml new file mode 100644 index 00000000..8ffc7fbf --- /dev/null +++ b/kover-maven-plugin/src/functionalTest/templates/settings.xml @@ -0,0 +1,53 @@ + + + + + + functional-test + + + + + functional-test + + + + mavenCentral + https://repo1.maven.org/maven2/ + + + + snapshot-dependencies + file://${snapshotRepository} + + false + + + true + always + + + + + + + snapshot-plugins + file://${snapshotRepository} + + false + + + true + always + + + + + + + \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/CommonTypes.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/CommonTypes.kt new file mode 100644 index 00000000..4ecc717c --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/CommonTypes.kt @@ -0,0 +1,48 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin + +import kotlinx.kover.features.jvm.AggregationType +import kotlinx.kover.features.jvm.CoverageUnit +import kotlinx.kover.features.jvm.GroupingBy + +data class MavenReportFilters( + var excludes: MavenReportFilter = MavenReportFilter(), + var includes: MavenReportFilter = MavenReportFilter() +) { + val isEmpty: Boolean get() = excludes.isEmpty && includes.isEmpty +} + +data class MavenReportFilter( + val classes: MutableList = mutableListOf(), + val annotatedBy: MutableList = mutableListOf(), + val inheritedFrom: MutableList = mutableListOf(), + val projects: MutableList = mutableListOf() +) { + val isEmpty: Boolean get() = classes.isEmpty() && annotatedBy.isEmpty() && inheritedFrom.isEmpty() +} + + +data class MavenRule( + var name: String = "", + var filters: MavenRuleFilters? = null, + var groupBy: GroupingBy = GroupingBy.APPLICATION, + val bounds: List = emptyList() +) + +data class MavenBound( + var minValue: String? = null, + var maxValue: String? = null, + var coverageUnits: CoverageUnit = CoverageUnit.LINE, + var aggregationForGroup: AggregationType = AggregationType.COVERED_PERCENTAGE +) + +data class MavenRuleFilters(var includes: MavenRuleFilter? = null, var excludes: MavenRuleFilter? = null) + +data class MavenRuleFilter( + val classes: MutableList = mutableListOf(), + val annotatedBy: MutableList = mutableListOf(), + val inheritedFrom: MutableList = mutableListOf() +) diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/Constants.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/Constants.kt new file mode 100644 index 00000000..8a6a1ea8 --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/Constants.kt @@ -0,0 +1,62 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin + +import org.apache.maven.artifact.Artifact + +internal object Constants { + /** + * Default parameter name to pass to surefire plugin an argument for JVM in which the tests will be run. + */ + const val AGENT_ARG_PARAMETER = "argLine" + + /** + * Artifact group and ID for Kover JVM instrumentation agent. + */ + const val AGENT_ARTIFACT = "org.jetbrains.kotlinx:kover-jvm-agent" + + /** + * Relative path to store Kover JVM Agent arguments. + */ + const val AGENT_ARGUMENTS_PATH = "kover/test.agent.args" + + /** + * Relative path to store binary report for test run. + */ + const val BIN_REPORT_PATH = "kover/test.ic" + + const val KOVER_REPORTS_PATH = "kover" + + /** + * Default IC report path. + */ + const val KOVER_IC_REPORT_NAME = "$KOVER_REPORTS_PATH/report.ic" + + /** + * Default XML report path. + */ + const val XML_REPORT_NAME = "$KOVER_REPORTS_PATH/report.xml" + + /** + * Default HTML report path. + */ + const val HTML_REPORT_DIR_NAME = "html" + + /** + * Build directory for temporary files. + */ + const val TMP_DIR_NAME = "tmp" + + /** + * Scopes for dependencies from which the coverage for the aggregated report will be taken. + */ + val DEPENDENCY_SCOPES = + setOf(Artifact.SCOPE_COMPILE, Artifact.SCOPE_RUNTIME, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_TEST) + + /** + * Scope for dependencies from which only coverage info (not classes) will be taken. + */ + const val TEST_SCOPE = Artifact.SCOPE_TEST +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/ArtifactMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/ArtifactMojo.kt new file mode 100644 index 00000000..90f88112 --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/ArtifactMojo.kt @@ -0,0 +1,48 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo + +import kotlinx.kover.features.jvm.ClassFilters +import kotlinx.kover.maven.plugin.mojo.abstracts.AbstractCoverageTaskMojo +import org.apache.maven.plugins.annotations.LifecyclePhase +import org.apache.maven.plugins.annotations.Mojo +import java.io.File +import java.lang.StringBuilder + +/** + * Mojo to print debug info about directories and files using in generating reports and verification. + * + * It is intended for debugging only. + */ +@Mojo(name = "print-artifact-info", defaultPhase = LifecyclePhase.VERIFY) +class ArtifactMojo: AbstractCoverageTaskMojo() { + override fun processCoverage( + binaryReports: List, + outputDirs: List, + sourceDirs: List, + filters: ClassFilters + ) { + val builder = StringBuilder() + builder.appendLine("Binary reports") + binaryReports.forEach { report -> + builder.appendLine(report.toRelativeString(project.basedir)) + } + builder.appendLine() + + builder.appendLine("Source root directories") + sourceDirs.forEach { dir -> + builder.appendLine(dir.toRelativeString(project.basedir)) + } + builder.appendLine() + + builder.appendLine("Target root directories") + outputDirs.forEach { dir -> + builder.appendLine(dir.toRelativeString(project.basedir)) + } + + log.info("Kover artifact\n\n${builder}") + } + +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/HtmlReportMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/HtmlReportMojo.kt new file mode 100644 index 00000000..c5444a43 --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/HtmlReportMojo.kt @@ -0,0 +1,62 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo + +import kotlinx.kover.features.jvm.ClassFilters +import kotlinx.kover.features.jvm.KoverLegacyFeatures +import kotlinx.kover.maven.plugin.Constants +import kotlinx.kover.maven.plugin.Constants.KOVER_REPORTS_PATH +import kotlinx.kover.maven.plugin.mojo.abstracts.AbstractReportTaskMojo +import org.apache.maven.plugins.annotations.LifecyclePhase +import org.apache.maven.plugins.annotations.Mojo +import org.apache.maven.plugins.annotations.Parameter +import java.io.File +import java.net.URI +import java.util.* + +/** + * Mojo to generate Kover HTML report. + */ +@Mojo(name = "report-html", defaultPhase = LifecyclePhase.VERIFY) +class HtmlReportMojo: AbstractReportTaskMojo() { + @Parameter(defaultValue = Constants.HTML_REPORT_DIR_NAME) + private lateinit var htmlDirName: String + + @Parameter(defaultValue = "\${project.name}") + private lateinit var title: String + + @Parameter(defaultValue = "UTF-8") + private lateinit var charset: String + + override fun processCoverage( + binaryReports: List, + outputDirs: List, + sourceDirs: List, + filters: ClassFilters + ) { + val htmlDir = reportOutputDirectory.resolve(htmlDirName) + KoverLegacyFeatures.generateHtmlReport(htmlDir, charset, binaryReports, outputDirs, sourceDirs, title, filters) + + val clickablePath = URI( + "file", + "", + File(htmlDir.canonicalPath, "index.html").toURI().path, + null, + null, + ).toASCIIString() + + log.info("Kover: HTML report for '${project.name}' $clickablePath") + } + + override fun getOutputName(): String = KOVER_REPORTS_PATH + "/" + Constants.HTML_REPORT_DIR_NAME + "/index" + + override fun getName(locale: Locale?): String { + return "Coverage report" + } + + override fun getDescription(locale: Locale?): String { + return "Project coverage report produced by Kover" + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/IcReportMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/IcReportMojo.kt new file mode 100644 index 00000000..18ecdb79 --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/IcReportMojo.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo + +import kotlinx.kover.features.jvm.* +import kotlinx.kover.maven.plugin.Constants +import kotlinx.kover.maven.plugin.mojo.abstracts.AbstractCoverageTaskMojo +import org.apache.maven.plugins.annotations.LifecyclePhase +import org.apache.maven.plugins.annotations.Mojo +import org.apache.maven.plugins.annotations.Parameter +import java.io.File + +/** + * Mojo to export coverage report in IC (intellij agent) format. + */ +@Mojo(name = "report-ic", defaultPhase = LifecyclePhase.VERIFY) +class IcReportMojo : AbstractCoverageTaskMojo() { + @Parameter(defaultValue = "\${project.reporting.outputDirectory}/${Constants.KOVER_IC_REPORT_NAME}") + private lateinit var icFile: File + + override fun processCoverage( + binaryReports: List, + outputDirs: List, + sourceDirs: List, + filters: ClassFilters + ) { + KoverLegacyFeatures.aggregateIc( + icFile, + filters, + tempDirectory(), + binaryReports, + outputDirs + ) + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/KoverInstrumentMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/KoverInstrumentMojo.kt new file mode 100644 index 00000000..917b2f70 --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/KoverInstrumentMojo.kt @@ -0,0 +1,98 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo + +import kotlinx.kover.maven.plugin.Constants +import kotlinx.kover.maven.plugin.mojo.abstracts.AbstractKoverMojo +import org.apache.maven.artifact.Artifact +import org.apache.maven.plugin.MojoExecutionException +import org.apache.maven.plugins.annotations.LifecyclePhase +import org.apache.maven.plugins.annotations.Mojo +import org.apache.maven.plugins.annotations.Parameter +import java.io.File + +/** + * Add JVM agent argument to the JVM in which tests are running. + */ +@Mojo(name = "instrumentation", defaultPhase = LifecyclePhase.INITIALIZE, threadSafe = true) +class KoverInstrumentMojo : AbstractKoverMojo() { + @Parameter(property = "plugin.artifactMap", required = true, readonly = true) + private lateinit var pluginArtifactMap: Map + + /** + * Property name to pass java agent argument to the JVM in which tests are running. + * + * `argLine` by default. + */ + @Parameter(property = "kover.agentPropertyName", defaultValue = Constants.AGENT_ARG_PARAMETER) + private lateinit var agentPropertyName: String + + @Parameter + var uninstrumentedClasses: List? = null + + @Parameter(defaultValue = "\${project.build.directory}/${Constants.BIN_REPORT_PATH}", readonly = true) + lateinit var binaryReportFile: File + + override fun doExecute() { + val propertyName = agentPropertyName + val agentArg = buildAgentArgument() + + val oldValue = project.properties.getProperty(propertyName) + val newValue = oldValue appendArg agentArg + + project.properties.setProperty(propertyName, newValue) + log.info("Test property '$propertyName' set to $newValue") + } + + private fun buildAgentArgument(): String { + return "-javaagent:${getAgentJar().canonicalPath}=file:${buildAgentArgsFile().canonicalPath}" + } + + private fun buildAgentArgsFile(): File { + binaryReportFile.parentFile.mkdirs() + + val file = File(project.build.directory).resolve(Constants.AGENT_ARGUMENTS_PATH) + file.parentFile.mkdirs() + file.printWriter().use { writer -> + writer.append("report.file=").appendLine(binaryReportFile.canonicalPath) + uninstrumentedClasses?.forEach { e -> + writer.append("exclude=").appendLine(e) + } + } + + return file + } + + private fun getAgentJar(): File { + return pluginArtifactMap[Constants.AGENT_ARTIFACT]?.file ?: throw MojoExecutionException("Artifact ${Constants.AGENT_ARTIFACT} not found") + } + + private infix fun String?.appendArg(newArg: String): String { + val escaped = newArg.toEscapeString() + return if (this == null) { + escaped + } else { + "$this $escaped" + } + + } + + /** + * Escaping the string so as not to pass special characters `\` and `"`, also quoted by `"` quotes to avoid passing spaces. + */ + private fun String.toEscapeString(): String { + val builder = StringBuilder(this.length + 2) + builder.append('"') + this.toCharArray().forEach { char -> + if (char == '"' || char == '\\') { + builder.append('\\') + } + builder.append(char) + } + builder.append('"') + + return builder.toString() + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/LogReportMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/LogReportMojo.kt new file mode 100644 index 00000000..113c961f --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/LogReportMojo.kt @@ -0,0 +1,55 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo + +import kotlinx.kover.features.jvm.* +import kotlinx.kover.maven.plugin.mojo.abstracts.AbstractCoverageTaskMojo +import org.apache.maven.plugins.annotations.LifecyclePhase +import org.apache.maven.plugins.annotations.Mojo +import org.apache.maven.plugins.annotations.Parameter +import java.io.File + +/** + * Mojo to print coverage info to the log. + */ +@Mojo(name = "log", defaultPhase = LifecyclePhase.VERIFY) +class LogReportMojo : AbstractCoverageTaskMojo() { + @Parameter(defaultValue = "APPLICATION") + private lateinit var logGroupBy: GroupingBy + + @Parameter(defaultValue = "LINE") + private lateinit var logCoverageUnit: CoverageUnit + + @Parameter(defaultValue = "COVERED_PERCENTAGE") + private lateinit var logAggregationForGroup: AggregationType + + @Parameter(defaultValue = "{entity} line coverage: {value}%") + private lateinit var logFormat: String + + override fun processCoverage( + binaryReports: List, + outputDirs: List, + sourceDirs: List, + filters: ClassFilters + ) { + val coverageValues = KoverLegacyFeatures.evalCoverage( + logGroupBy, + logCoverageUnit, + logAggregationForGroup, + tempDirectory(), + filters, + binaryReports, + outputDirs + ) + + coverageValues.forEach { coverageValue -> + val entityName = coverageValue.entityName ?: "application" + log.info( + logFormat.replace("{value}", coverageValue.value.stripTrailingZeros().toPlainString()) + .replace("{entity}", entityName) + ) + } + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/VerifyMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/VerifyMojo.kt new file mode 100644 index 00000000..a5d09957 --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/VerifyMojo.kt @@ -0,0 +1,94 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo + +import kotlinx.kover.features.jvm.* +import kotlinx.kover.maven.plugin.MavenBound +import kotlinx.kover.maven.plugin.MavenRule +import kotlinx.kover.maven.plugin.MavenRuleFilters +import kotlinx.kover.maven.plugin.mojo.abstracts.AbstractCoverageTaskMojo +import org.apache.maven.plugin.MojoFailureException +import org.apache.maven.plugins.annotations.LifecyclePhase +import org.apache.maven.plugins.annotations.Mojo +import org.apache.maven.plugins.annotations.Parameter +import java.io.File + +/** + * Mojo to verify coverage by specified rules. + */ +@Mojo(name = "verify", defaultPhase = LifecyclePhase.VERIFY) +class VerifyMojo : AbstractCoverageTaskMojo() { + @Parameter(property = "kover.warningInsteadOfFailure", defaultValue = "false", required = true) + private var warningInsteadOfFailure: Boolean = false + + @Parameter + private val rules: MutableList = mutableListOf() + + override fun processCoverage( + binaryReports: List, + outputDirs: List, + sourceDirs: List, + filters: ClassFilters + ) { + if (rules.isEmpty()) { + log.info("No Kover verification rules") + return + } + + val tempDir = tempDirectory() + + val violations = mutableListOf() + // verify rules with filters inherited from mojo + val rulesWithDefaultFilters = rules.filter { filter -> filter.filters == null } + violations += KoverLegacyFeatures.verify( + rulesWithDefaultFilters.map { it.convert() }, + tempDir, + filters, + binaryReports, + outputDirs + ) + + // verify rules with own filters + rules.filter { filter -> filter.filters != null }.forEach { rule -> + violations += KoverLegacyFeatures.verify( + listOf(rule.convert()), + tempDir, + rule.filters!!.convert(), + binaryReports, + outputDirs + ) + } + + if (violations.isEmpty()) { + log.info("Coverage rule checks passed successfully") + } else { + val message = "Kover Verification Error\n" + KoverLegacyFeatures.violationMessage(violations) + if (warningInsteadOfFailure) { + log.warn(message) + } else { + throw MojoFailureException(message) + } + } + } + + private fun MavenRule.convert(): Rule { + return Rule(name, groupBy, bounds.map { it.convert() }) + } + + private fun MavenBound.convert(): Bound { + return Bound(minValue?.toBigDecimal(), maxValue?.toBigDecimal(), coverageUnits, aggregationForGroup) + } + + private fun MavenRuleFilters.convert(): ClassFilters { + return ClassFilters( + includes?.classes?.toSet() ?: emptySet(), + excludes?.classes?.toSet() ?: emptySet(), + includes?.annotatedBy?.toSet() ?: emptySet(), + excludes?.annotatedBy?.toSet() ?: emptySet(), + includes?.inheritedFrom?.toSet() ?: emptySet(), + excludes?.inheritedFrom?.toSet() ?: emptySet() + ) + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/XmlReportMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/XmlReportMojo.kt new file mode 100644 index 00000000..ee4ffffb --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/XmlReportMojo.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo + +import kotlinx.kover.features.jvm.ClassFilters +import kotlinx.kover.features.jvm.KoverLegacyFeatures +import kotlinx.kover.maven.plugin.Constants +import kotlinx.kover.maven.plugin.mojo.abstracts.AbstractCoverageTaskMojo +import org.apache.maven.plugins.annotations.LifecyclePhase +import org.apache.maven.plugins.annotations.Mojo +import org.apache.maven.plugins.annotations.Parameter +import java.io.File + +/** + * Mojo to generate report in JaCoCo XML format. + */ +@Mojo(name = "report-xml", defaultPhase = LifecyclePhase.VERIFY) +class XmlReportMojo: AbstractCoverageTaskMojo() { + @Parameter(defaultValue = "\${project.reporting.outputDirectory}/${Constants.XML_REPORT_NAME}") + private lateinit var xmlFile: File + + @Parameter(defaultValue = "\${project.name}") + private lateinit var title: String + + override fun processCoverage( + binaryReports: List, + outputDirs: List, + sourceDirs: List, + filters: ClassFilters + ) { + KoverLegacyFeatures.generateXmlReport(xmlFile, binaryReports, outputDirs, sourceDirs, title, filters) + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractCoverageTaskMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractCoverageTaskMojo.kt new file mode 100644 index 00000000..4cfc22f0 --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractCoverageTaskMojo.kt @@ -0,0 +1,257 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo.abstracts + +import kotlinx.kover.features.jvm.ClassFilters +import kotlinx.kover.features.jvm.KoverFeatures +import kotlinx.kover.maven.plugin.Constants +import kotlinx.kover.maven.plugin.MavenReportFilters +import org.apache.maven.artifact.versioning.DefaultArtifactVersion +import org.apache.maven.artifact.versioning.VersionRange +import org.apache.maven.plugins.annotations.Parameter +import org.apache.maven.project.MavenProject +import org.codehaus.plexus.util.xml.Xpp3Dom +import java.io.File +import java.nio.file.Files +import kotlin.io.path.Path + +/** + * Common class using for processing project coverage. + */ +abstract class AbstractCoverageTaskMojo : AbstractKoverMojo() { + /** + * Filters to limit the code that gets into the report. + */ + @Parameter + private var filters: MavenReportFilters? = null + + /** + * Flag to use code coverage from dependencies. + * + * `false` by default. + */ + @Parameter(property = "kover.aggregate", defaultValue = "false") + protected var aggregate: Boolean = false + + /** + * Binary reports that built in advance, before the start of the project build. + * + * It's convenient to use when tests are performed on CI on different nodes. + */ + @Parameter + private val additionalBinaryReports: MutableList = mutableListOf() + + /** + * Project modules involved in the build. + */ + @Parameter(property = "reactorProjects", readonly = true) + private lateinit var reactorProjects: List + + protected abstract fun processCoverage( + binaryReports: List, + outputDirs: List, + sourceDirs: List, + filters: ClassFilters + ) + + + final override fun doExecute() { + val merged = collectVariants() + val allBinaryReports = merged.binaryReports + additionalBinaryReports + processCoverage(allBinaryReports, merged.outputs, merged.sources, koverFilters()) + } + + /** + * Create temporary dir on each call. + */ + protected fun tempDirectory(): File { + val commonTmpDir = File(project.build.directory).resolve(Constants.TMP_DIR_NAME) + commonTmpDir.mkdirs() + return Files.createTempDirectory(Path(commonTmpDir.path), "kover") + .toFile() + } + + /** + * Get filters as Kover filters classes. + */ + private fun koverFilters(): ClassFilters { + return filters?.let { nnFilters -> + ClassFilters( + nnFilters.includes.classes.toSet(), + nnFilters.excludes.classes.toSet(), + nnFilters.includes.annotatedBy.toSet(), + nnFilters.excludes.annotatedBy.toSet(), + nnFilters.includes.inheritedFrom.toSet(), + nnFilters.excludes.inheritedFrom.toSet() + ) + } ?: ClassFilters(emptySet(), emptySet(), emptySet(), emptySet(), emptySet(), emptySet()) + } + + /** + * Collect directory and file information from current project and all its dependencies. + */ + private fun collectVariants(): KoverArtifact { + val currentArtifact = project.extractArtifact(false) + + val artifacts = if (aggregate) { + val dependencyArtifacts = + project.getDependencyProjects().map { pair -> pair.first.extractArtifact(pair.second) } + dependencyArtifacts + currentArtifact + } else { + listOf(currentArtifact) + } + + val binaryReports = mutableSetOf() + val sources = mutableSetOf() + val outputs = mutableSetOf() + + artifacts + .map { it.filterProjectSources() } + .forEach { artifact -> + binaryReports += artifact.binaryReports.filter { it.exists() } + sources += artifact.sources.filter { it.exists() && it.isDirectory } + outputs += artifact.outputs.filter { it.exists() && it.isDirectory } + } + + return KoverArtifact("", binaryReports.toList(), sources.toList(), outputs.toList()) + } + + /** + * Filters projects sources according project filters. + */ + private fun KoverArtifact.filterProjectSources(): KoverArtifact { + val nnFilters = filters ?: return this + + if (nnFilters.includes.projects.isNotEmpty()) { + val notIncluded = nnFilters.includes.projects.none { filter -> + KoverFeatures.koverWildcardToRegex(filter).toRegex().matches(projectName) + } + if (notIncluded) { + return KoverArtifact(projectName, binaryReports, emptyList(), emptyList()) + } + } + if (nnFilters.excludes.projects.isNotEmpty()) { + val excluded = nnFilters.excludes.projects.any { filter -> + KoverFeatures.koverWildcardToRegex(filter).toRegex().matches(projectName) + } + if (excluded) { + return KoverArtifact(projectName, binaryReports, emptyList(), emptyList()) + } + } + return this + } + + + /** + * Find all dependencies of current project, which are modules. + * + * If there are several modules in the project that pass the dependency version condition, then only the very first one will be taken. + * + * @return list of pairs: dependency project and sign that it was a test dependency. + */ + private fun MavenProject.getDependencyProjects(): List> { + return dependencies + .filter { it.scope in Constants.DEPENDENCY_SCOPES } + .mapNotNull { dependency -> + val versionRange = VersionRange.createFromVersionSpec(dependency.version) + + // take first project, satisfying the condition in dependency + val projectDependency = reactorProjects.firstOrNull { fromReactor -> + fromReactor.groupId == dependency.groupId + && fromReactor.artifactId == dependency.artifactId + && versionRange.containsVersion(DefaultArtifactVersion(fromReactor.version)) + } + + if (projectDependency != null) { + projectDependency to (dependency.scope == Constants.TEST_SCOPE) + } else { + null + } + } + } + + /** + * Find all binary reports, source directory roots and output directory roots in given project. + */ + private fun MavenProject.extractArtifact(testProject: Boolean): KoverArtifact { + // binary report name is fixed + val binaryReports = listOf(File(build.directory).resolve(Constants.BIN_REPORT_PATH)) + + val sources: List + val outputs: List + + if (testProject) { + // skip classes of test dependency + sources = emptyList() + outputs = emptyList() + } else { + sources = findSourceDirs() + outputs = listOf(File(build.outputDirectory)) + } + + return KoverArtifact(name, binaryReports, sources, outputs) + } + + /** + * Collect all Kotlin source roots. + */ + private fun MavenProject.findSourceDirs(): List { + // common source roots + val standardDirs = compileSourceRoots.map { sourcePath -> toAbsoluteFile(sourcePath) } + + val kotlinPlugin = + project.buildPlugins.firstOrNull { it.groupId == "org.jetbrains.kotlin" && it.artifactId == "kotlin-maven-plugin" } + ?: return standardDirs + + /* + Processing Kotlin plugin configuration: + + compile-kotlin + compile + + compile + + + + some/dir + + + + */ + var kotlinDirs: List? = null + try { + kotlinDirs = kotlinPlugin.executions + .filter { "compile" in it.goals } + .filter { execution -> execution.configuration != null && execution.configuration is Xpp3Dom } + .flatMap { execution -> + (execution.configuration as Xpp3Dom).getChild("sourceDirs").children.map { toAbsoluteFile(it.value) } + } + } catch (e: Exception) { + // in future versions configuration may be changed + log.warn("Error when trying to read the Kotlin configuration", e) + } + + return if (kotlinDirs == null) standardDirs else (standardDirs + kotlinDirs) + } + + private fun MavenProject.toAbsoluteFile(path: String): File { + val file = File(path) + return if (file.isAbsolute) { + file + } else { + basedir.resolve(path) + } + } + + /** + * Information about project's files and directories, used to process coverage. + */ + class KoverArtifact( + val projectName: String, + val binaryReports: List, + val sources: List, + val outputs: List + ) +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractKoverMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractKoverMojo.kt new file mode 100644 index 00000000..151350eb --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractKoverMojo.kt @@ -0,0 +1,38 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo.abstracts + +import org.apache.maven.plugin.AbstractMojo +import org.apache.maven.plugins.annotations.Parameter +import org.apache.maven.project.MavenProject + +/** + * Common Mojo logic for all Kover goals. + */ +abstract class AbstractKoverMojo : AbstractMojo() { + @Parameter(property = "project", required = true, readonly = true) + protected lateinit var project: MavenProject + + /** + * Disable Kover goal + */ + @Parameter(property = "kover.skip", defaultValue = "false") + private var skip: Boolean = false + + protected abstract fun doExecute() + + final override fun execute() { + if (checkKoverIsEnabled()) { + doExecute() + } + } + + protected fun checkKoverIsEnabled(): Boolean { + if (skip) { + log.info("Kover is disabled by property 'kover.skip'") + } + return !skip + } +} \ No newline at end of file diff --git a/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractReportTaskMojo.kt b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractReportTaskMojo.kt new file mode 100644 index 00000000..6982cc56 --- /dev/null +++ b/kover-maven-plugin/src/main/kotlin/kotlinx/kover/maven/plugin/mojo/abstracts/AbstractReportTaskMojo.kt @@ -0,0 +1,59 @@ +/* + * Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.kover.maven.plugin.mojo.abstracts + +import kotlinx.kover.maven.plugin.Constants.KOVER_REPORTS_PATH +import org.apache.maven.doxia.sink.Sink +import org.apache.maven.doxia.sink.SinkFactory +import org.apache.maven.plugins.annotations.Parameter +import org.apache.maven.reporting.MavenMultiPageReport +import org.apache.maven.reporting.MavenReport +import java.io.File +import java.util.* + +/** + * Common class for reports which can be presented as HTML and uploaded to the site. + * + * Actually its reports generated by `site` lifecycle. + */ +abstract class AbstractReportTaskMojo : AbstractCoverageTaskMojo(), MavenMultiPageReport { + /** + * Directory is configured by configuration in case of default build lifecycle + * or through [AbstractReportTaskMojo.setReportOutputDirectory] function in case of using Maven Site Plugin. + */ + @Parameter(defaultValue = "\${project.reporting.outputDirectory}/$KOVER_REPORTS_PATH") + protected var outputDirectory: File = File(".") + + final override fun generate(sink: org.codehaus.doxia.sink.Sink?, locale: Locale?) { + generate(sink, null, locale) + } + + final override fun generate(sink: Sink?, sinkFactory: SinkFactory?, locale: Locale?) { + if (checkKoverIsEnabled()) { + doExecute() + } + } + + final override fun isExternalReport(): Boolean = true + + final override fun getCategoryName(): String = MavenReport.CATEGORY_PROJECT_REPORTS + + final override fun canGenerateReport(): Boolean = checkKoverIsEnabled() + + final override fun getReportOutputDirectory(): File = outputDirectory + + final override fun setReportOutputDirectory(outputDirectory: File?) { + // we make sure that the reports will be in the `kover` directory + if (outputDirectory == null) { + this.outputDirectory = File(".") + } else { + this.outputDirectory = if (outputDirectory.absoluteFile.name == KOVER_REPORTS_PATH) { + outputDirectory + } else { + outputDirectory.resolve(KOVER_REPORTS_PATH) + } + } + } +} \ No newline at end of file diff --git a/kover-offline-runtime/build.gradle.kts b/kover-offline-runtime/build.gradle.kts index e9628c11..54e32b75 100644 --- a/kover-offline-runtime/build.gradle.kts +++ b/kover-offline-runtime/build.gradle.kts @@ -22,7 +22,7 @@ plugins { id("kover-release-conventions") } -extensions.configure { +koverPublication { description.set("Compiled dependency to ensure the operation of the code that has been instrumented offline") } @@ -40,7 +40,7 @@ dependencies { fatJar(libs.intellij.offline) } -extensions.configure { +koverDocs { docsDirectory.set("offline-instrumentation") description.set("Kover offline instrumentation") callDokkaHtml.set(true) diff --git a/settings.gradle.kts b/settings.gradle.kts index 3b1ebf52..1e624425 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -17,5 +17,6 @@ rootProject.name = "kover" include(":kover-jvm-agent") include(":kover-features-jvm") include(":kover-gradle-plugin") +include(":kover-maven-plugin") include(":kover-cli") include(":kover-offline-runtime")