Skip to content

Commit

Permalink
Add methods like in SetUpTearDownTrait (mainline) (#5)
Browse files Browse the repository at this point in the history
  • Loading branch information
sanmai committed Dec 11, 2020
1 parent ad51c16 commit 554959a
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 31 deletions.
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,55 +26,55 @@ First, update your tests to extend from `\LegacyPHPUnit\TestCase` instead of `\P
+ class MyTest extends \LegacyPHPUnit\TestCase
```

Then, where you had to use `setUp(): void` template method, use `legacySetUp()` method, omitting all any any return types in a fully backward-compatible way.
Then, where you had to use `setUp(): void` template method, use `doSetUp()` method, omitting all any any return types in a fully backward-compatible way.

```diff
- protected function setUp(): void
+ protected function legacySetUp()
+ protected function doSetUp()
```

There are similar replacements for most other template method:

```diff
- public static function setUpBeforeClass(): void
+ public static function legacySetUpBeforeClass()
+ public static function doSetUpBeforeClass()
```

```diff
- public static function tearDownAfterClass(): void
+ public static function legacyTearDownAfterClass()
+ public static function doTearDownAfterClass()
```

```diff
- protected function setUp(): void
+ protected function legacySetUp()
+ protected function doSetUp()
```

```diff
- protected function tearDown(): void
+ protected function legacyTearDown()
+ protected function doTearDown()
```

```diff
- protected function assertPreConditions(): void
+ protected function legacyAssertPreConditions()
+ protected function doAssertPreConditions()
```

```diff
- protected function assertPostConditions(): void
+ protected function legacyAssertPostConditions()
+ protected function doAssertPostConditions()
```

### Reference

| Method | Replacement |
| ----------- | ----------------------------- |
| `setUpBeforeClass(): void` | `legacySetUpBeforeClass()` |
| `tearDownAfterClass(): void` | `legacyTearDownAfterClass()` |
| `setUp(): void` | `legacySetUp()` |
| `tearDown(): void` | `legacyTearDown()` |
| `assertPreConditions(): void` | `legacyAssertPreConditions()` |
| `assertPostConditions(): void` | `legacyAssertPostConditions()` |
| `setUpBeforeClass(): void` | `doSetUpBeforeClass()` |
| `tearDownAfterClass(): void` | `doTearDownAfterClass()` |
| `setUp(): void` | `doSetUp()` |
| `tearDown(): void` | `doTearDown()` |
| `assertPreConditions(): void` | `doAssertPreConditions()` |
| `assertPostConditions(): void` | `doAssertPostConditions()` |


### Supported versions
Expand Down
56 changes: 41 additions & 15 deletions src/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,57 +27,83 @@ public static function setUpBeforeClass(): void
static::legacySetUpBeforeClass();
}

public static function legacySetUpBeforeClass()
/** {@inheritdoc} */
public static function tearDownAfterClass(): void
{
static::legacyTearDownAfterClass();
}

/** {@inheritdoc} */
public static function tearDownAfterClass(): void
protected function setUp(): void
{
static::legacyTearDownAfterClass();
$this->legacySetUp();
}

public static function legacyTearDownAfterClass()
/** {@inheritdoc} */
protected function tearDown(): void
{
$this->legacyTearDown();
}

/** {@inheritdoc} */
protected function setUp(): void
protected function assertPreConditions(): void
{
$this->legacyAssertPreConditions();
}

/** {@inheritdoc} */
protected function assertPostConditions(): void
{
$this->legacyAssertPostConditions();
}

// All replacement methods should go below. They better to be in a trait, but we don't have traits in PHP 5.3.

public static function legacySetUpBeforeClass()
{
}

public static function doSetUpBeforeClass()
{
}

public static function legacyTearDownAfterClass()
{
}

public static function doTearDownAfterClass()
{
$this->legacySetUp();
}

protected function legacySetUp()
{
}

/** {@inheritdoc} */
protected function tearDown(): void
protected function doSetUp()
{
$this->legacyTearDown();
}

protected function legacyTearDown()
{
}

/** {@inheritdoc} */
protected function assertPreConditions(): void
protected function doTearDown()
{
$this->legacyAssertPreConditions();
}

protected function legacyAssertPreConditions()
{
}

/** {@inheritdoc} */
protected function assertPostConditions(): void
protected function doAssertPreConditions()
{
$this->legacyAssertPostConditions();
}

protected function legacyAssertPostConditions()
{
}

protected function doAssertPostConditions()
{
}
}
51 changes: 49 additions & 2 deletions tests/Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,41 @@
*/
final class Test extends TestCase
{
const EXPECTED_SEQUENCE_LEN = 12;

private const EXPECTED_SEQUENCE = [
'::legacySetUpBeforeClass',
'::doSetUpBeforeClass',

'::legacySetUp',
'::doSetUp',

'::legacyAssertPreConditions',
'::doAssertPreConditions',

'::legacyAssertPostConditions',
'::doAssertPostConditions',

'::legacyTearDown',
'::doTearDown',

'::legacyTearDownAfterClass',
'::doTearDownAfterClass',
];

private static $callSequence = [];

public function testExample(): void
{
if (self::EXPECTED_SEQUENCE_LEN !== \count(self::getExpectedCallSequence())) {
$this->fail(\sprintf('EXPECTED_SEQUENCE_LEN needs an update to %d', \count(self::getExpectedCallSequence())));
}

$this->assertTrue(\count(self::$callSequence) > 0);

if (\count(self::$callSequence) > \count(self::EXPECTED_SEQUENCE)) {
if (\count(self::$callSequence) > self::EXPECTED_SEQUENCE_LEN) {
$this->assertSame(
\array_slice(self::$callSequence, 0, \count(self::EXPECTED_SEQUENCE)),
\array_slice(self::$callSequence, 0, self::EXPECTED_SEQUENCE_LEN),
self::getExpectedCallSequence()
);
}
Expand Down Expand Up @@ -72,28 +89,58 @@ public static function legacySetUpBeforeClass()
self::add(__METHOD__);
}

public static function doSetUpBeforeClass()
{
self::add(__METHOD__);
}

public static function legacyTearDownAfterClass()
{
self::add(__METHOD__);
}

public static function doTearDownAfterClass()
{
self::add(__METHOD__);
}

protected function legacySetUp()
{
self::add(__METHOD__);
}

protected function doSetUp()
{
self::add(__METHOD__);
}

protected function legacyTearDown()
{
self::add(__METHOD__);
}

protected function doTearDown()
{
self::add(__METHOD__);
}

protected function legacyAssertPreConditions()
{
self::add(__METHOD__);
}

protected function doAssertPreConditions()
{
self::add(__METHOD__);
}

protected function legacyAssertPostConditions()
{
self::add(__METHOD__);
}

protected function doAssertPostConditions()
{
self::add(__METHOD__);
}
}

0 comments on commit 554959a

Please sign in to comment.