diff --git a/.github/workflows/analyzers.yaml b/.github/workflows/analyzers.yaml
index 85ee6c7a..d32db0f2 100644
--- a/.github/workflows/analyzers.yaml
+++ b/.github/workflows/analyzers.yaml
@@ -23,7 +23,7 @@ jobs:
with:
php-version: ${{ matrix.php-versions }}
tools: 'composer:v2'
- extensions: pcov, mbstring, posix
+ extensions: pcov, mbstring, posix, xdebug, dom, libxml, xml, xsl, xmlreader, xmlwriter
- name: Install dependencies
run: composer update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }}
- name: Run the tests
diff --git a/.github/workflows/stress.yaml b/.github/workflows/stress.yaml
index a0bf8399..6ce86308 100644
--- a/.github/workflows/stress.yaml
+++ b/.github/workflows/stress.yaml
@@ -19,6 +19,7 @@ jobs:
php-version: ${{ matrix.php-versions }}
coverage: none
tools: 'composer:v2'
+ extensions: pcov, mbstring, posix, dom, libxml, xml, xsl, xmlreader, xmlwriter
- name: Install dependencies
run: composer update --prefer-dist --no-progress --no-suggest
- name: Run the stress tests
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index c660212f..55bbe836 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -25,7 +25,7 @@ jobs:
php-version: ${{ matrix.php-versions }}
tools: 'composer:v2'
ini-values: error_reporting=E_ALL
- extensions: pcov, mbstring, posix
+ extensions: pcov, mbstring, posix, dom, libxml, xml, xsl, xmlreader, xmlwriter
- name: Install dependencies
run: composer update --prefer-dist --no-progress --no-suggest
- name: Run the tests
diff --git a/.phive/phars.xml b/.phive/phars.xml
index 1b3ecc48..624b97c3 100644
--- a/.phive/phars.xml
+++ b/.phive/phars.xml
@@ -1,7 +1,6 @@
-
-
-
-
+
+
+
diff --git a/composer.json b/composer.json
index cb8e8909..31fe4dcd 100644
--- a/composer.json
+++ b/composer.json
@@ -20,7 +20,8 @@
"require-dev": {
"symfony/finder": "^6.1",
"veewee/composer-run-parallel": "^1.0.0",
- "php-standard-library/psalm-plugin": "^2.0"
+ "vimeo/psalm": "^5.1",
+ "php-standard-library/psalm-plugin": "^2.2"
},
"license": "MIT",
"authors": [
@@ -48,7 +49,7 @@
],
"cs": "PHP_CS_FIXER_IGNORE_ENV=1 php ./tools/php-cs-fixer.phar fix --dry-run",
"cs:fix": "PHP_CS_FIXER_IGNORE_ENV=1 php ./tools/php-cs-fixer.phar fix",
- "psalm": "./tools/psalm.phar --no-cache",
+ "psalm": "./vendor/bin/psalm --no-cache --stats",
"tests": "./tools/phpunit.phar --coverage-text --color",
"stress": [
"Composer\\Config::disableProcessTimeout",
diff --git a/docs/dom.md b/docs/dom.md
index 5828dbaa..88abe0f8 100644
--- a/docs/dom.md
+++ b/docs/dom.md
@@ -60,6 +60,21 @@ Let's find out more by segregating the DOM component into its composable blocks:
Assert if a DOMNode is of a specific type.
+#### assert_attribute
+
+Assert if a node is of type `DOMAttr`.
+
+```php
+use Psl\Type\Exception\AssertException;
+use function VeeWee\Xml\Dom\Assert\assert_attribute;
+
+try {
+ assert_attribute($someNode)
+} catch (AssertException $e) {
+ // Deal with it
+}
+```
+
#### assert_document
Assert if a node is of type `DOMDocument`.
@@ -75,6 +90,21 @@ try {
}
```
+#### assert_dome_node_list
+
+Assert if a variable is of type `DOMNodeList`.
+
+```php
+use Psl\Type\Exception\AssertException;
+use function VeeWee\Xml\Dom\Assert\assert_dom_node_list;
+
+try {
+ assert_dom_node_list($someVar)
+} catch (AssertException $e) {
+ // Deal with it
+}
+```
+
#### assert_element
Assert if a node is of type `DOMElement`.
diff --git a/psalm.xml b/psalm.xml
index c6f196ad..5a7bd22c 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -3,7 +3,7 @@
errorLevel="1"
resolveFromConfigFile="true"
strictBinaryOperands="true"
- phpVersion="8.0"
+ phpVersion="8.1"
allowStringToStandInForClass="true"
rememberPropertyAssignmentsAfterCall="false"
skipChecksOnUnresolvableIncludes="false"
@@ -40,7 +40,6 @@
-
diff --git a/src/Xml/Dom/Assert/assert_attribute.php b/src/Xml/Dom/Assert/assert_attribute.php
new file mode 100644
index 00000000..5742eeba
--- /dev/null
+++ b/src/Xml/Dom/Assert/assert_attribute.php
@@ -0,0 +1,18 @@
+assert($node);
+}
diff --git a/src/Xml/Dom/Assert/assert_dom_node_list.php b/src/Xml/Dom/Assert/assert_dom_node_list.php
new file mode 100644
index 00000000..6287064c
--- /dev/null
+++ b/src/Xml/Dom/Assert/assert_dom_node_list.php
@@ -0,0 +1,18 @@
+assert($node);
+}
diff --git a/src/Xml/Dom/Collection/NodeList.php b/src/Xml/Dom/Collection/NodeList.php
index 4d74f689..7acffbee 100644
--- a/src/Xml/Dom/Collection/NodeList.php
+++ b/src/Xml/Dom/Collection/NodeList.php
@@ -60,6 +60,7 @@ public static function empty(): self
/**
* @template X of DOMNode
+ * @param DOMNodeList $list
* @return NodeList
*/
public static function fromDOMNodeList(DOMNodeList $list): self
diff --git a/src/Xml/Dom/Locator/Element/siblings.php b/src/Xml/Dom/Locator/Element/siblings.php
index f13b10d4..fc6d8098 100644
--- a/src/Xml/Dom/Locator/Element/siblings.php
+++ b/src/Xml/Dom/Locator/Element/siblings.php
@@ -11,14 +11,15 @@
use function VeeWee\Xml\Dom\Predicate\is_element;
/**
- * @psalm-suppress RedundantConditionGivenDocblockType - Seems better to do an additional check here psalm!
- *
* @return NodeList
*/
function siblings(DOMNode $node): NodeList
{
- return new NodeList(...filter(
+ /** @var NodeList $siblings */
+ $siblings = new NodeList(...filter(
$node->parentNode?->childNodes?->getIterator() ?? [],
static fn (DOMNode $sibling): bool => is_element($sibling) && $sibling !== $node
));
+
+ return $siblings;
}
diff --git a/src/Xml/Dom/Locator/Xmlns/linked_namespaces.php b/src/Xml/Dom/Locator/Xmlns/linked_namespaces.php
index 3f62c66e..a5fdb794 100644
--- a/src/Xml/Dom/Locator/Xmlns/linked_namespaces.php
+++ b/src/Xml/Dom/Locator/Xmlns/linked_namespaces.php
@@ -21,5 +21,5 @@ function linked_namespaces(DOMNode $node): NodeList
{
$xpath = Xpath::fromUnsafeNode($node);
- return $xpath->query('./namespace::*', $node);
+ return $xpath->query('./namespace::*', $node)->expectAllOfType(DOMNameSpaceNode::class);
}
diff --git a/src/Xml/Dom/Locator/Xmlns/recursive_linked_namespaces.php b/src/Xml/Dom/Locator/Xmlns/recursive_linked_namespaces.php
index cb332c7f..509ce240 100644
--- a/src/Xml/Dom/Locator/Xmlns/recursive_linked_namespaces.php
+++ b/src/Xml/Dom/Locator/Xmlns/recursive_linked_namespaces.php
@@ -21,5 +21,5 @@ function recursive_linked_namespaces(DOMNode $node): NodeList
{
$xpath = Xpath::fromUnsafeNode($node);
- return $xpath->query('.//namespace::*', $node);
+ return $xpath->query('.//namespace::*', $node)->expectAllOfType(DOMNameSpaceNode::class);
}
diff --git a/src/Xml/Dom/Manipulator/Attribute/rename.php b/src/Xml/Dom/Manipulator/Attribute/rename.php
index 9ad9d3aa..d28542e3 100644
--- a/src/Xml/Dom/Manipulator/Attribute/rename.php
+++ b/src/Xml/Dom/Manipulator/Attribute/rename.php
@@ -10,6 +10,7 @@
use function VeeWee\Xml\Dom\Builder\namespaced_attribute;
use function VeeWee\Xml\Dom\Locator\Element\parent_element;
use function VeeWee\Xml\Dom\Manipulator\Node\remove;
+use function VeeWee\Xml\Dom\Predicate\is_attribute;
/**
* @throws RuntimeException
@@ -34,7 +35,7 @@ function rename(DOMAttr $target, string $newQName, ?string $newNamespaceURI = nu
$result = $element->getAttributeNode($newQName);
/** @psalm-suppress TypeDoesNotContainType - It can actually be null if the exact node name is not found. */
- if (!$result) {
+ if (!$result || !is_attribute($result)) {
throw RuntimeException::withMessage(
'Unable to rename attribute '.$target->nodeName.' into '.$newQName.'. You might need to swap xmlns prefix first!'
);
diff --git a/src/Xml/Dom/Manipulator/Xmlns/rename.php b/src/Xml/Dom/Manipulator/Xmlns/rename.php
index b89888ca..d6e85726 100644
--- a/src/Xml/Dom/Manipulator/Xmlns/rename.php
+++ b/src/Xml/Dom/Manipulator/Xmlns/rename.php
@@ -12,6 +12,7 @@
use VeeWee\Xml\Dom\Xpath;
use VeeWee\Xml\Exception\RuntimeException;
use function Psl\invariant;
+use function Psl\Type\non_empty_string;
use function sprintf;
use function VeeWee\Xml\Dom\Builder\xmlns_attribute;
use function VeeWee\Xml\Dom\Locator\Attribute\attributes_list;
@@ -49,7 +50,7 @@ function rename(DOMDocument $document, string $namespaceURI, string $newPrefix):
// otherwise XMLNS namespace will be removed again after dealing with the elements that declare the xmlns.
$linkedNodes = $xpath->query(
sprintf('//*[namespace-uri()=\'%1$s\' or @*[namespace-uri()=\'%1$s\'] or namespace::*]', $namespaceURI)
- )->reduce(
+ )->expectAllOfType(DOMElement::class)->reduce(
static fn (NodeList $list, DOMElement $element): NodeList
=> new NodeList(
...[$element],
@@ -68,7 +69,7 @@ function rename(DOMDocument $document, string $namespaceURI, string $newPrefix):
$linkedNodes->forEach(
static function (DOMNode $node) use ($namespaceURI, $newPrefix, $predicate, $root): void {
// Wrapped in a closure so that psalm knows it all...
- $newQname = static fn (DOMNode $node): string => $newPrefix.':'.$node->localName;
+ $newQname = static fn (DOMNode $node): string => $newPrefix.':'.non_empty_string()->assert($node->localName);
if (is_attribute($node)) {
rename_node($node, $newQname($node), $namespaceURI);
diff --git a/src/Xml/Dom/Xpath.php b/src/Xml/Dom/Xpath.php
index fed63003..ff3907a7 100644
--- a/src/Xml/Dom/Xpath.php
+++ b/src/Xml/Dom/Xpath.php
@@ -61,9 +61,8 @@ public function locate(callable $locator)
}
/**
- * @template T of DOMNode
* @throws RuntimeException
- * @return NodeList
+ * @return NodeList
*/
public function query(string $expression, DOMNode $contextNode = null): NodeList
{
diff --git a/src/Xml/Dom/Xpath/Locator/query.php b/src/Xml/Dom/Xpath/Locator/query.php
index dba169a1..80cda80e 100644
--- a/src/Xml/Dom/Xpath/Locator/query.php
+++ b/src/Xml/Dom/Xpath/Locator/query.php
@@ -8,30 +8,27 @@
use DOMNodeList;
use DOMXPath;
use VeeWee\Xml\Dom\Collection\NodeList;
+use function VeeWee\Xml\Dom\Assert\assert_dom_node_list;
use function VeeWee\Xml\ErrorHandling\disallow_issues;
use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns;
/**
- * @template T of DOMNode
- * @return \Closure(DOMXPath): NodeList
+ * @return \Closure(DOMXPath): NodeList
*/
function query(string $query, DOMNode $node = null): Closure
{
- return
- /**
- * @return NodeList
- */
- static function (DOMXPath $xpath) use ($query, $node): NodeList {
- $node = $node ?? $xpath->document->documentElement;
+ return static function (DOMXPath $xpath) use ($query, $node): NodeList {
+ $node = $node ?? $xpath->document->documentElement;
- /** @var DOMNodeList $list */
- $list = disallow_issues(
- static fn (): DOMNodeList => disallow_libxml_false_returns(
+ $list = disallow_issues(
+ static fn (): DOMNodeList => assert_dom_node_list(
+ disallow_libxml_false_returns(
$xpath->query($query, $node),
'Failed querying XPath query: '.$query
- ),
- );
+ )
+ ),
+ );
- return NodeList::fromDOMNodeList($list);
- };
+ return NodeList::fromDOMNodeList($list);
+ };
}
diff --git a/src/Xml/Dom/Xpath/Locator/query_single.php b/src/Xml/Dom/Xpath/Locator/query_single.php
index fb8e2bd9..b261ba6d 100644
--- a/src/Xml/Dom/Xpath/Locator/query_single.php
+++ b/src/Xml/Dom/Xpath/Locator/query_single.php
@@ -11,6 +11,7 @@
use VeeWee\Xml\Exception\RuntimeException;
use Webmozart\Assert\Assert;
use function Psl\Str\format;
+use function VeeWee\Xml\Dom\Assert\assert_dom_node_list;
use function VeeWee\Xml\ErrorHandling\disallow_issues;
use function VeeWee\Xml\ErrorHandling\disallow_libxml_false_returns;
@@ -27,9 +28,11 @@ function query_single(string $query, DOMNode $node = null): Closure
static function (DOMXPath $xpath) use ($query, $node): DOMNode {
$node = $node ?? $xpath->document->documentElement;
$list = disallow_issues(
- static fn (): DOMNodeList => disallow_libxml_false_returns(
- $xpath->query($query, $node),
- 'Failed querying XPath query: '.$query
+ static fn (): DOMNodeList => assert_dom_node_list(
+ disallow_libxml_false_returns(
+ $xpath->query($query, $node),
+ 'Failed querying XPath query: '.$query
+ )
),
);
diff --git a/src/Xml/Encoding/Internal/Decoder/Builder/group_child_elements.php b/src/Xml/Encoding/Internal/Decoder/Builder/group_child_elements.php
index 18de39d9..61d55117 100644
--- a/src/Xml/Encoding/Internal/Decoder/Builder/group_child_elements.php
+++ b/src/Xml/Encoding/Internal/Decoder/Builder/group_child_elements.php
@@ -8,11 +8,13 @@
use function VeeWee\Xml\Dom\Locator\Element\children;
/**
+ * @psalm-type GroupedElements=array>
* @psalm-internal VeeWee\Xml\Encoding
- * @return array>
+ * @return GroupedElements
*/
function group_child_elements(DOMElement $element): array
{
+ /** @var GroupedElements $grouped */
$grouped = [];
foreach (children($element) as $child) {
$key = name($child);
diff --git a/src/Xml/ErrorHandling/stop_on_first_issue.php b/src/Xml/ErrorHandling/stop_on_first_issue.php
index f55ef8b2..1bbb5565 100644
--- a/src/Xml/ErrorHandling/stop_on_first_issue.php
+++ b/src/Xml/ErrorHandling/stop_on_first_issue.php
@@ -23,6 +23,8 @@
* @psalm-param (callable(): ?Tr) $run
* @psalm-return Generator
*
+ * @psalm-suppress InvalidReturnType - Psalm gets lost here and thinks it returns "never"
+ *
* @throws RuntimeException
*/
function stop_on_first_issue(callable $tick, callable $run): Generator
diff --git a/src/bootstrap.php b/src/bootstrap.php
index 4151db28..61adf9de 100644
--- a/src/bootstrap.php
+++ b/src/bootstrap.php
@@ -1,6 +1,8 @@
$iterable
- * @psalm-param (callable(Ts, Tk, Tv): Ts) $function
- * @psalm-param Ts $initial
- *
- * @psalm-return Ts
- */
- function reduce_with_keys(iterable $iterable, callable $function, $initial) {}
-}
diff --git a/stubs/XMLReader.phpstub b/stubs/XMLReader.phpstub
index ab8bbcd1..7e008bc8 100644
--- a/stubs/XMLReader.phpstub
+++ b/stubs/XMLReader.phpstub
@@ -6,6 +6,21 @@
*/
class XMLReader
{
+ public readonly int $attributeCount;
+ public readonly string $baseURI;
+ public readonly int $depth;
+ public readonly bool $hasAttributes;
+ public readonly bool $hasValue;
+ public readonly bool $isDefault;
+ public readonly bool $isEmptyElement;
+ public readonly string $localName;
+ public readonly string $name;
+ public readonly string $namespaceURI;
+ public readonly int $nodeType;
+ public readonly string $prefix;
+ public readonly string $value;
+ public readonly string $xmlLang;
+
public static function open(string $source, ?string $encoding = null, int $flags = 0): XMLReader|false;
public static function XML(string $uri, ?string $encoding = null, int $flags = 0): XMLReader|false;
}
diff --git a/tools/infection.phar b/tools/infection.phar
index 1f81235d..3760596f 100755
Binary files a/tools/infection.phar and b/tools/infection.phar differ
diff --git a/tools/php-cs-fixer.phar b/tools/php-cs-fixer.phar
index 4ccc63bd..7912db6c 100755
Binary files a/tools/php-cs-fixer.phar and b/tools/php-cs-fixer.phar differ
diff --git a/tools/phpunit.phar b/tools/phpunit.phar
index 31848e4c..ccd14314 100755
--- a/tools/phpunit.phar
+++ b/tools/phpunit.phar
@@ -19,7 +19,7 @@ if (version_compare('7.3.0', PHP_VERSION, '>')) {
fwrite(
STDERR,
sprintf(
- 'PHPUnit 9.5.25 by Sebastian Bergmann and contributors.' . PHP_EOL . PHP_EOL .
+ 'PHPUnit 9.5.27 by Sebastian Bergmann and contributors.' . PHP_EOL . PHP_EOL .
'This version of PHPUnit requires PHP >= 7.3.' . PHP_EOL .
'You are using PHP %s (%s).' . PHP_EOL,
PHP_VERSION,
@@ -67,9 +67,9 @@ if (isset($options['manifest'])) {
unset($options);
define('__PHPUNIT_PHAR__', str_replace(DIRECTORY_SEPARATOR, '/', __FILE__));
-define('__PHPUNIT_PHAR_ROOT__', 'phar://phpunit-9.5.25.phar');
+define('__PHPUNIT_PHAR_ROOT__', 'phar://phpunit-9.5.27.phar');
-Phar::mapPhar('phpunit-9.5.25.phar');
+Phar::mapPhar('phpunit-9.5.27.phar');
spl_autoload_register(
function ($class) {
@@ -200,6 +200,7 @@ spl_autoload_register(
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => '/phpunit/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => '/phpunit/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => '/phpunit/Framework/MockObject/Exception/ClassIsFinalException.php',
+ 'PHPUnit\\Framework\\MockObject\\ClassIsReadonlyException' => '/phpunit/Framework/MockObject/Exception/ClassIsReadonlyException.php',
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => '/phpunit/Framework/MockObject/ConfigurableMethod.php',
'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => '/phpunit/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => '/phpunit/Framework/MockObject/Exception/DuplicateMethodException.php',
@@ -1106,7 +1107,6 @@ spl_autoload_register(
'Prophecy\\Doubler\\CachedDoubler' => '/phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php',
'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php',
'Prophecy\\Doubler\\ClassPatch\\DisableConstructorPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php',
- 'Prophecy\\Doubler\\ClassPatch\\HhvmExceptionPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php',
'Prophecy\\Doubler\\ClassPatch\\KeywordPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/KeywordPatch.php',
'Prophecy\\Doubler\\ClassPatch\\MagicCallPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/MagicCallPatch.php',
'Prophecy\\Doubler\\ClassPatch\\ProphecySubjectPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php',
@@ -1176,7 +1176,7 @@ spl_autoload_register(
}
if (isset($classes[$class])) {
- require_once 'phar://phpunit-9.5.25.phar' . $classes[$class];
+ require_once 'phar://phpunit-9.5.27.phar' . $classes[$class];
}
},
true,
@@ -1307,6 +1307,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy
'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => '/phpunit/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => '/phpunit/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => '/phpunit/Framework/MockObject/Exception/ClassIsFinalException.php',
+ 'PHPUnit\\Framework\\MockObject\\ClassIsReadonlyException' => '/phpunit/Framework/MockObject/Exception/ClassIsReadonlyException.php',
'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => '/phpunit/Framework/MockObject/ConfigurableMethod.php',
'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => '/phpunit/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => '/phpunit/Framework/MockObject/Exception/DuplicateMethodException.php',
@@ -2213,7 +2214,6 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy
'Prophecy\\Doubler\\CachedDoubler' => '/phpspec-prophecy/Prophecy/Doubler/CachedDoubler.php',
'Prophecy\\Doubler\\ClassPatch\\ClassPatchInterface' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php',
'Prophecy\\Doubler\\ClassPatch\\DisableConstructorPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php',
- 'Prophecy\\Doubler\\ClassPatch\\HhvmExceptionPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php',
'Prophecy\\Doubler\\ClassPatch\\KeywordPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/KeywordPatch.php',
'Prophecy\\Doubler\\ClassPatch\\MagicCallPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/MagicCallPatch.php',
'Prophecy\\Doubler\\ClassPatch\\ProphecySubjectPatch' => '/phpspec-prophecy/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php',
@@ -2280,7 +2280,7 @@ foreach (['PHPUnit\\DeepCopy\\DeepCopy' => '/myclabs-deep-copy/DeepCopy/DeepCopy
'Prophecy\\Prophet' => '/phpspec-prophecy/Prophecy/Prophet.php',
'Prophecy\\Util\\ExportUtil' => '/phpspec-prophecy/Prophecy/Util/ExportUtil.php',
'Prophecy\\Util\\StringUtil' => '/phpspec-prophecy/Prophecy/Util/StringUtil.php'] as $file) {
- require_once 'phar://phpunit-9.5.25.phar' . $file;
+ require_once 'phar://phpunit-9.5.27.phar' . $file;
}
require __PHPUNIT_PHAR_ROOT__ . '/phpunit/Framework/Assert/Functions.php';
@@ -2304,101 +2304,100 @@ if ($execute) {
}
__HALT_COMPILER(); ?>
-j phpunit-9.5.25.phar L doctrine-instantiator/Doctrine/Instantiator/Exception/ExceptionInterface.php /c b R doctrine-instantiator/Doctrine/Instantiator/Exception/InvalidArgumentException.php /c R doctrine-instantiator/Doctrine/Instantiator/Exception/UnexpectedValueException.php: /c: _Y%[ <