Title: Local tests failing · Issue #1485 · processing/processing4 · GitHub
Open Graph Title: Local tests failing · Issue #1485 · processing/processing4
X Title: Local tests failing · Issue #1485 · processing/processing4
Description: Most appropriate sub-area of Processing 4? Unit testing Processing version 4.3.4 Operating system MacOS, Windows, Linux Bug description Local testing is broken, creating a classpath issue with an an "undefined" module in gradle. Surprisi...
Open Graph Description: Most appropriate sub-area of Processing 4? Unit testing Processing version 4.3.4 Operating system MacOS, Windows, Linux Bug description Local testing is broken, creating a classpath issue with an a...
X Description: Most appropriate sub-area of Processing 4? Unit testing Processing version 4.3.4 Operating system MacOS, Windows, Linux Bug description Local testing is broken, creating a classpath issue with an a...
Opengraph URL: https://github.com/processing/processing4/issues/1485
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Local tests failing","articleBody":"### Most appropriate sub-area of Processing 4?\n\nUnit testing\n\n### Processing version\n\n4.3.4\n\n### Operating system\n\nMacOS, Windows, Linux\n\n### Bug description\n\nLocal testing is broken, creating a classpath issue with an an \"undefined\" module in gradle. Surprisingly, this **does not fail on github CI**. It does fail on windows, macos, (tested by me and my students) and linux (as tested by @catilac )\n\nThe issue was introduced in PR #1423\n\nThe issue appears to stem from Github changing their gradle version and @moon is working on a long-term solution to bring local testing into parity with PR #1459 (if I understood all this right)\n\n### Steps to reproduce this\n\nCheck out main branch. Try to run tests:\n```\n\u003e ./gradlew clean\n\u003e ./gradlew test\n```\n\nWill see:\n```\n\u003e Task :java:gradle:test\n\nProcessingPluginTest \u003e testJavaSourceFile FAILED\n org.gradle.testkit.runner.UnexpectedBuildFailure at ProcessingPluginTest.kt:34\n\nProcessingPluginTest \u003e testImportingLibrary FAILED\n org.gradle.testkit.runner.UnexpectedBuildFailure at ProcessingPluginTest.kt:34\n\nProcessingPluginTest \u003e testSinglePDE FAILED\n org.gradle.testkit.runner.UnexpectedBuildFailure at ProcessingPluginTest.kt:34\n\nProcessingPluginTest \u003e testMultiplePDE FAILED\n org.gradle.testkit.runner.UnexpectedBuildFailure at ProcessingPluginTest.kt:34\n\nProcessingPluginTest \u003e testWithUnsavedSource FAILED\n org.gradle.testkit.runner.UnexpectedBuildFailure at ProcessingPluginTest.kt:34\n\n7 tests completed, 5 failed\n\n\u003e Task :java:gradle:test FAILED\n\nFAILURE: Build failed with an exception.\n\n* What went wrong:\nExecution failed for task ':java:gradle:test'.\n\u003e There were failing tests. See the report at: file:///Users/shermanm/git/processing4/java/gradle/build/reports/tests/test/index.html\n\n* Try:\n\u003e Run with --scan to get full insights.\n\nBUILD FAILED in 7s\n66 actionable tasks: 2 executed, 64 up-to-date\n```\nDiving into the report link, you'll find the modules all fail:\n\n- ProcessingPluginTest. testImportingLibrary\n- ProcessingPluginTest. testJavaSourceFile\n- ProcessingPluginTest. testMultiplePDE\n- ProcessingPluginTest. testSinglePDE\n- ProcessingPluginTest. testWithUnsavedSource\n\n\u003cimg width=\"708\" height=\"514\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/dee6fd9a-e10a-41b5-a628-e25687d20b16\" /\u003e\n\nClicking into their reports, they fail with the same core issue in the middle: `Could not resolve all files for configuration ':compileClasspath'. Could not find org.processing:core:unspecified.` \n\nHere's one full report:\n```\norg.gradle.testkit.runner.UnexpectedBuildFailure: Unexpected build execution failure in /var/folders/l2/l_2__0cx0_3f0vy9c53zbw401lm217/T/junit15354415828793566169/sketch with arguments [build]\n\nOutput:\n\u003e Task :preprocessPDE\n\u003e Task :scanLibrariesPDE\n\u003e Task :addLegacyDependenciesPDE\n\u003e Task :checkKotlinGradlePluginConfigurationErrors SKIPPED\n\u003e Task :convertXmlValueResourcesForMain NO-SOURCE\n\u003e Task :copyNonXmlValueResourcesForMain NO-SOURCE\n\u003e Task :prepareComposeResourcesTaskForMain NO-SOURCE\n\u003e Task :generateResourceAccessorsForMain SKIPPED\n\u003e Task :generateActualResourceCollectorsForMain SKIPPED\n\u003e Task :generateComposeResClass SKIPPED\n\u003e Task :compileKotlin NO-SOURCE\n\u003e Task :compileJava FAILED\n[Incubating] Problems report is available at: file:///private/var/folders/l2/l_2__0cx0_3f0vy9c53zbw401lm217/T/junit15354415828793566169/sketch/build/reports/problems/problems-report.html\n\nFAILURE: Build failed with an exception.\n\n* What went wrong:\nExecution failed for task ':compileJava'.\n\u003e Could not resolve all files for configuration ':compileClasspath'.\n \u003e Could not find org.processing:core:unspecified.\n Searched in the following locations:\n - https://jogamp.org/deployment/maven/org/processing/core/unspecified/core-unspecified.pom\n - https://repo.maven.apache.org/maven2/org/processing/core/unspecified/core-unspecified.pom\n - file:/Users/shermanm/.m2/repository/org/processing/core/unspecified/core-unspecified.pom\n Required by:\n root project :\n\n* Try:\n\u003e Run with --stacktrace option to get the stack trace.\n\u003e Run with --info or --debug option to get more log output.\n\u003e Run with --scan to get full insights.\n\u003e Get more help at https://help.gradle.org.\n\nDeprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.\n\nYou can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.\n\nFor more on this, please refer to https://docs.gradle.org/8.11/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.\n\nBUILD FAILED in 481ms\n4 actionable tasks: 4 executed\n\n\tat app//org.gradle.testkit.runner.internal.DefaultGradleRunner.lambda$build$2(DefaultGradleRunner.java:274)\n\tat app//org.gradle.testkit.runner.internal.DefaultGradleRunner.run(DefaultGradleRunner.java:367)\n\tat app//org.gradle.testkit.runner.internal.DefaultGradleRunner.build(DefaultGradleRunner.java:272)\n\tat app//ProcessingPluginTest.createTemporaryProcessingSketch(ProcessingPluginTest.kt:34)\n\tat app//ProcessingPluginTest.testWithUnsavedSource(ProcessingPluginTest.kt:195)\n\tat java.base@17.0.17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base@17.0.17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\n\tat java.base@17.0.17/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base@17.0.17/java.lang.reflect.Method.invoke(Method.java:569)\n\tat app//org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)\n\tat app//org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)\n\tat app//org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)\n\tat app//org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)\n\tat app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n\tat app//org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)\n\tat app//org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)\n\tat app//org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)\n\tat app//org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)\n\tat app//org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n\tat app//org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n\tat app//org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n\tat app//org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n\tat app//org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n\tat app//org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n\tat app//org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n\tat org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112)\n\tat org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)\n\tat org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)\n\tat org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:54)\n\tat org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53)\n\tat java.base@17.0.17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base@17.0.17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\n\tat java.base@17.0.17/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base@17.0.17/java.lang.reflect.Method.invoke(Method.java:569)\n\tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)\n\tat org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)\n\tat org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)\n\tat org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:92)\n\tat jdk.proxy1/jdk.proxy1.$Proxy4.processTestClass(Unknown Source)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:183)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:132)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)\n\tat org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)\n\tat org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)\n\tat org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:121)\n\tat org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)\n\tat app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)\n\tat app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)\n```\n\n\nThanks to `git bisect` I've isolated this as the offending commit, merged in PR #1423 :\n```\n821d62c5e43b8e4e72aa2cb4fae56d092ef98c94 is the first bad commit\ncommit 821d62c5e43b8e4e72aa2cb4fae56d092ef98c94\nAuthor: Stef Tervelde \u003cstef@steftervelde.nl\u003e\nDate: Tue Feb 10 01:25:49 2026 +0100\n\n Write and load version.properties for plugin (#1423)\n \n Add a writeVersion Gradle task that writes project.version to build/resources/main/version.properties, so the plugin can access the project version at runtime. This way the version number of the plugin and the used version of processing.core will be the same.\n\n java/gradle/build.gradle.kts | 12 ++++++++++++\n java/gradle/src/main/kotlin/ProcessingPlugin.kt | 5 ++++-\n 2 files changed, 16 insertions(+), 1 deletion(-)\n```\nThis was written by @Stefterv . I'll reproduce the conversation from the discord below.\n\n### snippet\n\n_No response_\n\n### Additional context\n\nThis was discussed in the Discord devs-chat channel. Reproduced here to not be forgotten!\n\n@Stefterv\n\u003e Ah the Gradle Plugin uses the local version of org.processing:core:unspecified to run tests, which seems to not have been build/referenced. I suspected a missing dependency on one of the required gradle tasks\n\n@Stefterv \n\u003e Oh lovely `:core` needs to be signed for that to work\n\u003e And we don't do signing in tests for obv reasons\n\u003e Also the published gradle plugins disappeared from their verification so I suspect there should've been an email on the processing-bot email about why \n\n### Would you like to work on the issue?\n\nI’m not sure yet","author":{"url":"https://github.com/marksherman","@type":"Person","name":"marksherman"},"datePublished":"2026-03-16T19:13:03.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/1485/processing4/issues/1485"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:30ed242f-f8ba-69f1-40cc-56f9c811c3f2 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BC06:148F52:1262072:1A568BE:6A5F965D |
| html-safe-nonce | 5685f13152751c09efd245bb193483d36b58d0ae149bdbcd2827f3fbfe202eb5 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQzA2OjE0OEY1MjoxMjYyMDcyOjFBNTY4QkU6NkE1Rjk2NUQiLCJ2aXNpdG9yX2lkIjoiNTg3NDE4MTk0OTEyNzEyMjg1IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | b5c6e523ade42bb5c684fc1c8dcc5d457f7c31ddb84965dae9ccd340175c0c8e |
| hovercard-subject-tag | issue:4084306166 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/processing/processing4/1485/issue_layout |
| twitter:image | https://opengraph.githubassets.com/5dfdc58b5537febf6d6faa1c3ca373eed232ea997fefa779ab827af87f8591d4/processing/processing4/issues/1485 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/5dfdc58b5537febf6d6faa1c3ca373eed232ea997fefa779ab827af87f8591d4/processing/processing4/issues/1485 |
| og:image:alt | Most appropriate sub-area of Processing 4? Unit testing Processing version 4.3.4 Operating system MacOS, Windows, Linux Bug description Local testing is broken, creating a classpath issue with an a... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | marksherman |
| hostname | github.com |
| expected-hostname | github.com |
| None | 419b66b5f218029570caa18c30987e7dbabe4f5a6767918b33a504d02739c9c7 |
| turbo-cache-control | no-preview |
| go-import | github.com/processing/processing4 git https://github.com/processing/processing4.git |
| octolytics-dimension-user_id | 1617169 |
| octolytics-dimension-user_login | processing |
| octolytics-dimension-repository_id | 844382769 |
| octolytics-dimension-repository_nwo | processing/processing4 |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 844382769 |
| octolytics-dimension-repository_network_root_nwo | processing/processing4 |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | de5b18aa36dbc0b61e03aeb111e84e90fde499b8 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width