upgrade to php 8.2 and phpunit 11

This commit is contained in:
Kacper Donat 2026-10-27 22:04:21 +01:00
parent 12918eb3cb
commit 8e824ef93c
13 changed files with 961 additions and 1054 deletions

1
.gitignore vendored
View File

@ -6,3 +6,4 @@
/node_modules/
test.*.php
.phpunit.cache

View File

@ -1,8 +0,0 @@
#!/usr/bin/env php
<?php
require_once __DIR__.'/../vendor/autoload.php';
use Kadet\Functional as f;
use Kadet\Functional\Predicates as p;
eval(\Psy\sh());

View File

@ -10,11 +10,12 @@
}
],
"require": {
"php": ">=7.1"
"php": ">=8.2"
},
"require-dev": {
"phpunit/phpunit": "^7.0",
"psy/psysh": "@stable"
"phpunit/phpunit": "^11.5",
"php-ds/php-ds": "^2.0",
"phpstan/phpstan": "^2.1"
},
"autoload": {
"psr-4": {
@ -24,5 +25,8 @@
"./src/functions.php",
"./src/Predicates/index.php"
]
},
"suggest": {
"php-ds/php-ds": "^2.0 (or ext-ds) for Seq/Map/Set results"
}
}

1906
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,13 @@
<phpunit bootstrap="tests/bootstrap.php">
<?xml version="1.0"?>
<phpunit bootstrap="tests/bootstrap.php" cacheDirectory=".phpunit.cache">
<testsuites>
<testsuite name="all">
<directory>tests</directory>
</testsuite>
</testsuites><filter>
<whitelist processUncoveredFilesFromWhitelist="true">
</testsuites>
<source>
<include>
<directory suffix=".php">src</directory>
</whitelist>
</filter>
</include>
</source>
</phpunit>

View File

@ -21,9 +21,7 @@ class ConstantPredicateTest extends PHPUnit\Framework\TestCase
};
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testNeverAndPredicate(...$args)
{
$predicate = ConstantPredicate::never()->and($this->getTestPredicate());
@ -31,9 +29,7 @@ class ConstantPredicateTest extends PHPUnit\Framework\TestCase
$this->assertFalse($predicate(...$args));
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testNeverOrPredicate(...$args)
{
$predicate = predicate($this->getTestPredicate());
@ -42,9 +38,7 @@ class ConstantPredicateTest extends PHPUnit\Framework\TestCase
$this->assertSame($predicate(...$args), $tested(...$args));
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testAlwaysOrPredicate(...$args)
{
$predicate = ConstantPredicate::always()->or($this->getTestPredicate());
@ -52,9 +46,7 @@ class ConstantPredicateTest extends PHPUnit\Framework\TestCase
$this->assertTrue($predicate(...$args));
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testAlwaysAndPredicate(...$args)
{
$predicate = predicate($this->getTestPredicate());
@ -63,9 +55,7 @@ class ConstantPredicateTest extends PHPUnit\Framework\TestCase
$this->assertSame($predicate(...$args), $tested(...$args));
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testNever(...$args)
{
$tested = ConstantPredicate::never();
@ -73,9 +63,7 @@ class ConstantPredicateTest extends PHPUnit\Framework\TestCase
$this->assertFalse($tested(...$args));
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testNotAlways(...$args)
{
$tested = ConstantPredicate::always()->not();
@ -83,9 +71,7 @@ class ConstantPredicateTest extends PHPUnit\Framework\TestCase
$this->assertFalse($tested(...$args));
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testNotNever(...$args)
{
$tested = ConstantPredicate::never()->not();
@ -93,9 +79,7 @@ class ConstantPredicateTest extends PHPUnit\Framework\TestCase
$this->assertTrue($tested(...$args));
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testAlways(...$args)
{
$tested = ConstantPredicate::always();

View File

@ -19,7 +19,7 @@ class CurriedFunctionTest extends \PHPUnit\Framework\TestCase
private $variadic;
private $optional;
protected function setUp()
protected function setUp(): void
{
$this->function = function ($a, $b, $c, $d) {
return $a . $b . $c . $d;

View File

@ -14,12 +14,9 @@ class FunctionPipelineTest extends \PHPUnit\Framework\TestCase
/** @var \PHPUnit\Framework\MockObject\MockObject */
private $mock;
protected function setUp()/* The :void return type declaration that should be here would cause a BC issue */
protected function setUp(): void
{
$this->mock = $this
->getMockBuilder('stdClass')
->setMethods(['a', 'b', 'c'])
->getMock();
$this->mock = $this->createMock(PipelineSteps::class);
}
public function testPipelineCalling()
@ -93,3 +90,10 @@ class FunctionPipelineTest extends \PHPUnit\Framework\TestCase
$this->assertSame('d', $second('a'));
}
}
class PipelineSteps
{
public function a() {}
public function b() {}
public function c() {}
}

View File

@ -14,12 +14,9 @@ class MemoizedFunctionTest extends \PHPUnit\Framework\TestCase
/** @var \PHPUnit\Framework\MockObject\MockObject */
private $mock;
protected function setUp()/* The :void return type declaration that should be here would cause a BC issue */
protected function setUp(): void
{
$this->mock = $this
->getMockBuilder('stdClass')
->setMethods(['memoized'])
->getMock();
$this->mock = $this->createMock(MemoizedTarget::class);
}
public function testCalledOnlyOnce()
@ -37,14 +34,23 @@ class MemoizedFunctionTest extends \PHPUnit\Framework\TestCase
{
$memoized = f\memoize([$this->mock, 'memoized']);
$this->mock->expects($this->exactly(2))->method('memoized')->withConsecutive(
[ 'a' ],
[ [] ]
$calls = [];
$this->mock->expects($this->exactly(2))->method('memoized')->willReturnCallback(
function (...$args) use (&$calls) {
$calls[] = $args;
}
);
for ($i = 0; $i < 10; $i++) {
$memoized('a');
$memoized([]);
}
$this->assertSame([['a'], [[]]], $calls);
}
}
class MemoizedTarget
{
public function memoized() {}
}

View File

@ -39,9 +39,7 @@ class ObjectTransformsTest extends \PHPUnit\Framework\TestCase
{
use RandomDataTrait;
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testFieldTransform($data = null)
{
$object = new PropertiesObject($data, null, []);
@ -50,9 +48,7 @@ class ObjectTransformsTest extends \PHPUnit\Framework\TestCase
$this->assertSame($transform($object), $data);
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testFieldTransformMagic($data = null)
{
$object = new PropertiesObject(false, false, ['magic' => $data]);
@ -61,9 +57,7 @@ class ObjectTransformsTest extends \PHPUnit\Framework\TestCase
$this->assertSame($transform($object), $data);
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testPropertyTransformGetter($data = null)
{
$object = new PropertiesObject(false, $data, []);
@ -72,9 +66,7 @@ class ObjectTransformsTest extends \PHPUnit\Framework\TestCase
$this->assertSame($transform($object), $data);
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testGetterTransform($data = null)
{
$object = new PropertiesObject(false, $data, []);
@ -83,9 +75,7 @@ class ObjectTransformsTest extends \PHPUnit\Framework\TestCase
$this->assertSame($transform($object), $data);
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testPropertyTransformField($data = null)
{
$object = new PropertiesObject($data, false, []);
@ -94,9 +84,7 @@ class ObjectTransformsTest extends \PHPUnit\Framework\TestCase
$this->assertSame($transform($object), $data);
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testPropertyTransformMagic($data = null)
{
$object = new PropertiesObject(false, false, ['magic' => $data]);
@ -105,9 +93,7 @@ class ObjectTransformsTest extends \PHPUnit\Framework\TestCase
$this->assertSame($transform($object), $data);
}
/**
* @dataProvider randomDataProvider
*/
#[\PHPUnit\Framework\Attributes\DataProvider('randomDataProvider')]
public function testMethodTransform($data = null)
{
$object = new PropertiesObject(false, false);

View File

@ -9,7 +9,7 @@
trait RandomDataTrait
{
public function randomDataProvider()
public static function randomDataProvider()
{
return [
['x'],

View File

@ -53,11 +53,9 @@ class ReferencingTest extends \PHPUnit\Framework\TestCase
$this->assertSame('foo', $reference());
}
/**
* @expectedException \Kadet\Functional\Exception\NoAccessException
*/
public function testReferencingPrivateFunctionsFromOutsideOfObject()
{
$this->expectException(\Kadet\Functional\Exception\NoAccessException::class);
$object = new TestObject();
ref([$object, 'priv']);

View File

@ -20,7 +20,7 @@ class ReflectionPartialAppliedFunctionTest extends \PHPUnit\Framework\TestCase
*/
private $function;
protected function setUp()
protected function setUp(): void
{
$this->function = f\partial(function (array $a, array $b, array $c, array $d = ['d']) {
return array_merge($a, $b, $c, $d);