Update PHP - All packages except core - Minor and patch#2786
Update PHP - All packages except core - Minor and patch#2786AlexSkrypnyk wants to merge 1 commit into
Conversation
WalkthroughComposer dependency constraints were updated for ChangesComposer dependency updates
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested labels: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
2 similar comments
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
📖 Documentation preview for this pull request has been deployed to Netlify: https://6a5386b08f540e1190154788--vortex-docs.netlify.app This preview is rebuilt on every commit and is not the production documentation site. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2786 +/- ##
==========================================
- Coverage 86.71% 86.27% -0.44%
==========================================
Files 97 90 -7
Lines 4757 4598 -159
Branches 47 3 -44
==========================================
- Hits 4125 3967 -158
+ Misses 632 631 -1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
| datasource | package | from | to | | ---------- | ---------------------------------- | ------- | ------- | | packagist | drevops/behat-format-progress-fail | 1.5.0 | 1.5.1 | | packagist | drevops/behat-screenshot | 2.4.1 | 2.4.2 | | packagist | drevops/behat-steps | 3.11.0 | 3.12.0 | | packagist | drupal/generated_content | 2.0.1 | 2.1.0 | | packagist | drush/drush | 13.7.4 | 13.7.6 | | packagist | mglaman/phpstan-drupal | 2.0.15 | 2.0.16 | | packagist | phpstan/phpstan | 2.2.4 | 2.2.5 | | packagist | phpunit/phpunit | 11.5.55 | 11.5.56 | | packagist | rector/rector | 2.5.2 | 2.5.6 |
0fd19c0 to
6cb64ed
Compare
|
Code coverage (threshold: 90%) Per-class coverage |
This comment has been minimized.
This comment has been minimized.
2 similar comments
This comment has been minimized.
This comment has been minimized.
|
Code coverage (threshold: 90%) Per-class coverage |
This PR contains the following updates:
^1.5→^1.5.1^2.4.1→^2.4.2^3.11.0→^3.12.0^2.0.1→^2.1.0^13.7.4→^13.7.6^2.0.15→^2.0.16^2.2.4→^2.2.5^11.5.55→^11.5.56^2.5.2→^2.5.6Release Notes
drevops/behat-format-progress-fail (drevops/behat-format-progress-fail)
v1.5.1Compare Source
What's new since 1.5.0
55cc834@renovate[bot] (#81)4d75298@renovate[bot] (#80)73b95fa@renovate[bot] (#79)Full Changelog: drevops/behat-format-progress-fail@1.5.0...1.5.1
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
drevops/behat-screenshot (drevops/behat-screenshot)
v2.4.2Compare Source
What's new since 2.4.1
55cc834@renovate[bot] (#232)4d75298@renovate[bot] (#231)73b95fa@renovate[bot] (#230)Full Changelog: drevops/behat-screenshot@2.4.1...2.4.2
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
drevops/behat-steps (drevops/behat-steps)
v3.12.0Compare Source
What's new since 3.11.1
Breaking changes
Only
php,behat/behat, andbehat/minkremain hard requirements;drupal/drupal-extension,lullabot/mink-selenium2-driver,dmore/behat-chrome-extension, andsoftcreatr/jsonpathmoved torequire-devandsuggest, so projects that relied on transitive installation will lose them on upgrade. Add the packages you actually use to your owncomposer.json:drupal/drupal-extensionfor anyDrevOps\BehatSteps\Drupal\*trait,softcreatr/jsonpathforJsonTrait, and one of the interchangeable driverslullabot/mink-selenium2-driverordmore/behat-chrome-extensionfor@javascriptscenarios (both run the full suite). The full mapping is inMIGRATION.md.Entity-creating traits now register into one shared registry that a single hook deletes in reverse creation order, and as a result the per-trait cleanup skip tags are removed. Search your feature files and replace each old tag with its per-type equivalent - for example
@behat-steps-skip:mediaAfterScenariobecomes@behat-steps-entity-cleanup-skip:mediaand@behat-steps-skip:blockAfterScenariobecomes@behat-steps-entity-cleanup-skip:block(full mapping inMIGRATION.md) - or use@behat-steps-skip:entityCleanupAfterScenarioto skip all cleanup at once.Highlights
JavaScript-dependent steps no longer assume a Selenium2/WebDriver session: six traits now use capability checks instead of hard
instanceof Selenium2Driverchecks, so@javascriptscenarios can drive headless Chrome directly over the Chrome DevTools Protocol viadmore/behat-chrome-extensionwith no Selenium server in the loop. You can drop the Selenium container from your test stack and still run the full JavaScript suite, and CI now runs both drivers to prove the steps behave identically.Beyond generic
<meta>tag presence and content checks, the trait now asserts canonical URLs, indexability (reading both the robots meta tag and theX-Robots-Tagresponse header), individual robots directives, hreflang alternate validity and reciprocal return links, and Open Graph / Twitter Card tag sets. Common SEO and head checks that projects previously hand-rolled are now first-class steps.New Gherkin steps set Drupal configuration and assert it two ways: STORED values read editable config (ignoring
settings.phpoverrides, symmetric with the set steps) and EFFECTIVE values read through the config factory with module andsettings.phpoverrides applied. Every config object a scenario touches is snapshotted on first write and reverted at teardown, so configuration changes never leak between scenarios.This opt-in trait appends a compact diagnostics block - current URL, HTTP status, active Mink driver, captured JavaScript console errors, and a ready-to-paste re-run command - to the message of any failed step. A red CI run becomes self-explanatory without needing a reproduction re-run first, each field can be individually suppressed, and every value source degrades gracefully so the trait never turns a failure into a different failure.
A new dependency-free generic trait runs a local shell command via
proc_open()and asserts on its stdout, stderr, exit code, and duration, so any Behat suite - not only Drupal ones - can drive CLI tools from Gherkin. It drains both pipes concurrently to avoid a buffer deadlock and guards against a hung command with a configurable timeout that kills and reaps the process.Including the new
Drupal\BigPipeTraitmakes every step on a@javascriptscenario wait, best-effort, until BigPipe's streamed placeholders have been replaced before the step runs. This removes the flaky race where JavaScript assertions fire against placeholder markup before BigPipe finishes progressive rendering; the wait is opt-out via@behat-steps-skip:BigPipeTraitand never throws on timeout, so a genuinely stuck placeholder still surfaces as the real assertion failure.JSON API responses now get the same assertion surface
XmlTraitgives XML bodies: valid-JSON checks, JSONPath value/type/existence/count assertions, and JSON Schema validation, with content sourced from the live page, a fixture file, or an inline PyString. Decoded JSON is cached per response body so repeated path queries do not re-decode, and schema validation is wired as an optional dependency so consumers who do not need it are not forced to install it.Other changes
The generic
DrevOps\BehatSteps\HelperTraitnow holds only framework-agnostic helpers, while a newDrevOps\BehatSteps\Drupal\HelperTraitholds the Drupal-specific ones and includes the generic trait as a superset. Non-Drupal traits (Wait, Link, Field, Accessibility) no longer pull in Drupal classes through the helper, and Drupal consumers still get both sets from a singleuse; this is an internal refactor with no behaviour change.New steps click, follow a link, or press a button by 1-based index when a selector, link text, or label matches several repeated elements such as cards, rows, or menu items, plus a parent-scoped assertion for the exact count of descendants matching a selector. This fills the gap where interactions always resolved to the first match and MinkContext only offered a page-wide element count, and each new step throws a distinct, clear error for an index below 1, no matches, or an index beyond the number of matches.
A response body can now be validated against a full XSD, DTD, or RelaxNG schema (inline via a PyString or loaded from a fixture file) and checked for structural validity as an RSS 2.0 or Atom feed, instead of only asserting on individual elements, attributes, or namespaces. All validation runs through native libxml/DOM APIs, so no new Composer dependency is introduced.
Full Changelog: drevops/behat-steps@3.11.1...3.12.0
v3.11.1Compare Source
What's new since 3.11.0
4d75298@renovate[bot] (#663)Full Changelog: drevops/behat-steps@3.11.0...3.11.1
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
drush-ops/drush (drush/drush)
v13.7.6Compare Source
What's Changed
Full Changelog: drush-ops/drush@13.7.5...13.7.6
v13.7.5Compare Source
What's Changed
Full Changelog: drush-ops/drush@13.7.4...13.7.5
mglaman/phpstan-drupal (mglaman/phpstan-drupal)
v2.0.16Compare Source
What's Changed
Full Changelog: mglaman/phpstan-drupal@2.0.15...2.0.16
phpstan/phpstan-phar-composer-source (phpstan/phpstan)
v2.2.5Compare Source
sebastianbergmann/phpunit (phpunit/phpunit)
v11.5.56: PHPUnit 11.5.56Compare Source
Changed
Learn how to install or update PHPUnit 11.5 in the documentation.
Keep up to date with PHPUnit:
rectorphp/rector (rector/rector)
v2.5.6: Released Rector 2.5.6Compare Source
New Features 🥳
RemoveReturnTagIncompatibleWithNativeTypeRector(#8172)final class SomeClass { - /** - * @​return SomeObject - */ public function getName(): string { return $this->someObject->getName(); } }MergePhpstanDocTagIntoNativeRectorto merge@phpstan-*doc tags into native tags (#8171)final class SomeClass { /** - * @​var Collection - * - * @​phpstan-var Collection<int, string> + * @​var Collection<int, string> */ private $items; }Bugfixes 🐛
NullToStrictStringFuncCallArgRector(#8164)getRuleDefinition()method, parts 1–5 (#8165, #8166, #8167, #8168, #8169)phpstan/phpdoc-parserto^2.3.3(#8174)PHPUnit 🧪
New rules and changes from rector-phpunit.
New Rules
AssertClassToThisAssertRector(#707)use PHPUnit\Framework\Assert; use PHPUnit\Framework\TestCase; final class SomeClass extends TestCase { public function run() { - Assert::assertEquals('expected', $result); + $this->assertEquals('expected', $result); } }BareCreateMockAssignToDirectUseRector— inline a single-usecreateMock()assignment (#708)final class SomeTest extends TestCase { public function test() { - $someObject = $this->createMock(SomeClass::class); - $this->process($someObject); + $this->process($this->createMock(SomeClass::class)); } private function process(SomeClass $someObject): void { } }WillReturnCallbackFallbackToThrowRector— throw on an unexpected extra consecutive call (#710)$this->someServiceMock->expects($matcher) ->method('run') ->willReturnCallback(function () use ($matcher) { if ($matcher->numberOfInvocations() === 1) { return 1; } + + throw new \PHPUnit\Framework\Exception(sprintf('Method should not be called for the %dth time', $matcher->numberOfInvocations())); });RemoveReturnFromVoidMethodMockCallbackRector— type a void mock callback and drop its value return (#711)$this->createMock(SomeClass::class) ->method('run') - ->willReturnCallback(function ($arg) { + ->willReturnCallback(function ($arg): void { echo $arg; - - return true; });(
SomeClass::run()returnsvoid.)CallbackSingleAssertToSimplerRector— collapse awith()callback with a soleassertSame()toequalTo()(#714)$builder->expects($this->exactly(2)) ->method('add') - ->with($this->callback(function ($type): bool { - $this->assertSame(TextType::class, $type); - - return true; - })); + ->with($this->equalTo(TextType::class));Improvements
TestCasesuffix classes inRemoveNeverUsedMockPropertyRector(#709)WithCallbackIdenticalToStandaloneAssertsRector(#712)return throwandreturn nullin void mock callbacks (#713)v2.5.5: Released Rector 2.5.5Compare Source
New Features 🥳
AlternativeIfToBracketRector(#8158)Bugfixes 🐛
AddClosureParamTypeForArrayMapRectorto type closure params from array values, not keys (#8163)v2.5.4: Released Rector 2.5.4Compare Source
New Features 🥳
Bugfixes 🐛
v2.5.3: Released Rector 2.5.3Compare Source
New Features 🥳
withTypeGuardedClasses()Are you an open-source project or package used by others? Do you want to make type changes, but keep BC?
Guard the listed classes and their non-final descendants against method signature changes - e.g. adding a return type or a param type — that would break child classes (#8135)
New Rules 🎉
NegatedAndsToPositiveOrsRector(CodeQuality) — simplify a negated "and" to "or" via de Morgan (#8082)
ExplicitAttributeNamedArgsRector(CodeQuality) — positional attribute args → named args (#8079), Thanks @DaveLiddament!
SwitchTrueToMatchRector(CodeQuality) —
switch (true)of returning cases →match (true), replaces deprecatedSwitchTrueToIfRector(#8113)RemoveDuplicatedReturnSelfDocblockRector(DeadCode) — drop
@returnduplicating native self/static (#8087)final class SomeClass { - /** - * @​return $this - */ public function some(): self { return $this; } }RemoveMixedDocblockOverruledByNativeTypeRector(DeadCode) — drop
@param mixed/@return mixedoverruled by native type (#8089)RemoveUselessUnionReturnDocblockRector(DeadCode) — drop
@returnunion broader than a specific native type (#8126)ClosureReturnTypeFromAssertInstanceOfRector(TypeDeclaration) — add closure return type narrowed by
assertInstanceOf()(#8115)TypedPropertyFromContainerGetSetUpRector(TypeDeclaration) — type property from
@varwhen assigned via containerget()insetUp()(#8120)TypedPropertyFromGetRepositorySetUpRector(TypeDeclaration) — same, for
getRepository()assignment insetUp()(#8124)protected function setUp(): void
{
$this->someEntityRepository = $this->em->getRepository(SomeEntity::class);
}
NarrowBoolDocblockReturnTypeRector(TypeDeclaration) — narrow
@return booltofalse/trueper native type (#8127)NarrowArrayCollectionUnionReturnDocblockRector(TypeDeclarationDocblocks) —
Type[]|ArrayCollection→ genericArrayCollection<int, Type>(#8136)AddClosureParamTypeFromVariableCallRector(TypeDeclaration) — add closure param type from how the closure variable is called (#8142)
rectorphp/rector-symfony 🎵
EventSubscriberMethodReturnVoidRector(CodeQuality) — subscribed event methods must return
void(event is by-reference) (#949)rectorphp/rector-phpunit 🟢
PHPUnit 12 cluster — typing
createMock()/createStub()properties as intersections after theMockObject→Stubsplit.ChangeMockObjectReturnUnionToIntersectionRector(CodeQuality) — MockObject
@returnunion → intersection (#703)AddIntersectionVarToMockObjectPropertyRector(CodeQuality) — add MockObject intersection
@varto a native MockObject property (#697)AddStubIntersectionVarToStubPropertyRector(CodeQuality) — add Stub intersection
@varto a native Stub property (#700)MockObjectVarToStubRector(PHPUnit120) — on a property retyped to Stub, update
@varfrom MockObject to Stub (#689)BareVarToStubIntersectionRector(PHPUnit120) — add
&Stubto a bare single-class@varof a Stub property (#690)PreferTestsWithCamelCaseRector(CodeQuality) — rename PHPUnit test methods to camelCase (#668), Thanks @Xammie!
PreferTestsWithSnakeCaseRector(CodeQuality) — rename PHPUnit test methods to snake_case, the opposite convention (#668), Thanks @Xammie!
Bugfixes 🐛
--only/--only-suffixruns now cache under a rule-scoped key (#8075), Thanks @SanderMuller!ParamTypeByMethodCallTypeRectorsplit into Object / Scalar / Array rules (#8134)Deprecations & Removals 💀
Migrate away - these will be removed in a future release:
SwitchTrueToIfRector→ use newSwitchTrueToMatchRector(#8109)StrictStringParamConcatRector— too many false positives (#8090)StaticClosureRector+StaticArrowFunctionRector(#8092)StaticCallOnNonStaticToInstanceCallRector— risky change (#8093)EnumCaseToPascalCaseRector— risky change (#8095)JoinStringConcatRector(#8107)RemoveTypedPropertyNonMockDocblockRector— no real value (#8119)rectorphp/rector-symfony
ParameterBagToAutowireAttributeRector(#954)AddRouteAnnotationRector(#952)rectorphp/rector-phpunit
BehatPHPUnitAssertToWebmozartRector— too narrow (#686)Configuration
📅 Schedule: (in timezone UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate.
Summary by CodeRabbit
drupal/generated_content.