Skip to content
Snippets Groups Projects

Issue #3445847: PHPUnit 10 behaves differently when invoked outside web root

Closed Michael Strelan requested to merge issue/drupal-3445847:3445847-phpunit-10-chdir into 11.x

Removing the chdir in bootstrap.php resolves the immediate issue but guessing it is going to fail elsewhere.

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • added 1 commit

    • c83797cc - Move chdir to test base classes

    Compare with previous version

  • added 2 commits

    Compare with previous version

  • added 1 commit

    Compare with previous version

  • Hi @mstrelan,

    I tried testing this to give a help with the ticket, but did not get the expected results, sorry. Maybe the patch needs to be re-rolled? Or maybe I'm missing something in my step procedures :disappointed:

    I pasted here results here instead of ticket because D.O. ticket formatting hell.

    :x:

    Initial run, bad configuration

    Reproduction

    I repurposed an existing project with core-recommended to the test scenario by switching the core-recommended version to 11.0.x

        "require": {
            "composer/installers": "^2.2",
            "cweagans/composer-patches": "dev-main",
            "drupal/core-composer-scaffold": "11.0.x-dev@dev",
            "drupal/core-project-message": "11.0.x-dev@dev",
            "drupal/core-recommended": "11.0.x-dev@dev"
        },

    Nuke and rebuild vendor, installs desired test case version:

    cd docroot
    rm -rf vendor composer.lock
    composer intall

    Add MR patch to composer

            "patches": {
                "drupal/core": {
                    "Issue #3445847: PHPUnit 10 behaves differently when invoked outside web root": "https://git.drupalcode.org/project/drupal/-/merge_requests/7952.patch"
                }
            },

    Update and execute patches. Confirmed patch hash matches that of patches.lock.json and patch points to correct location (MR 7952):

    ❯ composer prl
      - Resolving patches from root package.
      - Resolving patches from dependencies.
      - patches.lock.json has been recreated successfully.
    ❯ composer prp
      - Removing drupal/core (11.0.x-dev 281a38a)
    Deleting /home/wsl/3445847/docroot/web/core - deleted
    Installing dependencies from lock file (including require-dev)
    Verifying lock file contents can be installed on current platform.
    Package operations: 1 install, 0 updates, 0 removals
      - Installing drupal/core (11.0.x-dev 281a38a): Extracting archive
      - Patching drupal/core
          - Found cached patch at /home/wsl/.composer/cache/patches/fe658efcd605e40d8919bc4c0c2255f7d7b34916b74ab9945bccc0c1554bb595.patch
    Generating autoload files
    43 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
      * Homepage: https://www.drupal.org/project/drupal
      * Support:
        * docs: https://www.drupal.org/docs/user_guide/en/index.html
        * chat: https://www.drupal.org/node/314178
    phpstan/extension-installer: Extensions installed

    Install drupal/core-dev, comes with PHPUnit 10.x

    # Add core dev for phpunit
    composer require drupal/core-dev:11.x-dev  

    Finally, execute per instructions:

    ./vendor/bin/phpunit -c web/core/phpunit.xml.dist 
    
    PHP Fatal error:  Cannot declare class Drupal\Tests\field\Unit\FieldStorageConfigAccessControlHandlerTest, because the name is already in use in /home/wsl/3445847/docroot/web/core/modules/field/tests/src/Unit/FieldStorageConfigAccessControlHandlerTest.php on line 26
    PHP Stack trace:
    PHP   1. {main}() /home/wsl/3445847/docroot/vendor/bin/phpunit:0
    PHP   2. include() /home/wsl/3445847/docroot/vendor/bin/phpunit:122
    PHP   3. PHPUnit\TextUI\Application->run($argv = [0 => './vendor/bin/phpunit', 1 => '-c', 2 => 'web/core/phpunit.xml.dist']) /home/wsl/3445847/docroot/vendor/phpunit/phpunit/phpunit:104
    PHP   4. PHPUnit\TextUI\Application->buildTestSuite($configuration = class PHPUnit\TextUI\Configuration\Configuration { private readonly array $cliArguments = []; private readonly ?string
    Edited by Richard Allen
  • Test run No.2

    Checked out project via create-project, error listed above goes away. Will post result once this second run is complete.

  • Tried a second run, made sure the simpletest database was available, etc. Tests got stuck at 62%. This is the whole suite, though.

    image

    I won't do any more testing because I have to make sure I have an environment that runs the whole suite without errors (a baseline). Sorry I wasn't more helpful, I tried. Maybe next time :smile:

    If the ticket is still open by the time I have a baseline environment, then I'll sure do more runs.

    Cheers.

  • Simple unit and kernel test in contrib module

    No integration, front-end, or build tests executed on this run.

    PHP: 8.3.0
    PHPUnit: 10.5.20

    Note: This core install did get created via drupal/core-recommended:11.0.x-dev as mentioned in the ticket.

    Confirm target hash/version of core in lockfile.

    composer show --format=json drupal/core-recommended \
    | jq '@sh "name: \(.name), version: \(.versions[0]),  hash: \(.dist.reference)"'
    
    "name: 'drupal/core-recommended', version: '11.0.x-dev',  hash: 'd4b3877b8685ffb3146b0926713630ded30220c5'"

    Core version is valid and not altered by Composer operations. Proceed to test simple contrib module with a single kernel and unit test.

    Test run, from docroot/web directory

    composer require drupal/musica
    ...
    ❯ pwd
    /home/wsl/3445847/docroot
    
    # Copy custom phpunit configuration file to core directory
    cp ../decoupled-v10/wsl.xml web/core/
    
    # Chdir to directory mentioned in D.O. issue. 
    # I have not stress tested running from other directories.
    cd web
    
    # Setup environment used by Kernel tests
    export SIMPLETEST_BASE_URL="https://d10ee.lndo.site"
    export SIMPLETEST_DB="mysql://foo:bar@database:3306/drupal10_simpletest"
    
    ../vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap core/tests/bootstrap.php \
    --configuration core/wsl.xml \
    --display-errors \
    --do-not-cache-result \
    --group phpunit10 \
    modules/contrib/musica/tests
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/docroot/web/core/wsl.xml
    
    ..                                                                  2 / 2 (100%)
    
    Time: 00:01.787, Memory: 12.00 MB
    
    Baseline (Drupal\Tests\musica\Kernel\Baseline)
     ✔ Php unit kernel coverage
    
    Health Check (Drupal\Tests\musica\Unit\HealthCheck)
     ✔ Test php unit coverage
    
    OK (2 tests, 3 assertions)
    Screenshot image

    Next step is going to download a few large, popular contribs (arbitrary, biased metric) and give them a shake. If you have any suggestions/candidates send them my way.

    I haven't tested integration, front-end, and build tests, so I'm looking forward to doing at least the first two in the next run.

    Edited by Richard Allen
  • Simple unit/kernel test: reset and confirm results without patch, then re-apply patch

    TL;DR

    • Patch is working as advertised in contrib :heavy_check_mark:
    • Without patch, can confirm test fail to run in contrib, as noted below (see :heavy_check_mark:️ PASS: Execute test from outside docroot/web, WITHOUT patch)
    • Tested only for kernel and unit in this run.

    NOTE 5/16 10am: I USED THE WRONG PATCH IN THIS RUN. I have to re-try this :angry:

    NOTE 5/16 10:40am Fixed. Patch is working :tada:

    Reset

    Nuke the entire site from orbit, it's the only way to be sure.

    rm -rf docroot

    :tools:️ Re-install via create-project, execute tests from web/docroot

    composer create-project drupal/recommended-project:11.0.x-dev@dev docroot
    
    cd docroot
    
    composer show --format=json drupal/core-recommended \
    | jq '@sh "name: \(.name), version: \(.versions[0]),  hash: \(.dist.reference)"'
    
    "name: 'drupal/core-recommended', version: '11.0.x-dev',  hash: 'cb104aba76523190cb19886c7dd971b0994a7b0a'"
    
    cp ../decoupled-v10/wsl.xml web/core
    
    composer require drupal/musica
    
    cd web
    
    # Baseline, works when run within docroot/web
    ../vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap core/tests/bootstrap.php \
    --configuration core/wsl.xml \
    --display-errors \
    --do-not-cache-result \
    --group phpunit10 \
    modules/contrib/musica/tests
    
    ...
    
    Baseline (Drupal\Tests\Musica\Kernel\Baseline)
     ✔ Test php unit functional coverage
    
    Health Check (Drupal\Tests\musica\Unit\HealthCheck)
     ✔ Test php unit coverage

    :heavy_check_mark:️ PASS: Execute test from outside docroot/web, WITHOUT patch

    Test results

    • Expected result: test not found :heavy_check_mark:
    • Actual result: test not found :heavy_check_mark:
    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/wsl.xml \
    --display-errors \
    --do-not-cache-result \
    --group phpunit10 \
    web/modules/contrib/musica/tests
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Test file "web/modules/contrib/musica/tests" not found
    

    :x: FAIL: I used the wrong patch

    Test results

    Re-apply patch and re-test from outside web/docroot

    • Expected result: test found :heavy_check_mark:
    • Actual result: test not found :x:

    Test

    composer require cweagans/composer-patches:dev-main

    Add patch to composer.json and re-patch core:

    # Add to composer.json
            "patches": {
                "drupal/core": {
                    "Allow alternate location for PHPUnit installs": "https://git.drupalcode.org/issue/musica-3416852/-/raw/1.1.x/patches/boostrap.php.patch"
                }
            },
    
    # Patch core
    composer prl && composer prp
    ...
      - Installing drupal/core (11.0.x-dev ebb6417): Extracting archive
      - Patching drupal/core
          - Found cached patch at /home/wsl/.composer/cache/patches/368e08720ce315ebd55348b25ce2c8bc3752d32dd8aa35525b91a157b3cea9a8.patch
    ...
    

    Re-execute tests from outside docroot/web

    cp ../decoupled-v10/wsl.xml web/core
    
    ❯ pwd
    /home/wsl/3445847/docroot
    
    ls web/modules/contrib/musica/tests
    src
    
    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/wsl.xml \
    --display-errors \
    --do-not-cache-result \
    --group phpunit10 \
    web/modules/contrib/musica/tests
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Test file "web/modules/contrib/musica/tests" not found

    🥳:heavy_check_mark:️ PASS: Execute test from outside docroot/web, WITH CORRECT patch

    Nuke site and start from scratch like the first step above, rm -rf docroot, followed by composer create-project.

    rm -rf docroot
    composer create-project drupal/recommended-project:11.0.x-dev@dev docroot
    cd docroot
    composer require cweagans/composer-patches:dev-main
    ❯ composer show --format=json drupal/core-recommended \
    | jq '@sh "name: \(.name), version: \(.versions[0]),  hash: \(.dist.reference)"'
    "name: 'drupal/core-recommended', version: '11.0.x-dev',  hash: 'cb104aba76523190cb19886c7dd971b0994a7b0a'"

    Include patch dependency and setup patch

    composer require cweagans/composer-patches:dev-main
    
    # FIX PATCH (composer.json)
    # USE CORRECT PATCH!
    
          "patches": {
              "drupal/core": {
                  "PHPUnit 10 behaves differently when invoked outside web root": "https://git.drupalcode.org/project/drupal/-/merge_requests/7952.patch"
              }
          },

    Re-patch core

    ❯ composer prl && composer prp
      - Resolving patches from root package.
      - Resolving patches from dependencies.
      - patches.lock.json has been recreated successfully.
      - Removing drupal/core (11.0.x-dev ebb6417)
    Deleting /home/wsl/3445847/docroot/web/core - deleted
    Installing dependencies from lock file (including require-dev)
    Verifying lock file contents can be installed on current platform.
    Package operations: 1 install, 0 updates, 0 removals
      - Installing drupal/core (11.0.x-dev ebb6417): Extracting archive

    :man_dancing: Patch is good !!

    Tested small contrib module, only one kernel test, and one unit test

    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/phpunit.xml.dist \
    --display-errors \
    --do-not-cache-result \
    --group phpunit10 \
    web/modules/contrib/musica/tests
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/docroot/web/core/phpunit.xml.dist
    
    ..                                                                  2 / 2 (100%)
    
    Time: 00:02.648, Memory: 12.00 MB
    
    Baseline (Drupal\Tests\Musica\Kernel\Baseline)
     ✔ Test php unit functional coverage
    
    Health Check (Drupal\Tests\musica\Unit\HealthCheck)
     ✔ Test php unit coverage
    
    OK (2 tests, 3 assertions)
    
    # WHERE AM I?
    # Outside of web root!
    
    ❯ pwd
    /home/wsl/3445847/docroot
    
    Screenshot

    image

    Using alternate config (listed below) also worked

    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration ../decoupled-v10/wsl.xml \
    --display-errors \
    --do-not-cache-result \
    --group phpunit10 \
    web/modules/contrib/musica/tests
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/decoupled-v10/wsl.xml
    
    ..                                                                  2 / 2 (100%)
    
    Time: 00:01.744, Memory: 12.00 MB
    
    Baseline (Drupal\Tests\Musica\Kernel\Baseline)
     ✔ Test php unit functional coverage
    
    Health Check (Drupal\Tests\musica\Unit\HealthCheck)
     ✔ Test php unit coverage
    
    OK (2 tests, 3 assertions)
    Screenshot

    image

    Reference: Custom PHPUnit configuration file

    PHPUnit configuration file wsl.xml (sometimes called phpunit.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd"
           bootstrap="vendor/autoload.php"
           cacheDirectory=".phpunit.cache"
           executionOrder="depends,defects"
           requireCoverageMetadata="true"
           beStrictAboutCoverageMetadata="true"
           beStrictAboutOutputDuringTests="true"
           failOnRisky="true"
           failOnWarning="true">
      <testsuites>
          <testsuite name="default">
              <directory>tests</directory>
          </testsuite>
      </testsuites>
    
      <source restrictDeprecations="true" restrictNotices="true" restrictWarnings="true">
          <include>
              <directory>web/modules/contrib/musica/src</directory>
          </include>
      </source>
    </phpunit>
    
    Edited by Richard Allen
  • # Additional attempts for contrib kernel and unit

    Deleted comment. Additional basic tests for kernel and unit were not necessary, because I had the wrong patch, duh! Patch is working as intended for unit and kernel, tested single contrib module. See previous comment above.

    Edited by Richard Allen
  • Final run: large contrib

    In this final test run, I am going to be testing at least 5 popular Drupal 11 modules with a stable release and advisory coverage. Link to search here.

    Test run summary

    I was not able to find a contrib module as filtered by the criteria listed below, that was installable via Composer, and contained Unit or Kernel tests.

    I left a message in both the #test and #contribute channels asking maintainers for any known Drupal 11 modules with kernel or unit tests.

    Search criteria
    • Actively maintained
    • Under active development
    • Drupal 11 compatible only
    • Stable release
    • Security coverage
    • Sorted by popularity (most installed)

    image

    :x:

    Search API: fatal error

    I start by limiting the test run to only unit tests in web/modules/contrib/search_api/tests/src/Unit.

    The test run was not able to proceed due to a fatal error.

    Searching the issue queue for issues related to the exception did not find any relevant results.

    Without a working baseline, I cannot proceed.

    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/phpunit.xml.dist \
    --display-errors \
    --do-not-cache-result \
    --group search_api \
    web/modules/contrib/search_api/tests/src/Unit
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/docroot/web/core/phpunit.xml.dist
    
    PHP Fatal error:  Declaration of Drupal\search_api\Backend\BackendPluginBase::__sleep() must be compatible with Drupal\Core\Plugin\PluginBase::__sleep(): array in /home/wsl/3445847/docroot/web/modules/contrib/search_api/src/Backend/BackendPluginBase.php on line 337
    PHP Stack trace:
    PHP   1. {main}() /home/wsl/3445847/docroot/vendor/bin/phpunit:0
    PHP   2. include() /home/wsl/3445847/docroot/vendor/bin/phpunit:122
    PHP   3. PHPUnit\TextUI\Application->run($argv = [0 => 'vendor/bin/phpunit', 1 => '--testdox', 2 => '--no-coverage', 3 => '--bootstrap', 4 => 'web/core/tests/bootstrap.php', 5 => '--configuration', 6 => 'web/core/phpunit.xml.dist', 7 => '--display-errors', 8 => '--do-not-cache-result', 9 => '--group', 10 => 'search_api', 11 => 'web/modules/contrib/search_api/tests/src/Unit']) /home/wsl/3445847/docroot/vendor/phpunit/phpunit/phpunit:104
    PHP   4. PHPUnit\TextUI\TestRunner->run($configuration = class PHPUnit\TextUI\Configuration\Configuration { private readonly array $cliArguments = [0 => 'web/modules/contrib/search_api/tests/src/Unit']; private readonly ?string $configurationFile = '/home/wsl/3445847/docroot/web/core/phpunit.xml.dist'; private readonly ?string $bootstrap = 'web/core/tests/bootstrap.php'; private readonly bool $cacheResult = FALSE; private readonly ?string $cacheDirectory = '/home/wsl/3445847/docroot/web/core/.phpunit.cache'; private readonly ?string $coverageCacheDirectory = '/home/wsl/3445847/docroot/web/core/.phpunit.cache/code-coverage'; private readonly PHPUnit\TextUI\Configuration\Source $source = class PHPUnit\TextUI\Configuration\Source { private readonly ?string $baseline = NULL; private readonly bool $ignoreBaseline = FALSE; private readonly PHPUnit\TextUI\Configuration\FilterDirectoryCollection $includeDirectories = class PHPUnit\TextUI\Configuration\FilterDirectoryCollection { ... }; private readonly PHPUnit\TextUI\Configuration\FileCollection $includeFiles = class PHPUnit\TextUI\Configuration\FileCollection { ... }; private readonly PHPUnit\TextUI\Configuration\FilterDirectoryCollection $excludeDirectories = class PHPUnit\TextUI\Configuration\FilterDirectoryCollection { ... }; private readonly PHPUnit\TextUI\Configuration\FileCollection $excludeFiles = class PHPUnit\TextUI\Configuration\FileCollection { ... }; private readonly bool $restrictDeprecations = FALSE; private readonly bool $restrictNotices = FALSE; private readonly bool $restrictWarnings = FALSE; private readonly bool $ignoreSuppressionOfDeprecations = TRUE; private readonly bool $ignoreSuppressionOfPhpDeprecations = FALSE; private readonly bool $ignoreSuppressionOfErrors = FALSE; private readonly bool $ignoreSuppressionOfNotices = FALSE; private readonly bool $ignoreSuppressionOfPhpNotices = FALSE; private readonly bool $ignoreSuppressionOfWarnings = FALSE; private readonly bool $ignoreSuppressionOfPhpWarnings = FALSE }; private readonly bool $pathCoverage = FALSE; private readonly ?string $coverageClover = NULL; private readonly ?string $coverageCobertura = NULL; private readonly ?string $coverageCrap4j = NULL; private readonly int $coverageCrap4jThreshold = 30; private readonly ?string $coverageHtml = NULL; private readonly int $coverageHtmlLowUpperBound = 50; private readonly int $coverageHtmlHighLowerBound = 90; private readonly string $coverageHtmlColorSuccessLow = '#dff0d8'; private readonly string $coverageHtmlColorSuccessMedium = '#c3e3b5'; private readonly string $coverageHtmlColorSuccessHigh = '#99cb84'; private readonly string $coverageHtmlColorWarning = '#fcf8e3'; private readonly string $coverageHtmlColorDanger = '#f2dede'; private readonly ?string $coverageHtmlCustomCssFile = NULL; private readonly ?string $coveragePhp = NULL; private readonly ?string $coverageText = NULL; private readonly bool $coverageTextShowUncoveredFiles = FALSE; private readonly bool $coverageTextShowOnlySummary = FALSE; private readonly ?string $coverageXml = NULL; private readonly string $testResultCacheFile = '/home/wsl/3445847/docroot/web/core/.phpunit.cache/test-results'; private readonly bool $ignoreDeprecatedCodeUnitsFromCodeCoverage = FALSE; private readonly bool $disableCodeCoverageIgnore = FALSE; private readonly bool $failOnDeprecation = FALSE; private readonly bool $failOnEmptyTestSuite = FALSE; private readonly bool $failOnIncomplete = FALSE; private readonly bool $failOnNotice = FALSE; private readonly bool $failOnRisky = FALSE; private readonly bool $failOnSkipped = FALSE; private readonly bool $failOnWarning = TRUE; private readonly bool $stopOnDefect = FALSE; private readonly bool $stopOnDeprecation = FALSE; private readonly bool $stopOnError = FALSE; private readonly bool $stopOnFailure = FALSE; private readonly bool $stopOnIncomplete = FALSE; private readonly bool $stopOnNotice = FALSE; private readonly bool $stopOnRisky = FALSE; private readonly bool $stopOnSkipped = FALSE; private readonly bool $stopOnWarning = FALSE; private readonly bool $outputToStandardErrorStream = FALSE; private readonly int $columns = 80; private readonly bool $noExtensions = FALSE; private readonly ?string $pharExtensionDirectory = NULL; private readonly array $extensionBootstrappers = []; private readonly bool $backupGlobals = FALSE; private readonly bool $backupStaticProperties = FALSE; private readonly bool $beStrictAboutChangesToGlobalState = TRUE; private readonly bool $colors = TRUE; private readonly bool $processIsolation = FALSE; private readonly bool $enforceTimeLimit = FALSE; private readonly int $defaultTimeLimit = 1; private readonly int $timeoutForSmallTests = 1; private readonly int $timeoutForMediumTests = 10; private readonly int $timeoutForLargeTests = 60; private readonly bool $reportUselessTests = TRUE; private readonly bool $strictCoverage = FALSE; private readonly bool $disallowTestOutput = TRUE; private readonly bool $displayDetailsOnIncompleteTests = FALSE; private readonly bool $displayDetailsOnSkippedTests = FALSE; private readonly bool $displayDetailsOnTestsThatTriggerDeprecations = TRUE; private readonly bool $displayDetailsOnTestsThatTriggerErrors = TRUE; private readonly bool $displayDetailsOnTestsThatTriggerNotices = FALSE; private readonly bool $displayDetailsOnTestsThatTriggerWarnings = TRUE; private readonly bool $reverseDefectList = FALSE; private readonly bool $requireCoverageMetadata = FALSE; private readonly bool $registerMockObjectsFromTestArgumentsRecursively = FALSE; private readonly bool $noProgress = FALSE; private readonly bool $noResults = FALSE; private readonly bool $noOutput = FALSE; private readonly int $executionOrder = 0; private readonly int $executionOrderDefects = 0; private readonly bool $resolveDependencies = TRUE; private readonly ?string $logfileTeamcity = NULL; private readonly ?string $logfileJunit = NULL; private readonly ?string $logfileTestdoxHtml = NULL; private readonly ?string $logfileTestdoxText = NULL; private readonly ?string $logEventsText = NULL; private readonly ?string $logEventsVerboseText = NULL; private readonly ?array $testsCovering = NULL; private readonly ?array $testsUsing = NULL; private readonly bool $teamCityOutput = FALSE; private readonly bool $testDoxOutput = TRUE; private readonly ?string $filter = NULL; private readonly ?array $groups = [0 => 'search_api']; private readonly ?array $excludeGroups = []; private readonly int $randomOrderSeed = 1715919143; private readonly bool $includeUncoveredFiles = TRUE; private readonly PHPUnit\TextUI\Configuration\TestSuiteCollection $testSuite = class PHPUnit\TextUI\Configuration\TestSuiteCollection { private readonly array $testSuites = [...] }; private readonly string $includeTestSuite = ''; private readonly string $excludeTestSuite = ''; private readonly ?string $defaultTestSuite = NULL; private readonly array $testSuffixes = [0 => 'Test.php', 1 => '.phpt']; private readonly PHPUnit\TextUI\Configuration\Php $php = class PHPUnit\TextUI\Configuration\Php { private readonly PHPUnit\TextUI\Configuration\DirectoryCollection $includePaths = class PHPUnit\TextUI\Configuration\DirectoryCollection { ... }; private readonly PHPUnit\TextUI\Configuration\IniSettingCollection $iniSettings = class PHPUnit\TextUI\Configuration\IniSettingCollection { ... }; private readonly PHPUnit\TextUI\Configuration\ConstantCollection $constants = class PHPUnit\TextUI\Configuration\ConstantCollection { ... }; private readonly PHPUnit\TextUI\Configuration\VariableCollection $globalVariables = class PHPUnit\TextUI\Configuration\VariableCollection { ... }; private readonly PHPUnit\TextUI\Configuration\VariableCollection $envVariables = class PHPUnit\TextUI\Configuration\VariableCollection { ... }; private readonly PHPUnit\TextUI\Configuration\VariableCollection $postVariables = class PHPUnit\TextUI\Configuration\VariableCollection { ... }; private readonly PHPUnit\TextUI\Configuration\VariableCollection $getVariables = class PHPUnit\TextUI\Configuration\VariableCollection { ... }; private readonly PHPUnit\TextUI\Configuration\VariableCollection $cookieVariables = class PHPUnit\TextUI\Configuration\VariableCollection { ... }; private readonly PHPUnit\TextUI\Configuration\VariableCollection $serverVariables = class PHPUnit\TextUI\Configuration\VariableCollection { ... }; private readonly PHPUnit\TextUI\Configuration\VariableCollection $filesVariables = class PHPUnit\TextUI\Configuration\VariableCollection { ... }; private readonly PHPUnit\TextUI\Configuration\VariableCollection $requestVariables = class PHPUnit\TextUI\Configuration\VariableCollection { ... } }; private readonly bool $controlGarbageCollector = FALSE; private readonly int $numberOfTestsBeforeGarbageCollection = 100; private readonly ?string $generateBaseline = NULL; private readonly bool $debug = FALSE }, $resultCache = class PHPUnit\Runner\ResultCache\NullResultCache {  }, $suite = class PHPUnit\Framework\TestSuite { private string $name = 'CLI Arguments'; private array $groups = ['search_api' => [...], '__phpunit_covers_::getqueryfulltextfields' => [...], '__phpunit_covers_::extractfieldvalues' => [...], '__phpunit_covers_::setvalues' => [...], '__phpunit_covers_::addvalue' => [...], '__phpunit_covers_drupal\\search_api\\plugin\\search_api\\processor\\property\\aggregatedfieldproperty::islist' => [...], '__phpunit_covers_::supportsindex' => [...], '__phpunit_covers_::preprocessindexitems' => [...], '__phpunit_covers_::preprocesssearchquery' => [...], '__phpunit_covers_::process' => [...], '__phpunit_covers_::formatboostfactor' => [...], '__phpunit_covers_::getboostfactors' => [...], '__phpunit_covers_::query' => [...], '__phpunit_covers_::title' => [...]]; private ?array $requiredTests = NULL; private array $tests = [0 => class PHPUnit\Framework\TestSuite { ... }, 1 => class PHPUnit\Framework\TestSuite { ... }, 2 => class PHPUnit\Framework\TestSuite { ... }, 3 => class PHPUnit\Framework\TestSuite { ... }, 4 => class PHPUnit\Framework\TestSuite { ... }, 5 => class PHPUnit\Framework\TestSuite { ... }, 6 => class PHPUnit\Framework\TestSuite { ... }, 7 => class PHPUnit\Framework\TestSuite { ... }, 8 => class PHPUnit\Framework\TestSuite { ... }, 9 => class PHPUnit\Framework\TestSuite { ... }, 10 => class PHPUnit\Framework\TestSuite { ... }, 11 => class PHPUnit\Framework\TestSuite { ... }, 12 => class PHPUnit\Framework\TestSuite { ... }, 13 => class PHPUnit\Framework\TestSuite { ... }, 14 => class PHPUnit\Framework\TestSuite { ... }, 15 => class PHPUnit\Framework\TestSuite { ... }, 16 => class PHPUnit\Framework\TestSuite { ... }, 17 => class PHPUnit\Framework\TestSuite { ... }, 18 => class PHPUnit\Framework\TestSuite { ... }, 19 => class PHPUnit\Framework\TestSuite { ... }, 20 => class PHPUnit\Framework\TestSuite { ... }]; private ?array $providedTests = NULL; private ?PHPUnit\Runner\Filter\Factory $iteratorFilter = class PHPUnit\Runner\Filter\Factory { private array $filters = [...] } }) /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/TextUI/Application.php:198
    PHP   5. PHPUnit\Framework\TestSuite->run() /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:62
    PHP   6. PHPUnit\Framework\TestSuite->run() /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/Framework/TestSuite.php:349
    PHP   7. PHPUnit\Framework\TestSuite->run() /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/Framework/TestSuite.php:349
    PHP   8. PHPUnit\Framework\TestCase->run() /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/Framework/TestSuite.php:349
    PHP   9. PHPUnit\Framework\TestRunner->run($test = class Drupal\Tests\search_api\Unit\BackendPluginBaseTest { private ?bool ${PHPUnit\Framework\TestCase}backupGlobals = FALSE; private array ${PHPUnit\Framework\TestCase}backupGlobalsExcludeList = []; private ?bool ${PHPUnit\Framework\TestCase}backupStaticProperties = FALSE; private array ${PHPUnit\Framework\TestCase}backupStaticPropertiesExcludeList = []; private ?SebastianBergmann\GlobalState\Snapshot ${PHPUnit\Framework\TestCase}snapshot = NULL; private ?bool ${PHPUnit\Framework\TestCase}runClassInSeparateProcess = NULL; private ?bool ${PHPUnit\Framework\TestCase}runTestInSeparateProcess = NULL; private bool ${PHPUnit\Framework\TestCase}preserveGlobalState = FALSE; private bool ${PHPUnit\Framework\TestCase}inIsolation = FALSE; private ?string ${PHPUnit\Framework\TestCase}expectedException = NULL; private ?string ${PHPUnit\Framework\TestCase}expectedExceptionMessage = NULL; private ?string ${PHPUnit\Framework\TestCase}expectedExceptionMessageRegExp = NULL; private string|int|null ${PHPUnit\Framework\TestCase}expectedExceptionCode = NULL; private array ${PHPUnit\Framework\TestCase}providedTests = [0 => class PHPUnit\Framework\ExecutionOrderDependency { ... }]; private array ${PHPUnit\Framework\TestCase}data = [0 => NULL, 1 => [...]]; private string|int ${PHPUnit\Framework\TestCase}dataName = 'null fields'; private string ${PHPUnit\Framework\TestCase}name = 'testGetQueryFulltextFields'; private array ${PHPUnit\Framework\TestCase}groups = [0 => 'search_api', 1 => '__phpunit_covers_::getqueryfulltextfields']; private array ${PHPUnit\Framework\TestCase}dependencies = []; private array ${PHPUnit\Framework\TestCase}dependencyInput = []; private array ${PHPUnit\Framework\TestCase}iniSettings = []; private array ${PHPUnit\Framework\TestCase}locale = []; private array ${PHPUnit\Framework\TestCase}mockObjects = [0 => class MockObject_IndexInterface_a4414196 { ... }, 1 => class MockObject_QueryInterface_54d61c1d { ... }]; private bool ${PHPUnit\Framework\TestCase}registerMockObjectsFromTestArgumentsRecursively = FALSE; private PHPUnit\Framework\TestStatus\TestStatus ${PHPUnit\Framework\TestCase}status = class PHPUnit\Framework\TestStatus\Unknown { private readonly string ${PHPUnit\Framework\TestStatus\TestStatus}message = '' }; private int ${PHPUnit\Framework\TestCase}numberOfAssertionsPerformed = 0; private mixed ${PHPUnit\Framework\TestCase}testResult = NULL; private string ${PHPUnit\Framework\TestCase}output = ''; private ?string ${PHPUnit\Framework\TestCase}outputExpectedRegex = NULL; private ?string ${PHPUnit\Framework\TestCase}outputExpectedString = NULL; private bool ${PHPUnit\Framework\TestCase}outputBufferingActive = TRUE; private int ${PHPUnit\Framework\TestCase}outputBufferingLevel = 1; private bool ${PHPUnit\Framework\TestCase}outputRetrievedForAssertion = FALSE; private bool ${PHPUnit\Framework\TestCase}doesNotPerformAssertions = FALSE; private array ${PHPUnit\Framework\TestCase}customComparators = []; private ?PHPUnit\Event\Code\TestMethod ${PHPUnit\Framework\TestCase}testValueObjectForEvents = class PHPUnit\Event\Code\TestMethod { private readonly string ${PHPUnit\Event\Code\Test}file = '/home/wsl/3445847/docroot/web/modules/contrib/search_api/tests/src/Unit/BackendPluginBaseTest.php'; private readonly string $className = 'Drupal\\Tests\\search_api\\Unit\\BackendPluginBaseTest'; private readonly string $methodName = 'testGetQueryFulltextFields'; private readonly int $line = 31; private readonly PHPUnit\Event\Code\TestDox $testDox = class PHPUnit\Event\Code\TestDox { ... }; private readonly PHPUnit\Metadata\MetadataCollection $metadata = class PHPUnit\Metadata\MetadataCollection { ... }; private readonly PHPUnit\Event\TestData\TestDataCollection $testData = class PHPUnit\Event\TestData\TestDataCollection { ... } }; private bool ${PHPUnit\Framework\TestCase}wasPrepared = TRUE; private array ${PHPUnit\Framework\TestCase}failureTypes = []; protected $root = '/home/wsl/3445847/docroot/web'; private ${Drupal\Tests\UnitTestCase}prophet = NULL; private ${Drupal\Tests\UnitTestCase}prophecyAssertionsCounted = FALSE }) /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/Framework/TestCase.php:493
    PHP  10. PHPUnit\Framework\TestCase->runBare() /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/Framework/TestRunner.php:105
    PHP  11. PHPUnit\Framework\TestCase->runTest() /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/Framework/TestCase.php:659
    PHP  12. Drupal\Tests\search_api\Unit\BackendPluginBaseTest->testGetQueryFulltextFields($query_fields = NULL, $expected = [0 => 'field1', 1 => 'field2']) /home/wsl/3445847/docroot/vendor/phpunit/phpunit/src/Framework/TestCase.php:1160
    PHP  13. Symfony\Component\ErrorHandler\DebugClassLoader->loadClass($class = 'Drupal\\search_api_test\\Plugin\\search_api\\backend\\TestBackend') /home/wsl/3445847/docroot/web/modules/contrib/search_api/tests/src/Unit/BackendPluginBaseTest.php:39
    PHP  14. include() /home/wsl/3445847/docroot/vendor/symfony/error-handler/DebugClassLoader.php:300
    PHP  15. Symfony\Component\ErrorHandler\DebugClassLoader->loadClass($class = 'Drupal\\search_api\\Backend\\BackendPluginBase') /home/wsl/3445847/docroot/web/modules/contrib/search_api/tests/modules/search_api_test/src/Plugin/search_api/backend/TestBackend.php:23
    PHP  16. include() /home/wsl/3445847/docroot/vendor/symfony/error-handler/DebugClassLoader.php:300
    :x:

    JSON API views: cannot install

    Project: https://www.drupal.org/project/jsonapi_views Recommended install: composer require 'drupal/jsonapi_views:^1.1'

    Result:

    ❯ composer require drupal/jsonapi_views:^1.x-dev
    ./composer.json has been updated
    Running composer update drupal/jsonapi_views
    Loading composer repositories with package information
    Updating dependencies
    Your requirements could not be resolved to an installable set of packages.
    
    Problem 1
      - drupal/jsonapi_resources[1.0.0-beta1, ..., 1.0.0-beta3] require drupal/core ^8.8@alpha -> found drupal/core[8.8.0-alpha1, ..., 8.9.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/jsonapi_resources 1.0.0-beta4 requires drupal/core ^8.8 || ^9.0 -> found drupal/core[8.8.0-alpha1, ..., 8.9.x-dev, 9.0.0-alpha1, ..., 9.5.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/jsonapi_resources 1.0.0-beta5 requires drupal/core ^8.8 || ^9 || ^10 -> found drupal/core[8.8.0-alpha1, ..., 8.9.x-dev, 9.0.0-alpha1, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/jsonapi_resources[1.0.0, ..., 1.x-dev] require drupal/core ^9.1 || ^10 -> found drupal/core[9.1.0-alpha1, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/jsonapi_views 1.x-dev is an alias of drupal/jsonapi_views dev-1.x and thus requires it to be installed too.
      - drupal/jsonapi_views dev-1.x requires drupal/jsonapi_resources ^1.0 -> satisfiable by drupal/jsonapi_resources[1.0.0-beta1, ..., 1.x-dev].
      - Root composer.json requires drupal/jsonapi_views ^1.x-dev -> satisfiable by drupal/jsonapi_views[1.x-dev (alias of dev-1.x)].
    
    Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
    :x:

    Acquia content hub: no valid install target

    Project: https://www.drupal.org/project/acquia_contenthub Recommended install: composer require 'drupal/acquia_contenthub:^3.4'

    Result

    ❯ composer require 'drupal/acquia_contenthub:^3.4'
    ./composer.json has been updated
    Running composer update drupal/acquia_contenthub
    Loading composer repositories with package information
    Updating dependencies
    Your requirements could not be resolved to an installable set of packages.
    
    Problem 1
      - drupal/acquia_contenthub 3.4.x-dev is an alias of drupal/acquia_contenthub dev-3.4.x and thus requires it to be installed too.
      - drupal/acquia_contenthub[dev-3.4.x, 3.4.0, ..., 3.4.1] require drupal/core ^9.4.15 || ^10 -> found drupal/core[9.4.15, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - Root composer.json requires drupal/acquia_contenthub ^3.4 -> satisfiable by drupal/acquia_contenthub[3.4.0, 3.4.1, 3.4.x-dev (alias of dev-3.4.x)].
    
    Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
    :x:

    DXPR Builder: no kernel or unit tests

    I was able to install this module in Drupal 11, finally!

    However, I was not able to find any Kernel or Unit tests to execute, only integration tests for which I have no trusted baseline, procedures or dependencies.

    composer require 'drupal/dxpr_builder:^2.6'
    ./composer.json has been updated
    Running composer update drupal/dxpr_builder
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 1 install, 0 updates, 0 removals
    - Locking drupal/dxpr_builder (2.6.0)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Package operations: 1 install, 0 updates, 0 removals
    - Downloading drupal/dxpr_builder (2.6.0)
    - Installing drupal/dxpr_builder (2.6.0): Extracting archive
    Generating autoload files
    89 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
    phpstan/extension-installer: Extensions installed
    No security vulnerability advisories found.
    
    vendor/bin/phpunit \                                                                                ✔ 
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/phpunit.xml.dist \
    --display-errors \
    --do-not-cache-result \
    web/modules/contrib/dxpr_builder/modules/dxpr_builder_media/tests/src
    README.txt                        css/                              dxpr_builder_media.install        dxpr_builder_media.module         js/
    config/                           dxpr_builder_media.info.yml       dxpr_builder_media.libraries.yml  images/                           tests/
    
    web/modules/contrib/dxpr_builder/modules/dxpr_builder_media/tests/src/FunctionalJavascript/
    
    :heavy_check_mark:

    Migrate Plus

    Installed and tested without a hitch.

    ❯ composer require drupal/migrate_plus
    ./composer.json has been updated
    Running composer update drupal/migrate_plus
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 1 install, 0 updates, 0 removals
    - Locking drupal/migrate_plus (6.0.2)
    ...
    
    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/phpunit.xml.dist \
    --display-errors \
    --do-not-cache-result \
    web/modules/contrib/migrate_plus/tests/src/Unit
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/docroot/web/core/phpunit.xml.dist
    
    D..............................................................  63 / 110 ( 57%)
    .........D.D.D.D.......DD......................                 110 / 110 (100%)
    
    Time: 00:01.444, Memory: 22.00 MB
    
    Array Pop (Drupal\Tests\migrate_plus\Unit\process\ArrayPop)
    ✔ Array pop with indexed·array
    ✔ Array pop with associative·array
    ✔ Array pop with empty·array
    ✔ Array pop from string
    
    ...
    :heavy_check_mark:

    Migrate Tools

    What's up with these migration toolz. They all just work without a care in the world!

    ❯ composer require drupal/migrate_tools
    ./composer.json has been updated
    Running composer update drupal/migrate_tools
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 1 install, 0 updates, 0 removals
    - Locking drupal/migrate_tools (6.0.4)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Package operations: 1 install, 0 updates, 0 removals
    - Downloading drupal/migrate_tools (6.0.4)
    - Installing drupal/migrate_tools (6.0.4): Extracting archive
    1 package suggestions were added by new dependencies, use `composer suggest` to see details.
    Generating autoload files
    89 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
    phpstan/extension-installer: Extensions installed
    No security vulnerability advisories found.
    Using version ^6.0 for drupal/migrate_tools
    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/phpunit.xml.dist \
    --display-errors \
    --do-not-cache-result \
    web/modules/contrib/migrate_tools/tests/src/Unit
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/docroot/web/core/phpunit.xml.dist
    
    D......                                                             7 / 7 (100%)
    
    Time: 00:00.040, Memory: 10.00 MB
    
    Migrate Tools (Drupal\Tests\migrate_tools\Unit\MigrateTools)
    ✔ Build id list with data set 0
    ✔ Build id list with single·id
    ✔ Build id list with multiple·ids
    ✔ Build id list with default·delimiter,·composite·key
    ✔ Build id list with special·delimiter,·single
    ✔ Build id list with special·delimiter,·multiple
    ✔ Build id list with space·delimiter,·multiple
    
    1 test triggered 1 PHPUnit deprecation:
    
    1) Drupal\Tests\migrate_tools\Unit\MigrateToolsTest::testBuildIdList
    Data Provider method Drupal\Tests\migrate_tools\Unit\MigrateToolsTest::dataProviderIdList() is not static
    
    /home/wsl/3445847/docroot/web/modules/contrib/migrate_tools/tests/src/Unit/MigrateToolsTest.php:21
    
    OK, but there were issues!
    Tests: 7, Assertions: 7, Deprecations: 1.
    :heavy_check_mark:

    dynamic_entity_reference

    Was able to install and run Kernel tests.

    Project: https://www.drupal.org/project/dynamic_entity_reference

    ❯ composer require drupal/dynamic_entity_reference
    ./composer.json has been updated
    Running composer update drupal/dynamic_entity_reference
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 1 install, 0 updates, 0 removals
    - Locking drupal/dynamic_entity_reference (3.2.0)
    ...
    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/phpunit.xml.dist \
    --display-errors \
    --do-not-cache-result \
    web/modules/contrib/dynamic_entity_reference/tests/src/Kernel
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/docroot/web/core/phpunit.xml.dist
    
    D..D..D......D......D.....D.........                              36 / 36 (100%)
    
    Time: 03:56.523, Memory: 16.00 MB
    
    Dynamic Entity Reference Base Field (Drupal\Tests\dynamic_entity_reference\Kernel\DynamicEntityReferenceBaseField)
    ⚠ Entity reference field validation
    ✔ Referenced entities multiple load
    ✔ Multiple entity reference
    :heavy_check_mark:

    svg_image_field

    Installs and executes tests.

    composer require drupal/svg_image_field
    ...
    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/phpunit.xml.dist \
    --display-errors \
    --do-not-cache-result \
    web/modules/contrib/svg_image_field/tests/src/Kernel
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/docroot/web/core/phpunit.xml.dist
    
    .                                                                   1 / 1 (100%)
    
    Time: 00:04.441, Memory: 10.00 MB
    
    File Validation (Drupal\Tests\svg_image_field\Kernel\FileValidation)
    ⚠ File validation
    
    OK (1 test, 11 assertions)

    Other failed install attempts, not compatible with D11 via Composer:

    • drupal/devel
    • drupal/webform
    • drupal/token
    Edited by Richard Allen
  • Community run

    Since that last run was a bummer and all 6 test targets had either compatibility issues, exceptions, or no kernel/unit test targets, I'm doing another run w/ community suggestions.

    :heavy_check_mark:

    Advanced email validation

    ❯ composer require drupal/advanced_email_validation
    
    ❯ vendor/bin/phpunit \
    --testdox \
    --no-coverage \
    --bootstrap web/core/tests/bootstrap.php \
    --configuration web/core/phpunit.xml.dist \
    --display-errors \
    --do-not-cache-result \
    web/modules/contrib/advanced_email_validation/tests/src/Kernel
    PHPUnit 10.5.20 by Sebastian Bergmann and contributors.
    
    Runtime:       PHP 8.3.0
    Configuration: /home/wsl/3445847/docroot/web/core/phpunit.xml.dist
    
    ......E....                                                       11 / 11 (100%)
    
    Time: 00:43.953, Memory: 10.00 MB
    
    Email Validation (Drupal\Tests\advanced_email_validation\Kernel\EmailValidation)
     ✔ Basic validation
     ✔ Validate account on disabled
     ✔ Validate account on created
     ✔ Validate account on update
     ✔ Validate account on create and update
     ✔ Mx record validation
     ✘ Free provider validation
    
       ├ RuntimeException: Cannot compare markup between MarkupInterface objects and plain strings
    
       │ /home/wsl/3445847/docroot/web/core/tests/Drupal/TestTools/Comparator/MarkupInterfaceComparator.php:42
       │ /home/wsl/3445847/docroot/web/modules/contrib/advanced_email_validation/tests/src/Kernel/EmailValidationTest.php:354
    
     ✔ Free provider list customization
     ✔ Disposable provider validation
     ✔ Disposable provider list customization
     ✔ Banned provider validation
    
    ERRORS!
    Tests: 11, Assertions: 80, Errors: 1.
    :x:

    Group member role

    : no valid install target

    Project: https://www.drupal.org/project/group_member_role

    ❯ composer require drupal/group_member_role
    ./composer.json has been updated
    Running composer update drupal/group_member_role
    Loading composer repositories with package information
    Updating dependencies
    Your requirements could not be resolved to an installable set of packages.
    
    Problem 1
      - drupal/group dev-3.3.x requires drupal/core ^10.2 -> found drupal/core[10.2.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group[2.0.0-alpha1, ..., 2.0.0-alpha3] require drupal/core ^8.9 || ^9 -> found drupal/core[8.9.0-beta1, ..., 8.9.x-dev, 9.0.0-alpha1, ..., 9.5.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group[2.0.0-alpha4, ..., 2.0.0-beta4, 3.0.0-beta1, ..., 3.0.0-beta4] require drupal/core ^9 || ^10 -> found drupal/core[9.0.0-alpha1, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group[2.0.0-beta5, ..., 2.0.0-rc2, 3.0.0-beta5, ..., 3.0.0-rc2] require drupal/core ^9.1 || ^10 -> found drupal/core[9.1.0-alpha1, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group[2.0.0, ..., 2.2.x-dev, 3.0.0, ..., 3.2.x-dev] require drupal/core ^9.5 || ^10 -> found drupal/core[9.5.0-beta1, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group_member_role[dev-1.x, 1.0.0, ..., 1.x-dev] require drupal/group ^2 || ^3 -> satisfiable by drupal/group[2.0.0-alpha1, ..., 2.3.x-dev, 3.0.0-beta1, ..., 3.3.x-dev (alias of dev-3.3.x)].
      - drupal/group 3.3.x-dev is an alias of drupal/group dev-3.3.x and thus requires it to be installed too.
      - Root composer.json requires drupal/group_member_role * -> satisfiable by drupal/group_member_role[dev-1.x, 1.0.0, 1.x-dev].
    
    Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
    You can also try re-running composer require with an explicit version constraint, e.g. "composer require drupal/group_member_role:*" to figure out if any version is installable, or "composer require drupal/group_member_role:^2.1" if you know which you need.
    
    
    ❯ composer require drupal/group_member_role:1.x-dev
    ./composer.json has been updated
    Running composer update drupal/group_member_role
    Loading composer repositories with package information
    Updating dependencies
    Your requirements could not be resolved to an installable set of packages.
    
    Problem 1
      - drupal/group dev-3.3.x requires drupal/core ^10.2 -> found drupal/core[10.2.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group[2.0.0-alpha1, ..., 2.0.0-alpha3] require drupal/core ^8.9 || ^9 -> found drupal/core[8.9.0-beta1, ..., 8.9.x-dev, 9.0.0-alpha1, ..., 9.5.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group[2.0.0-alpha4, ..., 2.0.0-beta4, 3.0.0-beta1, ..., 3.0.0-beta4] require drupal/core ^9 || ^10 -> found drupal/core[9.0.0-alpha1, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group[2.0.0-beta5, ..., 2.0.0-rc2, 3.0.0-beta5, ..., 3.0.0-rc2] require drupal/core ^9.1 || ^10 -> found drupal/core[9.1.0-alpha1, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group[2.0.0, ..., 2.2.x-dev, 3.0.0, ..., 3.2.x-dev] require drupal/core ^9.5 || ^10 -> found drupal/core[9.5.0-beta1, ..., 9.5.x-dev, 10.0.0-alpha1, ..., 10.4.x-dev] but the package is fixed to 11.0.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
      - drupal/group_member_role dev-1.x requires drupal/group ^2 || ^3 -> satisfiable by drupal/group[2.0.0-alpha1, ..., 2.3.x-dev, 3.0.0-beta1, ..., 3.3.x-dev (alias of dev-3.3.x)].
      - drupal/group_member_role 1.x-dev is an alias of drupal/group_member_role dev-1.x and thus requires it to be installed too.
      - drupal/group 3.3.x-dev is an alias of drupal/group dev-3.3.x and thus requires it to be installed too.
      - Root composer.json requires drupal/group_member_role 1.x-dev -> satisfiable by drupal/group_member_role[1.x-dev (alias of dev-1.x)].
    
    Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
    

    Other D11 not-compat tested

    • composer require 'drupal/token_filter:^2.1'
  • closed

Please register or sign in to reply
Loading