Skip to content

Commit

Permalink
Test PHP 8.3 language features
Browse files Browse the repository at this point in the history
Signed-off-by: Nathanael Esayeas <nathanael.esayeas@protonmail.com>
  • Loading branch information
ghostwriter committed Jul 24, 2023
1 parent a3402a6 commit 03da3dd
Show file tree
Hide file tree
Showing 9 changed files with 68 additions and 46 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"autoload-dev": {
"psr-4": {
"Fixture\\": "tests/Fixture/",
"Mockery\\Tests\\Unit\\": "tests/Unit",
"test\\": "tests/"
},
"files": [
Expand Down
12 changes: 6 additions & 6 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 6 additions & 4 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,24 @@
<exclude>./tests/PHP80</exclude>
<exclude>./tests/PHP81</exclude>
<exclude>./tests/PHP82</exclude>
<exclude>./tests/PHP83</exclude>
<exclude>./tests/Unit/PHP81</exclude>
<exclude>./tests/Unit/PHP83</exclude>
</testsuite>
<testsuite name="Mockery Test Suite PHP80">
<directory phpVersion="8.0.0-dev" phpVersionOperator="&gt;=">./tests</directory>
<exclude>./tests/PHP81</exclude>
<exclude>./tests/PHP82</exclude>
<exclude>./tests/PHP83</exclude>
<exclude>./tests/Unit/PHP81</exclude>
<exclude>./tests/Unit/PHP83</exclude>
</testsuite>
<testsuite name="Mockery Test Suite PHP81">
<directory phpVersion="8.1.0-dev" phpVersionOperator="&gt;=">./tests</directory>
<exclude>./tests/PHP82</exclude>
<exclude>./tests/PHP83</exclude>
<exclude>./tests/Unit/PHP83</exclude>
</testsuite>
<testsuite name="Mockery Test Suite PHP82">
<directory phpVersion="8.2.0-dev" phpVersionOperator="&gt;=">./tests</directory>
<exclude>./tests/PHP83</exclude>
<exclude>./tests/Unit/PHP83</exclude>
</testsuite>
<testsuite name="Mockery Test Suite PHP83">
<directory phpVersion="8.3.0-dev" phpVersionOperator="&gt;=">./tests</directory>
Expand Down
7 changes: 7 additions & 0 deletions tests/Fixture/PHP83/ClassName.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

namespace Fixture\PHP83;

class ClassName {
public const CONSTANT = 42;
}
7 changes: 7 additions & 0 deletions tests/Fixture/PHP83/Classes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

namespace Fixture\PHP83;

class Classes implements Interfaces {
use Traits;
}
7 changes: 7 additions & 0 deletions tests/Fixture/PHP83/Enums.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?php

namespace Fixture\PHP83;

enum Enums {
const string FOO = "bar";
}
9 changes: 9 additions & 0 deletions tests/Fixture/PHP83/Interfaces.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

namespace Fixture\PHP83;

interface Interfaces {
const string BAR = Enums::FOO;

public function foo(): string;
}
12 changes: 12 additions & 0 deletions tests/Fixture/PHP83/Traits.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace Fixture\PHP83;

trait Traits {
const string BAR = Enums::FOO;

public function foo(): string
{
return Interfaces::BAR;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

declare(strict_types=1);

namespace test\Mockery;
namespace Mockery\Tests\Unit\PHP83;

use Mockery;
use Fixture\PHP83\Classes;
use Fixture\PHP83\ClassName;
use Fixture\PHP83\Enums;
use Fixture\PHP83\Interfaces;
use Fixture\PHP83\Traits;
use Mockery\Adapter\Phpunit\MockeryTestCase;
use Mockery\Exception;

Expand All @@ -13,16 +17,6 @@
*/
class Php83LanguageFeaturesTest extends MockeryTestCase
{
/**
* Enumerations ( enum ) are final classes and therefore cannot be mocked.
*/
public function testCanNotMockEnumsFinalClasses(): void
{
$this->expectException(Exception::class);

mock(Enums::class);
}

public function testCanMockClassTypedClassConstants(): void
{
$mock = mock(Classes::class);
Expand Down Expand Up @@ -58,31 +52,14 @@ public function testCanMockWithDynamicClassConstantFetch(): void
self::assertSame(ClassName::{$constant}, $mock::CONSTANT);
self::assertSame(ClassName::{$constant}, $mock::{$constant});
}
}

enum Enums {
const string FOO = "bar";
}

class Classes implements Interfaces {
use Traits;
}

interface Interfaces {
const string BAR = Enums::FOO;

public function foo(): string;
}

trait Traits {
const string BAR = Enums::FOO;

public function foo(): string
/**
* Enumerations ( enum ) are final classes and therefore cannot be mocked.
*/
public function testCanNotMockEnumsFinalClasses(): void
{
return Interfaces::BAR;
}
}
$this->expectException(Exception::class);

class ClassName {
public const CONSTANT = 42;
mock(Enums::class);
}
}

0 comments on commit 03da3dd

Please sign in to comment.