JetBrains / intellij-platform-gradle-plugin

Gradle plugin for building plugins for IntelliJ-based IDEs
https://plugins.jetbrains.com/docs/intellij/gradle-prerequisites.html
Apache License 2.0
1.4k stars 270 forks source link

Duplicate bundled template error in tests #1640

Closed Undin closed 3 weeks ago

Undin commented 4 weeks ago

What happened?

If:

then any test in module A which invokes com.intellij.ide.fileTemplates.FileTemplateManager#findInternalTemplate or similar method fails with Duplicate bundled template error. It seems there are two artifacts (<module>.jar and <module>-base.jar) which are used as a dependency between two project modules which leads to duplicate recourses

Relevant log output or stack trace

Duplicate bundled template template1.txt [(root=jar:file:/Users/Arseniy.Pendryak/Work/intellij-platform-gradle-plugins-bugs/module/build/libs/module-base.jar!/fileTemplates, path=internal/template1.txt.ft), (root=jar:file:/Users/Arseniy.Pendryak/Work/intellij-platform-gradle-plugins-bugs/module/build/libs/module.jar!/fileTemplates, path=internal/template1.txt.ft)]
java.lang.Throwable: Duplicate bundled template template1.txt [(root=jar:file:/Users/Arseniy.Pendryak/Work/intellij-platform-gradle-plugins-bugs/module/build/libs/module-base.jar!/fileTemplates, path=internal/template1.txt.ft), (root=jar:file:/Users/Arseniy.Pendryak/Work/intellij-platform-gradle-plugins-bugs/module/build/libs/module.jar!/fileTemplates, path=internal/template1.txt.ft)]
    at com.intellij.openapi.diagnostic.Logger.error(Logger.java:376)
    at com.intellij.ide.fileTemplates.impl.FTManager.<init>(FTManager.java:70)
    at com.intellij.ide.fileTemplates.impl.FileTemplatesLoaderKt.loadConfiguration(FileTemplatesLoader.kt:170)
    at com.intellij.ide.fileTemplates.impl.FileTemplatesLoaderKt.access$loadConfiguration(FileTemplatesLoader.kt:1)
    at com.intellij.ide.fileTemplates.impl.FileTemplatesLoader$managers$1.invoke(FileTemplatesLoader.kt:55)
    at com.intellij.ide.fileTemplates.impl.FileTemplatesLoader$managers$1.invoke(FileTemplatesLoader.kt:55)
    at com.intellij.util.concurrency.SynchronizedClearableLazy._get_value_$lambda$1$lambda$0(SynchronizedClearableLazy.kt:41)
    at java.base/java.util.concurrent.atomic.AtomicReference.updateAndGet(AtomicReference.java:210)
    at com.intellij.util.concurrency.SynchronizedClearableLazy.getValue(SynchronizedClearableLazy.kt:40)
    at com.intellij.ide.fileTemplates.impl.FileTemplatesLoader.getInternalTemplatesManager(FileTemplatesLoader.kt:64)
    at com.intellij.ide.fileTemplates.impl.FileTemplateManagerImpl.findInternalTemplate(FileTemplateManagerImpl.java:245)
    at com.intellij.ide.fileTemplates.impl.FileTemplateManagerImpl.getInternalTemplate(FileTemplateManagerImpl.java:234)
    at org.jetbrains.intellij.platform.example.ExampleTest.simple test(ExampleTest.kt:14)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at com.intellij.testFramework.UsefulTestCase.lambda$wrapTestRunnable$13(UsefulTestCase.java:504)
    at com.intellij.testFramework.UsefulTestCase.runTestRunnable(UsefulTestCase.java:408)
    at com.intellij.testFramework.fixtures.BasePlatformTestCase.runTestRunnable(BasePlatformTestCase.java:109)
    at com.intellij.testFramework.UsefulTestCase.defaultRunBare(UsefulTestCase.java:424)
    at com.intellij.testFramework.UsefulTestCase.lambda$runBare$12(UsefulTestCase.java:491)
    at com.intellij.testFramework.EdtTestUtil.lambda$runInEdtAndWait$3(EdtTestUtil.java:80)
    at com.intellij.openapi.application.impl.RwLockHolder.runWriteIntentReadAction(RwLockHolder.kt:70)
    at com.intellij.testFramework.EdtTestUtil.lambda$runInEdtAndWait$4(EdtTestUtil.java:79)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:761)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:326)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

Steps to reproduce

Use https://github.com/Undin/intellij-platform-gradle-plugins-bugs/tree/duplicate-template-files-in-tests and try to run org.jetbrains.intellij.platform.example.ExampleTest#simple test

Gradle IntelliJ Plugin version

2.0.0-beta5

Gradle version

8.7

Operating System

macOS

Link to build, i.e. failing GitHub Action job

No response

hsz commented 3 weeks ago

Fixed with fe290aaf3e1f432e9266172cd767646452c38583