<idea-plugin>
    <!-- Product and plugin compatibility requirements -->
    <!-- https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
    <depends>com.intellij.modules.platform </depends>
    <depends>org.jetbrains.kotlin</depends>
    <depends>com.intellij.java</depends>
    <depends>com.intellij.gradle</depends>
    <depends>org.jetbrains.plugins.gradle</depends>
    <depends optional="true" config-file="git4idea-integration.xml">Git4Idea</depends>

    <resource-bundle>messages.MyBundle</resource-bundle>

    <extensions defaultExtensionNs="com.intellij">
        <fileEditorProvider implementation="org.jetbrains.kotlin.test.helper.KotlinTestDataFileEditorProvider"/>
        <projectConfigurable bundle="messages.MyBundle" instance="org.jetbrains.kotlin.test.helper.TestDataPathsConfigurable"
                             key="pluginSettingsDisplayName"/>

        <!-- For some reason, doesn't work when put into `<extensions defaultExtensionNs="org.jetbrains.kotlin">`. -->
        <!-- Also, `order="first"` is important somehow. -->
        <runAnything.executionProvider implementation="org.jetbrains.kotlin.test.helper.runAnything.TestGloballyRunAnythingProvider"
                                       order="first"/>

        <localInspection language="kotlin"
                         groupName="Kotlin"
                         enabledByDefault="true"
                         level="WARNING"
                         implementationClass="org.jetbrains.kotlin.test.helper.inspections.ParameterShouldBeContextParameterInspection"
                         key="inspection.parameter.should.be.context.parameter.display.name"/>

        <postStartupActivity implementation="org.jetbrains.kotlin.test.helper.inspections.OldPluginInstalledWarner"/>
        <notificationGroup id="Kotlin Compiler DevKit Notifications"
          displayType="BALLOON"
          key="compiler.devkit.notifications"/>
        <notificationGroup id="Kotlin Compiler DevKit Run Apply"
          displayType="STICKY_BALLOON"
          key="compiler.devkit.run_apply"/>

        <lang.inspectionSuppressor language="kotlin" implementationClass="org.jetbrains.kotlin.test.helper.inspections.UnusedDeclarationSuppressor"/>

        <intentionAction>
            <language>kotlin</language>
            <className>org.jetbrains.kotlin.test.helper.intentions.CreateContextualOverloadIntention</className>
            <category>Kotlin Compiler DevKit</category>
        </intentionAction>

        <psi.referenceContributor implementation="org.jetbrains.kotlin.test.helper.reference.DirectiveReferenceContributor"
                                  language="kotlin"/>

        <completion.contributor language="kotlin" implementationClass="org.jetbrains.kotlin.test.helper.completion.CommentDirectiveCompletionContributor"/>
    </extensions>

    <extensions defaultExtensionNs="org.jetbrains.kotlin">
        <supportsKotlinK2Mode/>
        <supportsKotlinPluginMode supportsK2="true" supportsK1="true"/>
    </extensions>

    <actions>
        <group id="TestDataRunAllTestsSpecificGroup"
               text="Run Specific Tests"
               icon="AllIcons.RunConfigurations.Junit"
               popup="true"
               class="org.jetbrains.kotlin.test.helper.actions.RunSelectedFilesGroup">
            <add-to-group group-id="ProjectViewPopupMenu" anchor="last"/>
            <add-to-group group-id="ChangesViewPopupMenu" anchor="last"/>
            <add-to-group group-id="Vcs.Log.ChangesBrowser.Popup" anchor="last"/>
            <add-to-group group-id="NavbarPopupMenu" anchor="last"/>
            <add-to-group group-id="UsageView.Popup" anchor="last"/>
            <add-to-group group-id="EditorTabPopupMenuEx" anchor="last"/>

            <action id="TestDataRunAllTestsSpecific"
                    class="org.jetbrains.kotlin.test.helper.actions.RunSelectedFilesSpecificTestsAction"
                    text="Run Specific Tests" description="Run specific tests related to selected files"
                    icon="AllIcons.RunConfigurations.TestState.Run">
            </action>
            <action id="TestDataDebugAllTestsSpecific"
                    class="org.jetbrains.kotlin.test.helper.actions.DebugSelectedFilesSpecificTestsAction"
                    text="Debug Specific Tests" description="Debug specific tests related to selected files"
                    icon="AllIcons.Actions.StartDebugger">
            </action>
            <action
                    id="RunSelectedAndApplyDiffs"
                    class="org.jetbrains.kotlin.test.helper.actions.RunSelectedAndApplyDiffsAction"
                    text="Run Specific Tests and Apply Diffs"
                    description="Runs specific tests and applies all diffs."
                    icon="AllIcons.Diff.ApplyNotConflicts">
            </action>
        </group>

        <group id="TestDataRunAllTestsGroup"
               text="Run All Tests"
               icon="AllIcons.RunConfigurations.Junit"
               popup="true"
               class="org.jetbrains.kotlin.test.helper.actions.RunSelectedFilesGroup">
            <add-to-group group-id="ProjectViewPopupMenu" anchor="last"/>
            <add-to-group group-id="ChangesViewPopupMenu" anchor="last"/>
            <add-to-group group-id="Vcs.Log.ChangesBrowser.Popup" anchor="last"/>
            <add-to-group group-id="NavbarPopupMenu" anchor="last"/>
            <add-to-group group-id="UsageView.Popup" anchor="last"/>
            <add-to-group group-id="EditorTabPopupMenuEx" anchor="last"/>

            <action id="TestDataRunAllTests"
                    class="org.jetbrains.kotlin.test.helper.actions.RunSelectedFilesTestsAction"
                    text="Run All Tests" description="Run all tests related to selected files"
                    icon="AllIcons.RunConfigurations.TestState.Run">
            </action>
            <action id="TestDataDebugAllTests"
                    class="org.jetbrains.kotlin.test.helper.actions.DebugSelectedFilesTestsAction"
                    text="Debug All Tests" description="Debug all tests related to selected files"
                    icon="AllIcons.Actions.StartDebugger">
            </action>
            <action
                    id="RunAllAndApplyDiffs"
                    class="org.jetbrains.kotlin.test.helper.actions.RunAllAndApplyDiffsAction"
                    text="Run All Tests and Apply Diffs"
                    description="Runs all tests and applies all diffs."
                    icon="AllIcons.Diff.ApplyNotConflicts">
            </action>
            <action
                    id="CreateReproducerCommit"
                    class="org.jetbrains.kotlin.test.helper.actions.CreateReproducerCommitAction"
                    text="Create Reproducer Commit"
                    description="Generates tests, runs all tests, applies all diffs and creates a commit with the specified ticket number."
                    icon="AllIcons.Actions.Commit">
            </action>
        </group>

        <action id="RunAllChangesTests" class="org.jetbrains.kotlin.test.helper.actions.RunAllChangedTestsAction"
                text="Run All Changed Tests"
                description="Run all tests related to changed test data files"
                icon="AllIcons.RunConfigurations.Junit">
            <add-to-group group-id="ChangesViewToolbar" anchor="last"/>
        </action>

        <action id="CopyTextWithoutMetadata"
                class="org.jetbrains.kotlin.test.helper.actions.CopyTextWithoutMetadataAction"
                text="Copy Without Metadata"
                description="Copies the selected text in the current editor without Kotlin testdata metadata">
            <add-to-group group-id="Copy.Paste.Special" anchor="last" />
        </action>

        <action id="ApplyFileDiff"
                class="org.jetbrains.kotlin.test.helper.actions.ApplyFileDiffAction"
                text="Apply Diffs"
                description="Applies the diff between the expected value and the actual file"
                icon="AllIcons.Diff.ApplyNotConflicts">
            <add-to-group group-id="TestTreePopupMenu" anchor="last" />
        </action>

        <action id="org.jetbrains.kotlin.test.helper.actions.RemoveFirIdenticalAction"
                class="org.jetbrains.kotlin.test.helper.actions.RemoveFirIdenticalAction"
                text="Remove FIR__IDENTICAL"
                description="Removes the FIR_IDENTICAL directive">
            <add-to-group group-id="TestTreePopupMenu" anchor="last" />
        </action>

        <action id="org.jetbrains.kotlin.test.helper.actions.AddLatestLvDifference"
                class="org.jetbrains.kotlin.test.helper.actions.AddLatestLvDifference"
                text="Add LATEST__LV__DIFFERENCE"
                description="Adds the LATEST_LV_DIFFERENCE directive">
            <add-to-group group-id="TestTreePopupMenu" anchor="last" />
        </action>

        <action id="org.jetbrains.kotlin.test.helper.actions.RemoveLatestLvDifference"
                class="org.jetbrains.kotlin.test.helper.actions.RemoveLatestLvDifference"
                text="Remove LATEST__LV__DIFFERENCE"
                description="Adds the LATEST_LV_DIFFERENCE directive">
            <add-to-group group-id="TestTreePopupMenu" anchor="last" />
        </action>
    </actions>
</idea-plugin>
