Skip to content

feat(openide): lay the run configuration out like PhpStorm's, with its own interpreter - #135

Open
roxblnfk wants to merge 3 commits into
open-idefrom
feat/openide-run-form
Open

roxblnfk wants to merge 3 commits into
open-idefrom
feat/openide-run-form

Conversation

@roxblnfk

@roxblnfk roxblnfk commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

What was changed

  • The OpenIDE run configuration form follows the PHPUnit one: Test Runner with the scope as radio buttons and only that scope's fields, then Command Line — Interpreter, Interpreter options, Testo executable, working directory, environment — then the Testo options (Filter, Reports, Coverage, Mutation Testing).
  • Each configuration has its own PHP interpreter; empty means the project default, so existing configurations keep following the active profile. A deleted profile fails the configuration check and the run instead of falling back. Every launch path resolves it: run, debug, coverage, mutation, Rerun Failed Tests and Infection's tool environment.
  • Interpreter options go right after php, before the plugin's own debug / PCOV options.
  • The Command field is gone; a saved command still loads and runs, as on PhpStorm.
  • The Filter tags are labelled Suites / Groups / Exclude groups, no longer clashing with the Suite scope.
  • The Type filter is a tag list on both PhpStorm and OpenIDE, one --type per tag (Testo ORs them, !name excludes). A single type saved by earlier builds is folded into the list on load.

Review notes

  • The interpreter is resolved through PHP for OpenIDE 0.9.8's profile API: PhpLaunchEnvironment.of(project, profileId) for the environment and the profileId overloads of PhpTestFrameworks.binaryPath/configFile for the Testo binary and config. The overloads without an id answer for the active profile whatever the configuration names, and the ones with it return null for a profile missing from PhpInterpreterRegistry.
  • Not done: interpreter options do not reach the Testo process Infection spawns; the shared options panel stays per implementation (the PhpStorm editor wraps the PHP plugin's form and works on TestoRunnerSettings).

Checklist

Replaces #130, which targeted main.

@github-actions

Copy link
Copy Markdown

Qodana for JVM

It seems all right 👌

No new problems were found according to the checks applied

💡 Qodana analysis was run in the pull request mode: only the changed files were checked

View the detailed Qodana report

To be able to view the detailed Qodana report, you can either:

To get *.log files or any other Qodana artifacts, run the action with upload-result option set to true,
so that the action will upload the files as the job artifacts:

      - name: 'Qodana Scan'
        uses: JetBrains/qodana-action@v2026.2.2
        with:
          upload-result: true
Contact Qodana team

Contact us at qodana-support@jetbrains.com

@roxblnfk
roxblnfk force-pushed the feat/openide-run-form branch from baa072b to 68374b0 Compare October 16, 2026 18:18
…s own interpreter

docs(changelog): note the Coverage view's mutation launch leaving the EDT

PHP for OpenIDE publishes no way from a profile id to its launch environment (`PhpLaunchEnvironments.of` is internal), so a saved interpreter is matched by position in `PhpLaunchEnvironment.allOf`, checked against the display name; a list that does not line up is refused instead of running on the wrong interpreter.

Closes #129

Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
Testo reads --type repeatedly (included types ORed, a ! prefix excludes, exclusion wins), so the Type filter becomes a tag list in both forms, next to Suites and Groups. The single type saved by earlier builds (testo_type on PhpStorm, testoType on OpenIDE) is folded into the list on load. A selection of several types is never the configuration of an attribute or node context, which always carries one.

Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
…s profile API

PHP for OpenIDE 0.9.8 publishes PhpLaunchEnvironment.of(project, profileId) and profileId overloads of PhpTestFrameworks.binaryPath/configFile. The configuration's interpreter now goes through them: its environment is no longer matched by position in allOf, and the Testo binary and configuration file come from that profile's Test Frameworks settings instead of the active profile's.

Assisted-By: Claude Opus 5.5 <noreply@anthropic.com>
@roxblnfk
roxblnfk force-pushed the feat/openide-run-form branch from 68374b0 to 7f36f39 Compare October 16, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant