Skip to content

Allow enabling process isolation on suite/test base class #5838

@mondrake

Description

@mondrake

Process isolation can only be set via attributes in test classes (either overall on a class or on a single method) or on execution level (with attribute in XML or as a command line argument).

It would be good to enable process isolation on a middle ground, for instance for an entire suite or at a test base class level.

Drupal completed support of PHPUnit 10 in https://www.drupal.org/project/drupal/issues/3417066, and we needed there to find a workaround for this - there are 5 test suites in configuration, 3 of which have tests that need to run in process isolation, the others don't.

Since for each test suite there's a base test class extending from TestCase, we resolved by extending the constructor and setting process isolation there:

  public function __construct(string $name) {
    parent::__construct($name);
    $this->setRunTestInSeparateProcess(TRUE);
  }

https://git.drupalcode.org/project/drupal/-/blame/11.x/core/tests/Drupal/KernelTests/KernelTestBase.php?ref_type=heads#L107-L113

Prior to PHPUnit 10, this was possible by overriding TestCase properties, but this is no longer possible. The workaround works, but extends a constructor marked @internal and we are exposed to potential changes.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions