intellij-platform-gradle-plugin icon indicating copy to clipboard operation
intellij-platform-gradle-plugin copied to clipboard

`Template not found: PHP Getter Method`

Open ekvedaras opened this issue 2 years ago • 1 comments

Describe the bug

When trying to test findUsages or inspections I get Template not found: PHP Getter Method error. This happens even if nothing from the custom plugin is registered in plugin.xml

The project was generated from JetBrains/intellij-platform-plugin-template:v1.2.0

ERROR: Template not found: PHP Getter Method
Template not found: PHP Getter Method
java.lang.IllegalStateException: Template not found: PHP Getter Method
	at com.intellij.ide.fileTemplates.impl.FileTemplateManagerImpl.getTemplateFromManager(FileTemplateManagerImpl.java:287)
	at com.intellij.ide.fileTemplates.impl.FileTemplateManagerImpl.getCodeTemplate(FileTemplateManagerImpl.java:269)
	at com.jetbrains.php.lang.intentions.generators.PhpAccessorsGenerator.getPossibleAccessorMethodNames(PhpAccessorsGenerator.java:212)
	at com.jetbrains.php.lang.intentions.generators.PhpAccessorsGenerator.findFieldAccessMethods(PhpAccessorsGenerator.java:242)
	at com.jetbrains.php.lang.intentions.generators.PhpAccessorsGenerator.findGetters(PhpAccessorsGenerator.java:260)
	at com.jetbrains.php.lang.findUsages.PhpFindUsagesHandlerFactory.findAccessors(PhpFindUsagesHandlerFactory.java:76)
	at com.jetbrains.php.lang.findUsages.PhpFindUsagesHandlerFactory.createFindUsagesHandler(PhpFindUsagesHandlerFactory.java:61)
	at com.intellij.find.findUsages.FindUsagesManager.getFindUsagesHandler(FindUsagesManager.java:161)
	at com.intellij.find.findUsages.FindUsagesManager.findUsages(FindUsagesManager.java:193)
	at com.intellij.find.impl.FindManagerImpl.findUsages(FindManagerImpl.java:923)
	at com.intellij.find.impl.FindManagerImpl.findUsages(FindManagerImpl.java:913)
	at com.intellij.find.actions.FindUsagesAction.startFindUsages(FindUsagesAction.java:70)
	at com.intellij.find.actions.FindUsagesAction$1.handlePsi(FindUsagesAction.java:63)
	at com.intellij.find.actions.PsiTargetVariant.handle(resolver.kt:72)
	at com.intellij.find.actions.ResolverKt.findShowUsages(resolver.kt:50)
	at com.intellij.find.actions.FindUsagesAction.actionPerformed(FindUsagesAction.java:49)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.doPerformActionOrShowPopup(ActionUtil.java:315)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda$performActionDumbAwareWithCallbacks$4(ActionUtil.java:294)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:337)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:294)
	at com.intellij.testFramework.fixtures.EditorTestFixture.performEditorAction(EditorTestFixture.java:136)
	at com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl.lambda$testFindUsagesUsingAction$17(CodeInsightTestFixtureImpl.java:912)
	at com.intellij.testFramework.EdtTestUtil.runInEdtAndWait(EdtTestUtil.java:33)
	at com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl.testFindUsagesUsingAction(CodeInsightTestFixtureImpl.java:912)
	at com.github.ekvedaras.classfactoryphpstorm.DemoTestCase.testItFindsOneUsage(DemoTestCase.kt:7)
	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 junit.framework.TestCase.runTest(TestCase.java:176)
	at com.intellij.testFramework.UsefulTestCase.lambda$runBare$11(UsefulTestCase.java:531)
	at com.intellij.testFramework.UsefulTestCase.lambda$wrapTestRunnable$13(UsefulTestCase.java:552)
	at com.intellij.testFramework.UsefulTestCase.runTestRunnable(UsefulTestCase.java:452)
	at com.intellij.testFramework.fixtures.BasePlatformTestCase.runTestRunnable(BasePlatformTestCase.java:106)
	at com.intellij.testFramework.UsefulTestCase.defaultRunBare(UsefulTestCase.java:468)
	at com.intellij.testFramework.UsefulTestCase.lambda$runBare$12(UsefulTestCase.java:539)
	at com.intellij.testFramework.EdtTestUtil.lambda$runInEdtAndWait$1(EdtTestUtil.java:40)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	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:741)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:393)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

To Reproduce

Run a test and call either myFixture.testFindUsagesUsingAction or myFixture.enableInspections.

Example test
package com.github.ekvedaras.classfactoryphpstorm

import com.intellij.testFramework.fixtures.BasePlatformTestCase

internal class DemoTestCase : BasePlatformTestCase() {
    override fun getTestDataPath() = "src/test/testData/definition"

    fun testItFindsOneUsage() {
        val usages = myFixture.testFindUsagesUsingAction("filledDefinition.php")
        assertEquals(1, usages.size)
    }
}
Example file to run the test against filledDefinition.php
<?php

class Account {
    public function __construct(
        public readonly string <caret>$id,
        public readonly int $age,
    ) {}
}

class AccountFactory extends ClassFactory {
    protected string $class = Account::class;

    protected function definition(): array
    {
        return [
            'id' => 'abc',
            'age' => 1,
        ];
    }
}

Expected behavior

No error and test runs as expected.

Environment:

  • OS: macOS
  • Gradle IntelliJ Plugin Version 1.8.0, 1.8.1
  • Gradle Version 7.5.1

ekvedaras avatar Aug 29 '22 12:08 ekvedaras

This is caused because of 9097348ac8ee4021031d240fd523d4f200a7a6bc which was required for fixing #1065 The issue is currently back under investigation – a minimal reproducible project for JaCoCo case was created: https://github.com/hsz/tests-classpath-issue

hsz avatar Sep 20 '22 09:09 hsz

It seems fixed in 1.10.

adelf avatar Nov 18 '22 14:11 adelf