Related issue for Drupal 8.8/8.9: #3044175: [DO NOT COMMIT] Vendor minimum testing issue

Problem/Motivation

Since testbot only tests issues with the vendor versions in the composer lock file, we need a way to test against older vendor versions that are permitted in our composer.json in order to avoid committing code that may not work with an earlier dependency.

Proposed resolution

Keep an RTBC issue with a patch to run composer update --prefer-lowest against the codebase prior to running the test suite.

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Comments

Mile23 created an issue. See original summary.

mile23’s picture

StatusFileSize
new603 bytes

Let's get things started.

mile23’s picture

Status: Active » Needs review

Status: Needs review » Needs work

The last submitted patch, 2: 3104474_2.patch, failed testing. View results

mile23’s picture

Status: Needs work » Reviewed & tested by the community
StatusFileSize
new621 bytes
new680 bytes

Tons of errors like this:

  1173x: The Symfony\Component\ClassLoader\ApcClassLoader class is deprecated since version 3.3 and will be removed in 4.0. Use `composer install --apcu-autoloader` instead.

We're solving it in #3020296: Remove Symfony's classloader as it does not exist in Symfony 4

Let's take the deprecation message at its word and see what happens.

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 5: 3104474_4.patch, failed testing. View results

mile23’s picture

Status: Needs work » Reviewed & tested by the community
StatusFileSize
new1.68 KB
new1.75 KB

Added this version of the error message to the deprecation list.

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 7: 3104474_7.patch, failed testing. View results

mile23’s picture

Status: Needs work » Reviewed & tested by the community
StatusFileSize
new2.92 KB
new1.24 KB

The log file for the last test says:

  - Downgrading guzzlehttp/guzzle (6.3.3 => 6.3.0): Downloading (100%)

However, #3001542: Update Guzzle from 6.3.0 to 6.3.3 tells us that we need 6.3.3 or better. Change record: https://www.drupal.org/node/3001550

See also: #3104473: Use version of guzzlehttp/guzzle ^6.5.2

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 9: 3104474_9.patch, failed testing. View results

mile23’s picture

Status: Needs work » Reviewed & tested by the community
StatusFileSize
new3.17 KB
new1.5 KB

Reroll after #3104473: Use version of guzzlehttp/guzzle ^6.5.2

Fail/error messages like this:

1) Drupal\Tests\Core\TempStore\SharedTempStoreTest::testSerialization
Declaration of Double\Symfony\Component\HttpFoundation\Request\P1::getPreferredFormat(string $default = 'html'): ?string should be compatible with Symfony\Component\HttpFoundation\Request::getPreferredFormat(?string $default = 'html'): ?string

...Led me to trying to update symfony components to be 4.4.2 like they are in the lock file. But that didn't change anything.

However, updating phpspec/prophecy did yield passing tests. We have 1.9.0 in our lock file, but ^1.8 lets us pass tests with --prefer-lowest.

So here is that patch.

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 11: 3104474_11.patch, failed testing. View results

mile23’s picture

Status: Needs work » Reviewed & tested by the community
StatusFileSize
new3.31 KB
new1.45 KB

After #3039611: Update core PHP dependencies for 8.8.x we use phpdocumentor/reflection-docblock 4.3.2. When we update with --prefer-lowest, it does this:

  - Downgrading phpdocumentor/reflection-docblock (4.3.2 => 2.0.0): Downloading (100%)

This leads to fails in some of our serialization tests, specifically:

  • Drupal\Tests\serialization\Unit\Normalizer\DateTimeIso8601NormalizerTest
  • Drupal\Tests\serialization\Unit\Normalizer\DateTimeNormalizerTest
  • Drupal\Tests\serialization\Unit\Normalizer\TimestampNormalizerTest

So here we explicitly require it at ^4. Setting at ^3 led to more failures.

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 13: 3104474_13.patch, failed testing. View results

mile23’s picture

Status: Needs work » Reviewed & tested by the community
StatusFileSize
new3.13 KB
new1.74 KB

And it turns out phpdocumentor/reflection-docblock ^4 isn't right, because it leads to a bunch of fails in Drupal\Tests\content_moderation\Unit\LatestRevisionCheckTest.

This patch reverts our phpspec/prophecy spec back to ^1.7 and explicitly requires phpdocumentor/reflection-docblock ^4.1.

This suggests that phpspec/prophecy might actually be dependent on phpdocumentor/reflection-docblock ^4.1 and might need an upstream fix for their min.

mile23’s picture

StatusFileSize
new3.32 KB
new1.53 KB

Should have left phpspec/prophecy at ^1.8 because it's a regression from #11.

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 16: 3104474_16.patch, failed testing. View results

mile23’s picture

Status: Needs work » Reviewed & tested by the community
StatusFileSize
new4.03 KB
new1.97 KB

I can't repro the functional javascript fails locally, so I'm copying some of the changed constraints from #3044175-48: [DO NOT COMMIT] Vendor minimum testing issue

(behat/mink and behat/mink-goutte-driver were last updated in core/composer.json in 2015: #2578815: Upgrade behat/mink and behat/mink-goutte-driver)

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 18: 3104474_18.patch, failed testing. View results

mile23’s picture

Status: Needs work » Reviewed & tested by the community
Issue tags: +Needs followup
Related issues: +#3087678: Explicitly require-dev symfony/dom-crawler ^3.4.0, +#2962157: TestSiteApplicationTest requires a database despite being a unit test
StatusFileSize
new4.8 KB
new795 bytes

The one fail is TestSiteApplicationTest::testInstallScript() so I've marked it incomplete with a link to #2962157: TestSiteApplicationTest requires a database despite being a unit test like its other incomplete friends in the same test class.

I've related existing issues here, and we probably need a follow-up for the behat/*, instaclick/*, and phpdocumentor/* families, related to both this issue and #3044175: [DO NOT COMMIT] Vendor minimum testing issue

Status: Reviewed & tested by the community » Needs work

The last submitted patch, 20: 3104474_20.patch, failed testing. View results

mile23’s picture

Status: Needs work » Needs review
StatusFileSize
new23.48 KB
new19.56 KB

Status: Needs review » Needs work

The last submitted patch, 22: 3104474_70.patch, failed testing. View results

Version: 9.0.x-dev » 9.1.x-dev

Drupal 9.0.10 was released on December 3, 2020 and is the final full bugfix release for the Drupal 9.0.x series. Drupal 9.0.x will not receive any further development aside from security fixes. Sites should update to Drupal 9.1.0 to continue receiving regular bugfixes.

Drupal-9-only bug reports should be targeted for the 9.1.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.2.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

longwave’s picture

Version: 9.1.x-dev » 9.2.x-dev
Status: Needs work » Needs review
StatusFileSize
new259.4 KB

Let's try reviving this; composer update --prefer-lowest on 9.2.x:

+--------------------------------------+----------+---------+
| Production Changes                   | From     | To      |
+--------------------------------------+----------+---------+
| asm89/stack-cors                     | 1.3.0    | 1.2.0   |
| composer/installers                  | v1.10.0  | v1.9.0  |
| composer/semver                      | 3.2.4    | 3.0.0   |
| doctrine/annotations                 | 1.12.1   | v1.4.0  |
| doctrine/lexer                       | 1.2.1    | 1.0.2   |
| doctrine/reflection                  | 1.2.2    | v1.1.0  |
| egulias/email-validator              | 2.1.25   | 2.0.0   |
| guzzlehttp/guzzle                    | 6.5.5    | 6.5.2   |
| guzzlehttp/promises                  | 1.4.1    | 1.0.0   |
| guzzlehttp/psr7                      | 1.8.1    | 1.6.1   |
| laminas/laminas-diactoros            | 2.5.0    | 2.1.0   |
| laminas/laminas-escaper              | 2.7.0    | 2.5.2   |
| laminas/laminas-feed                 | 2.14.0   | 2.12.0  |
| laminas/laminas-stdlib               | 3.3.1    | 3.2.1   |
| laminas/laminas-zendframework-bridge | 1.2.0    | 1.0.0   |
| masterminds/html5                    | 2.7.4    | 2.6.0   |
| pear/archive_tar                     | 1.4.13   | 1.4.12  |
| pear/console_getopt                  | v1.4.3   | v1.3.1  |
| pear/pear-core-minimal               | v1.10.10 | v1.10.0 |
| pear/pear_exception                  | v1.0.2   | v1.0.0  |
| psr/container                        | 1.1.1    | 1.0.0   |
| psr/http-factory                     | 1.0.1    | 1.0.0   |
| psr/http-message                     | 1.0.1    | 1.0     |
| psr/log                              | 1.1.3    | 1.0.0   |
| ralouphie/getallheaders              | 3.0.3    | 2.0.5   |
| stack/builder                        | v1.0.6   | v1.0.5  |
| symfony-cmf/routing                  | 2.3.3    | 2.1.0   |
| symfony/console                      | v4.4.21  | v4.4.0  |
| symfony/debug                        | v4.4.20  | v4.4.0  |
| symfony/dependency-injection         | v4.4.21  | v4.4.0  |
| symfony/deprecation-contracts        | v2.2.0   | REMOVED |
| symfony/error-handler                | v4.4.21  | v4.4.0  |
| symfony/event-dispatcher             | v4.4.20  | v4.4.0  |
| symfony/event-dispatcher-contracts   | v1.1.9   | v1.1.1  |
| symfony/http-client-contracts        | v2.3.1   | REMOVED |
| symfony/http-foundation              | v4.4.20  | v4.4.7  |
| symfony/http-kernel                  | v4.4.21  | v4.4.0  |
| symfony/mime                         | v5.2.6   | v4.3.0  |
| symfony/polyfill-ctype               | v1.22.1  | v1.8.0  |
| symfony/polyfill-iconv               | v1.22.1  | v1.0.0  |
| symfony/polyfill-intl-idn            | v1.22.1  | v1.10.0 |
| symfony/polyfill-intl-normalizer     | v1.22.1  | REMOVED |
| symfony/polyfill-mbstring            | v1.22.1  | v1.3.0  |
| symfony/polyfill-php80               | v1.22.1  | v1.15.0 |
| symfony/process                      | v4.4.20  | v4.4.0  |
| symfony/psr-http-message-bridge      | v2.1.0   | v2.0.0  |
| symfony/routing                      | v4.4.20  | v4.4.0  |
| symfony/serializer                   | v4.4.20  | v4.4.0  |
| symfony/service-contracts            | v2.2.0   | v1.1.6  |
| symfony/translation                  | v4.4.21  | v4.4.0  |
| symfony/translation-contracts        | v2.3.0   | v1.1.6  |
| symfony/validator                    | v4.4.21  | v4.4.0  |
| symfony/var-dumper                   | v5.2.6   | v5.1.2  |
| symfony/yaml                         | v4.4.21  | v4.4.0  |
| twig/twig                            | v2.14.4  | v2.12.0 |
| typo3/phar-stream-wrapper            | v3.1.6   | v3.1.3  |
+--------------------------------------+----------+---------+

+------------------------------------+---------+---------+
| Dev Changes                        | From    | To      |
+------------------------------------+---------+---------+
| behat/mink                         | v1.8.1  | v1.8.0  |
| behat/mink-browserkit-driver       | v1.3.4  | 1.3.3   |
| behat/mink-goutte-driver           | v1.2.1  | v1.2.0  |
| composer/ca-bundle                 | 1.2.9   | 1.0.0   |
| composer/composer                  | 2.0.11  | 2.0.2   |
| composer/spdx-licenses             | 1.5.5   | 1.2.0   |
| composer/xdebug-handler            | 1.4.6   | 1.1.0   |
| doctrine/instantiator              | 1.4.0   | 1.2.0   |
| drupal/coder                       | 8.3.12  | 8.3.7   |
| easyrdf/easyrdf                    | 1.1.1   | 0.9.0   |
| fabpot/goutte                      | v3.3.1  | v3.2.2  |
| instaclick/php-webdriver           | 1.4.7   | 1.1     |
| myclabs/deep-copy                  | 1.10.2  | 1.9.1   |
| phar-io/manifest                   | 2.0.1   | 1.0.3   |
| phar-io/version                    | 3.1.0   | 2.0.1   |
| phpdocumentor/reflection-common    | 2.2.0   | REMOVED |
| phpdocumentor/reflection-docblock  | 5.2.2   | 2.0.0   |
| phpdocumentor/type-resolver        | 1.4.0   | REMOVED |
| phpspec/prophecy                   | 1.13.0  | 1.8.1   |
| phpunit/php-code-coverage          | 7.0.14  | 7.0.7   |
| phpunit/php-file-iterator          | 2.0.3   | 2.0.2   |
| phpunit/php-timer                  | 2.1.3   | 2.1.2   |
| phpunit/php-token-stream           | 4.0.4   | 3.1.0   |
| phpunit/phpunit                    | 8.5.15  | 8.4.1   |
| react/promise                      | v2.8.0  | v1.2.0  |
| sebastian/code-unit-reverse-lookup | 1.0.2   | 1.0.1   |
| sebastian/comparator               | 3.0.3   | 3.0.2   |
| sebastian/diff                     | 3.0.3   | 3.0.2   |
| sebastian/environment              | 4.2.4   | 4.2.2   |
| sebastian/exporter                 | 3.1.3   | 3.1.1   |
| sebastian/global-state             | 3.0.1   | 3.0.0   |
| sebastian/object-enumerator        | 3.0.4   | 3.0.3   |
| sebastian/object-reflector         | 1.1.2   | 1.1.1   |
| sebastian/recursion-context        | 3.0.1   | 3.0.0   |
| sebastian/resource-operations      | 2.0.2   | 2.0.1   |
| sebastian/type                     | 1.1.4   | 1.1.3   |
| seld/jsonlint                      | 1.8.3   | 1.4.0   |
| seld/phar-utils                    | 1.1.1   | 1.0.0   |
| sirbrillig/phpcs-variable-analysis | v2.11.0 | REMOVED |
| squizlabs/php_codesniffer          | 3.5.8   | 3.4.1   |
| symfony/browser-kit                | v4.4.20 | v4.4.0  |
| symfony/css-selector               | v4.4.20 | v4.4.0  |
| symfony/dom-crawler                | v4.4.20 | v4.4.0  |
| symfony/filesystem                 | v4.4.21 | v4.4.0  |
| symfony/finder                     | v4.4.20 | v4.4.0  |
| symfony/lock                       | v4.4.21 | v4.4.0  |
| symfony/phpunit-bridge             | v5.2.6  | v5.1.4  |
| theseer/tokenizer                  | 1.2.0   | 1.1.3   |
| webmozart/assert                   | 1.10.0  | REMOVED |
| dflydev/markdown                   | NEW     | v1.0.0  |
+------------------------------------+---------+---------+
longwave’s picture

StatusFileSize
new259.73 KB

drupal/core requires symfony/yaml:^4.4.19 so we need that in the root composer.json or --prefer-lowest builds us an incompatible lockfile.

longwave’s picture

StatusFileSize
new507 bytes

Meh, cspell - let's try it the way #2 did.

longwave’s picture

StatusFileSize
new2.31 KB

We need at least Coder 8.3.10 and cspell still bites us, so we need the new word in the dictionary.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

longwave’s picture

Status: Needs review » Closed (duplicate)

Whoops, forgot I had started doing this here as well. However this might as well be closed as duplicate of #3044175: [DO NOT COMMIT] Vendor minimum testing issue, no point having two issues doing the same thing.