Files
pest/tests/Features/Skip.php
2024-10-13 00:41:04 -04:00

127 lines
3.5 KiB
PHP

<?php
beforeEach(function () {
$this->shouldSkip = true;
});
it('do not skips')
->skip(false)
->assertTrue(true);
it('skips with truthy')
->skip(1)
->assertTrue(false);
it('skips with truthy condition by default')
->skip()
->assertTrue(false);
it('skips with message')
->skip('skipped because bar')
->assertTrue(false);
it('skips with truthy closure condition')
->skip(function () {
return '1';
})
->assertTrue(false);
it('do not skips with falsy closure condition')
->skip(function () {
return false;
})
->assertTrue(true);
it('skips with condition and message')
->skip(true, 'skipped because foo')
->assertTrue(false);
it('skips when skip after assertion')
->assertTrue(true)
->skip();
it('can use something in the test case as a condition')
->skip(function () {
return $this->shouldSkip;
}, 'This test was skipped')
->assertTrue(false);
it('can user higher order callables and skip')
->skip(function () {
return $this->shouldSkip;
})
->expect(function () {
return $this->shouldSkip;
})
->toBeFalse();
describe('skip on describe', function () {
beforeEach(function () {
$this->ran = false;
});
afterEach(function () {
match ($this->name()) {
'__pest_evaluable__skip_on_describe__→__skipped_tests__→__nested_inside_skipped_block__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__skip_on_describe__→__skipped_tests__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__skip_on_describe__→_it_should_execute' => expect($this->ran)->toBe(true),
default => $this->fail('Unexpected test name: '.$this->name()),
};
});
describe('skipped tests', function () {
describe('nested inside skipped block', function () {
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
})->skip();
it('should execute', function () {
$this->ran = true;
expect($this->ran)->toBe(true);
});
});
describe('skip on beforeEach', function () {
beforeEach(function () {
$this->ran = false;
});
afterEach(function () {
match ($this->name()) {
'__pest_evaluable__skip_on_beforeEach__→__skipped_tests__→__nested_inside_skipped_block__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__skip_on_beforeEach__→__skipped_tests__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__skip_on_beforeEach__→_it_should_execute' => expect($this->ran)->toBe(true),
default => $this->fail('Unexpected test name: '.$this->name()),
};
});
describe('skipped tests', function () {
beforeEach()->skip();
describe('nested inside skipped block', function () {
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should execute', function () {
$this->ran = true;
expect($this->ran)->toBe(true);
});
});