diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9c9d0d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/.phpunit.result.cache +/composer.lock +/vendor/ diff --git a/.travis.yml b/.travis.yml index 73d5453..a603f23 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,19 @@ language: php -sudo: false - cache: directories: - $HOME/.composer/cache php: + - 7.4 + - 7.3 + - 7.2 - 7.1 - 7.0 - 5.6 - - hhvm matrix: fast_finish: true - allow_failures: - - php: hhvm install: - composer require squizlabs/php_codesniffer @@ -25,4 +23,3 @@ script: - vendor/bin/phpunit - vendor/bin/phpcs --standard=PSR2 classes/ tests/ - vendor/bin/phpmd classes/ text cleancode,codesize,controversial,design,naming,unusedcode - diff --git a/classes/MockDelegateFunctionBuilder.php b/classes/MockDelegateFunctionBuilder.php index 6784132..392f787 100644 --- a/classes/MockDelegateFunctionBuilder.php +++ b/classes/MockDelegateFunctionBuilder.php @@ -3,6 +3,7 @@ namespace phpmock\integration; use phpmock\generator\ParameterBuilder; +use SebastianBergmann\Template\Template; /** * Defines a MockDelegateFunction. @@ -26,7 +27,7 @@ class MockDelegateFunctionBuilder private $namespace; /** - * @var \Text_Template The MockDelegateFunction template. + * @var Template The MockDelegateFunction template. */ private $template; @@ -35,7 +36,7 @@ class MockDelegateFunctionBuilder */ public function __construct() { - $this->template = new \Text_Template(__DIR__ . "/MockDelegateFunction.tpl"); + $this->template = new Template(__DIR__ . '/MockDelegateFunction.tpl'); } /** @@ -56,7 +57,7 @@ public function build($functionName = null) * to the generated class. */ $hash = md5($signatureParameters); - $this->namespace = __NAMESPACE__.$hash; + $this->namespace = __NAMESPACE__ . $hash; if (class_exists($this->getFullyQualifiedClassName())) { return; } diff --git a/composer.json b/composer.json index cf1a32c..2ee9669 100644 --- a/composer.json +++ b/composer.json @@ -16,13 +16,17 @@ "autoload": { "psr-4": {"phpmock\\integration\\": "classes/"} }, + "autoload-dev": { + "files": ["tests/autoload.php"], + "psr-4": {"phpmock\\integration\\": "tests/"} + }, "require": { "php": ">=5.6", - "php-mock/php-mock": "^2", - "phpunit/php-text-template": "^1" + "php-mock/php-mock": "^2.2", + "phpunit/php-text-template": "^1 || ^2" }, "require-dev": { - "phpunit/phpunit": "^4|^5" + "phpunit/phpunit": "^5.7.27 || ^6 || ^7 || ^8 || ^9" }, "archive": { "exclude": ["/tests"] diff --git a/tests/MockDelegateFunctionBuilderTest.php b/tests/MockDelegateFunctionBuilderTest.php index e911f96..1aaef23 100644 --- a/tests/MockDelegateFunctionBuilderTest.php +++ b/tests/MockDelegateFunctionBuilderTest.php @@ -2,6 +2,8 @@ namespace phpmock\integration; +use PHPUnit\Framework\TestCase; + /** * Tests MockDelegateFunctionBuilder. * @@ -10,7 +12,7 @@ * @license http://www.wtfpl.net/txt/copying/ WTFPL * @see MockDelegateFunctionBuilder */ -class MockDelegateFunctionBuilderTest extends \PHPUnit_Framework_TestCase +class MockDelegateFunctionBuilderTest extends TestCase { /** @@ -34,14 +36,14 @@ public function testDiverseSignaturesProduceDifferentClasses() { $builder = new MockDelegateFunctionBuilder(); - $builder->build(create_function('', '')); + $builder->build('f0'); $class1 = $builder->getFullyQualifiedClassName(); - $builder->build(create_function('$a', '')); + $builder->build('f1'); $class2 = $builder->getFullyQualifiedClassName(); $builder2 = new MockDelegateFunctionBuilder(); - $builder2->build(create_function('$a, $b', '')); + $builder2->build('f2'); $class3 = $builder2->getFullyQualifiedClassName(); $this->assertNotEquals($class1, $class2); @@ -56,13 +58,12 @@ public function testDiverseSignaturesProduceDifferentClasses() */ public function testSameSignaturesProduceSameClass() { - $signature = '$a'; $builder = new MockDelegateFunctionBuilder(); - $builder->build(create_function($signature, '')); + $builder->build('f1'); $class1 = $builder->getFullyQualifiedClassName(); - $builder->build(create_function($signature, '')); + $builder->build('f1'); $class2 = $builder->getFullyQualifiedClassName(); $this->assertEquals($class1, $class2); @@ -74,6 +75,8 @@ public function testSameSignaturesProduceSameClass() * @test * @backupStaticAttributes enabled * @dataProvider provideTestBackupStaticAttributes + * + * @doesNotPerformAssertions */ public function testBackupStaticAttributes() { @@ -100,6 +103,8 @@ public function provideTestBackupStaticAttributes() * @test * @runInSeparateProcess * @dataProvider provideTestDeserializationInNewProcess + * + * @doesNotPerformAssertions */ public function testDeserializationInNewProcess($data) { diff --git a/tests/MockDelegateFunctionTest.php b/tests/MockDelegateFunctionTest.php index 38952a7..ba3ab7b 100644 --- a/tests/MockDelegateFunctionTest.php +++ b/tests/MockDelegateFunctionTest.php @@ -2,6 +2,8 @@ namespace phpmock\integration; +use PHPUnit\Framework\TestCase; + /** * Tests MockDelegateFunction. * @@ -10,15 +12,16 @@ * @license http://www.wtfpl.net/txt/copying/ WTFPL * @see MockDelegateFunction */ -class MockDelegateFunctionTest extends \PHPUnit_Framework_TestCase +class MockDelegateFunctionTest extends TestCase { + use TestCaseTrait; /** * @var string The class name of a generated class. */ private $className; - protected function setUp() + protected function setUpCompat() { parent::setUp(); diff --git a/tests/TestCaseNoTypeHintTrait.php b/tests/TestCaseNoTypeHintTrait.php new file mode 100644 index 0000000..a4eb821 --- /dev/null +++ b/tests/TestCaseNoTypeHintTrait.php @@ -0,0 +1,23 @@ +setUpCompat(); + } + } + + protected function tearDown() + { + if (method_exists($this, 'tearDownCompat')) { + $this->tearDownCompat(); + } + } +} diff --git a/tests/TestCaseTypeHintTrait.php b/tests/TestCaseTypeHintTrait.php new file mode 100644 index 0000000..a92ad97 --- /dev/null +++ b/tests/TestCaseTypeHintTrait.php @@ -0,0 +1,23 @@ +setUpCompat(); + } + } + + protected function tearDown(): void + { + if (method_exists($this, 'tearDownCompat')) { + $this->tearDownCompat(); + } + } +} diff --git a/tests/autoload.php b/tests/autoload.php new file mode 100644 index 0000000..94a6d2d --- /dev/null +++ b/tests/autoload.php @@ -0,0 +1,25 @@ += 0 +) { + class_alias(\phpmock\integration\TestCaseTypeHintTrait::class, \phpmock\integration\TestCaseTrait::class); +} else { + class_alias(\phpmock\integration\TestCaseNoTypeHintTrait::class, \phpmock\integration\TestCaseTrait::class); +} + +function f0() +{ +} +function f1($a) +{ +} +function f2($a, $b) +{ +}