TestKit failing to execute a build in the same way as importing the project locally.
TestKit test should exhibit same behavior as standalone project and succeed.
Test fails unexpectedly, but works when running publishToMavenLocal and consuming the plugin from local ~/.m2/repository in a test project succeeds (example project here https://github.com/mkobit/jenkins-pipeline-shared-library-example)
Build output
org.gradle.testkit.runner.UnexpectedBuildFailure: Unexpected build execution failure in /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516 with arguments [-s, -i]
Output:
The client will now receive all logging from the daemon (pid: 605). The daemon log file: /tmp/.gradle-test-kit-circleci/test-kit-daemon/4.1/daemon-605.out.log
Starting 7th build in daemon [uptime: 30.778 secs, performance: 98%]
Using 36 worker leases.
Closing daemon's stdin at end of input.
The daemon will no longer process any standard input.
Creating new cache for fileHashes, path /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/.gradle/4.1/fileHashes/fileHashes.bin, access org.gradle.cache.internal.DefaultCacheAccess@29e6a1ff
Creating new cache for plugin-use-metadata, path /tmp/.gradle-test-kit-circleci/caches/4.1/plugin-resolution/plugin-use-metadata.bin, access org.gradle.cache.internal.DefaultCacheAccess@1c7aae0b
Creating new cache for client-status, path /tmp/.gradle-test-kit-circleci/caches/4.1/plugin-resolution/client-status.bin, access org.gradle.cache.internal.DefaultCacheAccess@1c7aae0b
Starting Build
Settings evaluated using settings file '/tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/settings.gradle'.
Projects loaded. Root project using build file '/tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts'.
Included projects: [root project 'Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516']
Evaluating root project 'Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516' using build file '/tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts'.
Generating JAR file: /tmp/.gradle-test-kit-circleci/caches/4.1/generated-gradle-jars/gradle-api-4.1.jar
Generating JAR file 'gradle-api-4.1.jar'
Generating JAR file 'gradle-kotlin-dsl-extensions-0.10.3-4.1.jar'
w: Some JAR files in the classpath have the Kotlin Runtime library bundled into them. This may cause difficult to debug problems if there's a different version of the Kotlin Runtime library in the classpath. Consider removing these libraries from the classpath or use '-Xskip-runtime-version-check' to suppress this warning
w: /home/circleci/.gradle/wrapper/dists/gradle-4.1-bin/c3kp51zwwt108wc78u68yt7vs/gradle-4.1/lib/kotlin-compiler-embeddable-1.1.3-2.jar: Library has Kotlin runtime bundled into it
Creating new cache for metadata-1.1/results, path /tmp/.gradle-test-kit-circleci/caches/transforms-1/metadata-1.1/results.bin, access org.gradle.cache.internal.DefaultCacheAccess@721f5cba
w: Some JAR files in the classpath have the Kotlin Runtime library bundled into them. This may cause difficult to debug problems if there's a different version of the Kotlin Runtime library in the classpath. Consider removing these libraries from the classpath or use '-Xskip-runtime-version-check' to suppress this warning
w: /home/circleci/.gradle/wrapper/dists/gradle-4.1-bin/c3kp51zwwt108wc78u68yt7vs/gradle-4.1/lib/kotlin-compiler-embeddable-1.1.3-2.jar: Library has Kotlin runtime bundled into it
e: /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts:14:3: Unresolved reference: groovyVersion
e: /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts:15:3: Unresolved reference: coreVersion
e: /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts:16:3: Unresolved reference: pipelineTestUnitVersion
e: /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts:17:3: Unresolved reference: testHarnessVersion
e: /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts:18:3: Unresolved reference: pluginDependencies
e: /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts:19:5: Unresolved reference: workflowCpsGlobalLibraryPluginVersion
e: /tmp/Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516/build.gradle.kts:20:5: Unresolved reference: blueocean
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516'.
> Could not open cache directory ba2ub9bgjlkw0kyd3fa73oqeq (/tmp/.gradle-test-kit-circleci/caches/4.1/gradle-kotlin-dsl/ba2ub9bgjlkw0kyd3fa73oqeq).
> Internal error: unable to compile script, see log for details
* Try:
Run with --debug option to get more log output.
* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring root project 'Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main7624860855275780516'.
at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:87)
at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:65)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$100(LifecycleProjectEvaluator.java:33)
at org.gradle.configuration.project.LifecycleProjectEvaluator$ConfigureProject.run(LifecycleProjectEvaluator.java:103)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:49)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:651)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:133)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
at org.gradle.initialization.DefaultGradleLauncher$ConfigureBuild.run(DefaultGradleLauncher.java:246)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
at org.gradle.initialization.DefaultGradleLauncher.configureBuild(DefaultGradleLauncher.java:165)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:124)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:107)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78)
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:53)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:45)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:29)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:71)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:45)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:51)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:58)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:33)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:82)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.cache.CacheOpenException: Could not open cache directory ba2ub9bgjlkw0kyd3fa73oqeq (/tmp/.gradle-test-kit-circleci/caches/4.1/gradle-kotlin-dsl/ba2ub9bgjlkw0kyd3fa73oqeq).
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:59)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:30)
at org.gradle.cache.internal.DefaultCacheFactory.doOpen(DefaultCacheFactory.java:89)
at org.gradle.cache.internal.DefaultCacheFactory.open(DefaultCacheFactory.java:63)
at org.gradle.cache.internal.DefaultCacheRepository$PersistentCacheBuilder.open(DefaultCacheRepository.java:123)
at org.gradle.kotlin.dsl.cache.ScriptCache.cacheDirFor(ScriptCache.kt:51)
at org.gradle.kotlin.dsl.cache.ScriptCache.cacheDirFor$default(ScriptCache.kt:43)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler.cacheDirFor(CachingKotlinCompiler.kt:169)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler.compileScript(CachingKotlinCompiler.kt:130)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler.compileBuildScript(CachingKotlinCompiler.kt:110)
at org.gradle.kotlin.dsl.provider.KotlinBuildScriptCompiler.compileScriptFile(KotlinBuildScriptCompiler.kt:242)
at org.gradle.kotlin.dsl.provider.KotlinBuildScriptCompiler.executeScriptBodyOn(KotlinBuildScriptCompiler.kt:114)
at org.gradle.kotlin.dsl.provider.KotlinBuildScriptCompiler.prepareAndExecuteScriptBodyOn(KotlinBuildScriptCompiler.kt:108)
at org.gradle.kotlin.dsl.provider.KotlinBuildScriptCompiler.access$prepareAndExecuteScriptBodyOn(KotlinBuildScriptCompiler.kt:51)
at org.gradle.kotlin.dsl.provider.KotlinBuildScriptCompiler$compileTopLevelScript$1.invoke(KotlinBuildScriptCompiler.kt:91)
at org.gradle.kotlin.dsl.provider.KotlinBuildScriptCompiler$compileTopLevelScript$1.invoke(KotlinBuildScriptCompiler.kt:51)
at org.gradle.kotlin.dsl.provider.KotlinScriptPlugin.apply(KotlinScriptPlugin.kt:48)
at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperationScriptPlugin.java:61)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:58)
at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:39)
at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:63)
... 81 more
Caused by: java.lang.IllegalStateException: Internal error: unable to compile script, see log for details
at org.gradle.kotlin.dsl.support.KotlinCompilerKt.compileKotlinScriptToDirectory(KotlinCompiler.kt:80)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler$compileScriptTo$$inlined$run$lambda$1.invoke(CachingKotlinCompiler.kt:154)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler$compileScriptTo$$inlined$run$lambda$1.invoke(CachingKotlinCompiler.kt:46)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler.withProgressLoggingFor(CachingKotlinCompiler.kt:213)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler.compileScriptTo(CachingKotlinCompiler.kt:152)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler.access$compileScriptTo(CachingKotlinCompiler.kt:46)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler$compileScript$cacheDir$1.invoke(CachingKotlinCompiler.kt:132)
at org.gradle.kotlin.dsl.provider.CachingKotlinCompiler$compileScript$cacheDir$1.invoke(CachingKotlinCompiler.kt:46)
at org.gradle.kotlin.dsl.cache.ScriptCacheKt$sam$Action$904ef041.execute(ScriptCache.kt)
at org.gradle.cache.internal.DefaultPersistentDirectoryCache$Initializer.initialize(DefaultPersistentDirectoryCache.java:103)
at org.gradle.cache.internal.FixedSharedModeCrossProcessCacheAccess$1.run(FixedSharedModeCrossProcessCacheAccess.java:73)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.doWriteAction(DefaultFileLockManager.java:190)
at org.gradle.cache.internal.DefaultFileLockManager$DefaultFileLock.writeFile(DefaultFileLockManager.java:180)
at org.gradle.cache.internal.FixedSharedModeCrossProcessCacheAccess.open(FixedSharedModeCrossProcessCacheAccess.java:71)
at org.gradle.cache.internal.DefaultCacheAccess.open(DefaultCacheAccess.java:133)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(DefaultPersistentDirectoryStore.java:57)
... 107 more
* Get more help at https://help.gradle.org
BUILD FAILED in 15s
at org.gradle.testkit.runner.internal.DefaultGradleRunner$1.execute(DefaultGradleRunner.java:222)
at org.gradle.testkit.runner.internal.DefaultGradleRunner$1.execute(DefaultGradleRunner.java:219)
at org.gradle.testkit.runner.internal.DefaultGradleRunner.run(DefaultGradleRunner.java:282)
at org.gradle.testkit.runner.internal.DefaultGradleRunner.build(DefaultGradleRunner.java:219)
at testsupport.GradleTestKitKt.buildWithPluginClasspath(gradleTestKit.kt:13)
at com.mkobit.jenkins.pipelines.IntegrationTestSourceIntegrationTest.Kotlin DSL extension configuration$jenkins_pipeline_shared_libraries_gradle_plugin_main(IntegrationTestSourceIntegrationTest.kt:116)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:389)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:167)
at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:163)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:110)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:83)
at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92)
at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$null$2(HierarchicalTestExecutor.java:92)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$3(HierarchicalTestExecutor.java:92)
at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:77)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:51)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
at org.junit.platform.console.tasks.ConsoleTestExecutor.executeTests(ConsoleTestExecutor.java:65)
at org.junit.platform.console.tasks.ConsoleTestExecutor.lambda$execute$0(ConsoleTestExecutor.java:57)
at org.junit.platform.console.tasks.CustomContextClassLoaderExecutor.invoke(CustomContextClassLoaderExecutor.java:33)
at org.junit.platform.console.tasks.ConsoleTestExecutor.execute(ConsoleTestExecutor.java:57)
at org.junit.platform.console.ConsoleLauncher.executeTests(ConsoleLauncher.java:84)
at org.junit.platform.console.ConsoleLauncher.execute(ConsoleLauncher.java:74)
at org.junit.platform.console.ConsoleLauncher.execute(ConsoleLauncher.java:47)
at org.junit.platform.console.ConsoleLauncher.main(ConsoleLauncher.java:39)
I was testing my plugin to make sure it was friendly in the Kotlin DSL.
UPDATE: https://github.com/gradle/kotlin-dsl/issues/492#issuecomment-371575354 for reduced example
1.1.4-3 (so maybe classpath issues?)UPDATE: https://github.com/gradle/kotlin-dsl/issues/492#issuecomment-371575354 for updated example
I think I have a much more minimal examples showing issues at https://github.com/mkobit/kotlin-dsl-issue-492/tree/using-kotlin-dsl-plugin.
Here is code first, with simple reproduce steps to clone/run below it.
(One example) of build.gradle.kts
``kotlin
plugins {
java-gradle-plugin
// Case 1:
kotlin-dsl`
}
tasks {
"wrapper"(Wrapper::class) {
gradleVersion = "4.3-rc-4"
}
}
repositories {
jcenter()
}
dependencies {
testImplementation("junit:junit:4.12")
}
gradlePlugin {
plugins.invoke {
// Don't get the extensions for NamedDomainObjectContainer here because we only have a NamedDomainObjectContainer
// See https://github.com/gradle/kotlin-dsl/issues/459
"example" {
id = "com.mkobit.example-plugin"
implementationClass = "com.mkobit.ExamplePlugin"
}
}
}
````
plugin and extension:
package com.mkobit
import org.gradle.api.Plugin
import org.gradle.api.Project
class ExamplePlugin : Plugin<Project> {
override fun apply(project: Project) {
project.extensions.create("exampleExtension", ExampleExtension::class.java, "hello")
}
}
open class ExampleExtension(var myValue: String) {
}
Test
package com.mkobit
import org.gradle.testkit.runner.GradleRunner
import org.junit.Before
import org.junit.Test
import java.io.File
class ExampleTestKitTest {
private lateinit var gradleKts: File
private lateinit var gradleRunner: GradleRunner
@Before
fun setUp() {
val projectDir = createTempDir().apply {
deleteOnExit()
}
gradleKts = projectDir.resolve("build.gradle.kts")
gradleKts.writeText("""
plugins {
id("com.mkobit.example-plugin")
}
""".trimIndent())
gradleRunner = GradleRunner.create()
.withProjectDir(projectDir)
.withPluginClasspath()
}
@Test
fun `can println out extensions`() {
gradleKts.appendText("""
println(extensions)
""".trimIndent())
gradleRunner.build()
}
@Test
fun `can access extension by name`() {
gradleKts.appendText("""
println(exampleExtension)
""".trimIndent())
gradleRunner.build()
}
@Test
fun `can access extension property`() {
gradleKts.appendText("""
println(exampleExtension.myValue)
""".trimIndent())
gradleRunner.build()
}
@Test
fun `can set extension property`() {
gradleKts.appendText("""
exampleExtension {
myValue = "hello there!"
}
println(exampleExtension.myValue)
""".trimIndent())
gradleRunner.build()
}
}
git clone https://github.com/mkobit/kotlin-dsl-issue-492.git && cd kotlin-dsl-issue-492
git checkout using-kotlin-dsl-plugin && ./gradlew build
e: /tmp/tmp5888418560765600275.tmp/build.gradle.kts:3:2: Unresolved reference: printlnone test fails with:
e: /tmp/tmp8440621454011785073.tmp/build.gradle.kts:3:2: Unresolved reference: println
e: /tmp/tmp8440621454011785073.tmp/build.gradle.kts:3:27: Unresolved reference: myValue
one test fails with:
Output:
e: /tmp/tmp1687580607934068733.tmp/build.gradle.kts:3:2: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public fun Project.exampleExtension(configure: Any.() -> Unit): Unit defined in org.gradle.kotlin.dsl
e: /tmp/tmp1687580607934068733.tmp/build.gradle.kts:4:3: Unresolved reference: myValue
e: /tmp/tmp1687580607934068733.tmp/build.gradle.kts:6:26: Unresolved reference: myValue
git checkout using-embedded-kotlin && ./gradlew build
All these fail with error presumable because of some compileOnly type dependency with the embedded-kotlin dependency:
java.lang.NoClassDefFoundError: kotlin/io/FilesKt
at com.mkobit.ExampleTestKitTest.setUp(ExampleTestKitTest.kt:15)
git checkout using-kotlin-jvm-plugin && ./gradlew build
kotlin-dsl pluginI'm wondering if this might have to do with how test kit uses the plugin classpath using .withPluginClasspath()? Or possibly how the tooling API invokes the build? Any pointers on where to go for this?
Does the configuration inside of this repository offer any hints?
Clearly this project is able to test itself.
I pushed an update to the master branch in https://github.com/mkobit/kotlin-dsl-issue-492 that has all 3 example merges into a single multi-project build and a report at build/testReports/index.html after running ./gradlew build.
Somebody else brought up what sounded like a similar issue in the #gradle channel, so I asked them to also post in here.
In response to @mkobit: https://kotlinlang.slack.com/archives/C19FD9681/p1520527369000289
Originally I had asked for help hehttps://kotlinlang.slack.com/archives/C0922A726/p1520441466000341
In essence I have the problem that extension class decorators seem to be found by TestKit, but the properties of the extension are not found. The plugin that I started developing has a failing test case that shows the problem here: https://github.com/FWiesner/magicdraw-gradle-plugin/blob/master/src/test/kotlin/florianwiesner/gradle/magicdraw/MagicDrawGradlePluginSpec.kt
I'm having a similar problem testing the Spotless project.
I've setup my test so that the Groovy and the Kotlin are exactly the same syntax.
The following Groovy test succeeds:
public class SimpleLicenseHeaderExtensionTest extends GradleIntegrationTest {
private static final String HEADER = "// License Header";
@Test
public void testWithCommonInterfaceForConfiguringLicences() throws IOException {
setFile("build.gradle").toLines(
"plugins {",
" id(\"org.jetbrains.kotlin.jvm\") version \"1.2.31\"",
" id(\"com.diffplug.gradle.spotless\")",
"}",
"repositories { mavenCentral() }",
"spotless {",
" kotlin {",
" licenseHeader(\"" + HEADER + "\")",
" ktlint()",
" }",
"}");
gradleRunner()
.withGradleVersion("4.6")
.withArguments("spotlessApply")
.forwardOutput()
.build();
}
}
But when I change to Kotlin using the file name build.gradle.kts the following tests fails.
public class SimpleLicenseHeaderExtensionTest extends GradleIntegrationTest {
private static final String HEADER = "// License Header";
@Test
public void testWithCommonInterfaceForConfiguringLicences() throws IOException {
setFile("build.gradle.kts").toLines(
"plugins {",
" id(\"org.jetbrains.kotlin.jvm\") version \"1.2.31\"",
" id(\"com.diffplug.gradle.spotless\")",
"}",
"repositories { mavenCentral() }",
"spotless {",
" kotlin {",
" licenseHeader(\"" + HEADER + "\")",
" ktlint()",
" }",
"}");
gradleRunner()
.withGradleVersion("4.6")
.withArguments("spotlessApply")
.forwardOutput()
.build();
}
}
With the following exceptions:
BUILD FAILED in 7s
com.diffplug.gradle.spotless.SimpleLicenseHeaderExtensionTest > testWithCommonInterfaceForConfiguringLicences FAILED
org.gradle.testkit.runner.UnexpectedBuildFailure at SimpleLicenseHeaderExtensionTest.java:28
Unexpected build execution failure in /private/var/folders/_z/rsm6yq417ggcpzb6jf_c8hh80000gn/T/junit1640032401369206282 with arguments [spotlessApply]
Output:
e: /private/var/folders/_z/rsm6yq417ggcpzb6jf_c8hh80000gn/T/junit1640032401369206282/build.gradle.kts:8:9: Unresolved reference: licenseHeader
e: /private/var/folders/_z/rsm6yq417ggcpzb6jf_c8hh80000gn/T/junit1640032401369206282/build.gradle.kts:9:9: Unresolved reference: ktlint
FAILURE: Build failed with an exception.
* Where:
Build file '/private/var/folders/_z/rsm6yq417ggcpzb6jf_c8hh80000gn/T/junit1640032401369206282/build.gradle.kts' line: 8
* What went wrong:
Script compilation errors:
Line 8: licenseHeader("// License Header")
^ Unresolved reference: licenseHeader
Line 9: ktlint()
^ Unresolved reference: ktlint
2 errors
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 7s
org.gradle.testkit.runner.UnexpectedBuildFailure: Unexpected build execution failure in /private/var/folders/_z/rsm6yq417ggcpzb6jf_c8hh80000gn/T/junit1640032401369206282 with arguments [spotlessApply]
Output:
e: /private/var/folders/_z/rsm6yq417ggcpzb6jf_c8hh80000gn/T/junit1640032401369206282/build.gradle.kts:8:9: Unresolved reference: licenseHeader
e: /private/var/folders/_z/rsm6yq417ggcpzb6jf_c8hh80000gn/T/junit1640032401369206282/build.gradle.kts:9:9: Unresolved reference: ktlint
FAILURE: Build failed with an exception.
* Where:
Build file '/private/var/folders/_z/rsm6yq417ggcpzb6jf_c8hh80000gn/T/junit1640032401369206282/build.gradle.kts' line: 8
* What went wrong:
Script compilation errors:
Line 8: licenseHeader("// License Header")
^ Unresolved reference: licenseHeader
Line 9: ktlint()
^ Unresolved reference: ktlint
2 errors
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
@mkobit Does this seem to be the same issue or does it merit it's own issue?
@JLLeitschuh that looks to me like the same issue.
EDIT: it may actually be different (could be function scopes and container handling in Groovy), I'lll take a peak at the source to see
Ok I just looked at it again and that does look similar. I went through my demo project at https://github.com/mkobit/kotlin-dsl-issue-492 for some more examples of the problem compared to Groovy and it still shows up in 4.7
Hey @mkobit, could you try the latest snapshot distro on your project and report back whether the implemented fix works for you?
./gradlew wrapper --gradle-distribution-url https://repo.gradle.org/gradle/kotlin-dsl-snapshots-local/gradle-kotlin-dsl-4.8-20180505151226+0000-all.zip
@bamboo I tried it out on https://github.com/mkobit/kotlin-dsl-issue-492 and it looks like it fixed it. I'm still going to try it on a couple of other projects.
EDIT: Just tried on another real project, and it looks good!
Great. Thanks, @mkobit!
Hi together,
I encounter same issue. I use gradle version 6.4.1. Not quite sure if it is a regression or if something has changed in how to use the GradleRunner