PASS Tests\Arch ✓ preset → php → ignoring ['Pest\Expectation', 'debug_backtrace', 'var_export', …] ✓ preset → strict → ignoring ['usleep'] ✓ preset → security → ignoring ['eval', 'str_shuffle', 'exec', …] ✓ globals ✓ contracts PASS Tests\Environments\Windows ✓ global functions are loaded WARN Tests\Features\After ✓ it can run after test ✓ it can run after test twice - it does not run when skipped - something → it does not run when skipped ✓ something → it can run after test ✓ something 2 → it can run after test ✓ high order test - high order test with skip ✓ post 'foo' → defer Closure Object () → expect Closure Object () → toBe 1 PASS Tests\Features\AfterAll ✓ deletes file after all PASS Tests\Features\AfterEach ✓ it does not get executed before the test ✓ it gets executed after the test ✓ outer → inner → it does not get executed before the test ✓ outer → inner → it should call all parent afterEach functions ✓ matching describe block names → outer → middle → inner → it does not get executed before the test ✓ matching describe block names → outer → middle → inner → it should call all parent afterEach functions ✓ matching describe block names → outer → middle → it does not get executed before the test ✓ matching describe block names → outer → middle → it should not call afterEach functions for sibling describe blocks with the same name ✓ matching describe block names → outer → inner → it does not get executed before the test ✓ matching describe block names → outer → inner → it should not call afterEach functions for descendent of sibling describe blocks with the same name PASS Tests\Features\Assignee ✓ it may be associated with an assignee [@nunomaduro, @taylorotwell] ✓ nested → it may be associated with an assignee [@nunomaduro, @jamesbrooks, @joedixon, @taylorotwell] // an note between an the assignee PASS Tests\Features\BeforeAll ✓ it gets executed before tests ✓ it do not get executed before each test PASS Tests\Features\BeforeEach ✓ it gets executed before each test ✓ it gets executed before each test once again ✓ outer → inner → it should call all parent beforeEach functions ✓ with expectations → nested block → test ✓ with expectations → test ✓ matching describe block names → outer → middle → inner → it should call all parent beforeEach functions ✓ matching describe block names → outer → middle → it should not call beforeEach functions for sibling describe blocks with the same name ✓ matching describe block names → outer → inner → it should not call beforeEach functions for descendent of sibling describe blocks with the same name ✓ matching name → it should call the before each ✓ matching name → it should not call the before each on the describe block with the same name ✓ called on all tests → beforeEach should be called ✓ called on all tests → beforeEach should be called for all tests PASS Tests\Features\BeforeEachProxiesToTestCallWithExpectations ✓ runs 1 ✓ runs 2 ✓ runs 3 WARN Tests\Features\BeforeEachProxiesToTestCallWithSkip - does not run 1 - does not run 2 - does not run 3 TODO Tests\Features\BeforeEachProxiesToTestCallWithTodo - 4 todos ↓ is marked as todo 1 ↓ is marked as todo 2 ↓ is marked as todo 3 ↓ shouldBeMarkedAsTodo WARN Tests\Features\Coverage ✓ it has plugin - it adds coverage if --coverage exist → Coverage is not available ✓ it adds coverage if --min exist ✓ it generates coverage based on file input PASS Tests\Features\Covers\ClassCoverage ✓ it uses the correct PHPUnit attribute for class PASS Tests\Features\Covers\ExceptionHandling ✓ it throws exception if no class nor method has been found PASS Tests\Features\Covers\FunctionCoverage ✓ it uses the correct PHPUnit attribute for function PASS Tests\Features\Covers\GuessCoverage ✓ it guesses if the given argument is a class or function PASS Tests\Features\Covers\TraitCoverage ✓ it uses the correct PHPUnit attribute for trait PASS Tests\Features\DatasetsTests - 1 todo ✓ it throws exception if dataset does not exist ✓ it throws exception if dataset already exist ✓ it sets closures ✓ it sets arrays ✓ it gets bound to test case object with ('a') ✓ it gets bound to test case object with ('b') ✓ it truncates the description with ('FoooFoooFoooFoooFoooFoooFoooF…ooFooo') ✓ lazy datasets with (1) ✓ lazy datasets with (2) ✓ lazy datasets did the job right ✓ interpolated (1) lazy datasets ✓ interpolated (2) lazy datasets ✓ eager datasets with (1) ✓ eager datasets with (2) ✓ eager datasets did the job right ✓ lazy registered datasets with (1) ✓ lazy registered datasets with (2) ✓ lazy registered datasets did the job right ✓ eager registered datasets with (1) ✓ eager registered datasets with (2) ✓ eager registered datasets did the job right ✓ eager wrapped registered datasets with (1) ✓ eager wrapped registered datasets with (2) ✓ eager registered wrapped datasets did the job right ✓ named datasets with dataset "one" ✓ named datasets with dataset "two" ✓ interpolated "one" named datasets ✓ interpolated "two" named datasets ✓ named datasets did the job right ✓ lazy named datasets with (Bar) ✓ it creates unique test case names with ('Name 1', Pest\Plugin, true) #1 ✓ it creates unique test case names with ('Name 1', Pest\Plugin, true) #2 ✓ it creates unique test case names with ('Name 1', Pest\Plugin, false) ✓ it creates unique test case names with ('Name 2', Pest\Plugin, false) ✓ it creates unique test case names with ('Name 2', Pest\Plugin, true) ✓ it creates unique test case names with ('Name 1', Pest\Plugin, true) #3 ✓ it creates unique test case names - count ✓ lazy multiple datasets with (1) / (3) ✓ lazy multiple datasets with (1) / (4) ✓ lazy multiple datasets with (2) / (3) ✓ lazy multiple datasets with (2) / (4) ✓ lazy multiple datasets did the job right ✓ eager multiple datasets with (1) / (3) ✓ eager multiple datasets with (1) / (4) ✓ eager multiple datasets with (2) / (3) ✓ eager multiple datasets with (2) / (4) ✓ eager multiple datasets did the job right ✓ lazy registered multiple datasets with (1) / (1) ✓ lazy registered multiple datasets with (1) / (2) ✓ lazy registered multiple datasets with (2) / (1) ✓ lazy registered multiple datasets with (2) / (2) ✓ lazy registered multiple datasets did the job right ✓ eager registered multiple datasets with (1) / (1) ✓ eager registered multiple datasets with (1) / (2) ✓ eager registered multiple datasets with (2) / (1) ✓ eager registered multiple datasets with (2) / (2) ✓ eager registered multiple datasets did the job right ✓ eager wrapped registered multiple datasets with (1) / (1) ✓ eager wrapped registered multiple datasets with (1) / (2) ✓ eager wrapped registered multiple datasets with (2) / (1) ✓ eager wrapped registered multiple datasets with (2) / (2) ✓ eager wrapped registered multiple datasets did the job right ✓ named multiple datasets with dataset "one" / dataset "three" ✓ named multiple datasets with dataset "one" / dataset "four" ✓ named multiple datasets with dataset "two" / dataset "three" ✓ named multiple datasets with dataset "two" / dataset "four" ✓ named multiple datasets did the job right ✓ more than two datasets with (1) / (3) / (5) ✓ more than two datasets with (1) / (3) / (6) ✓ more than two datasets with (1) / (4) / (5) ✓ more than two datasets with (1) / (4) / (6) ✓ more than two datasets with (2) / (3) / (5) ✓ more than two datasets with (2) / (3) / (6) ✓ more than two datasets with (2) / (4) / (5) ✓ more than two datasets with (2) / (4) / (6) ✓ more than two datasets did the job right ✓ eager registered wrapped datasets with Generator functions with (1) ✓ eager registered wrapped datasets with Generator functions with (2) ✓ eager registered wrapped datasets with Generator functions with (3) ✓ eager registered wrapped datasets with Generator functions with (4) ✓ eager registered wrapped datasets with Generator functions did the job right ✓ eager registered wrapped datasets with Generator functions display description with dataset "taylor" ✓ eager registered wrapped datasets with Generator functions display description with dataset "james" ✓ it can resolve a dataset after the test case is available with (Closure Object ()) #1 ✓ it can resolve a dataset after the test case is available with (Closure Object ()) #2 ✓ it can resolve a dataset after the test case is available with multiple datasets with (Closure Object ()) / (Closure Object ()) #1 ✓ it can resolve a dataset after the test case is available with multiple datasets with (Closure Object ()) / (Closure Object ()) #2 ✓ it can resolve a dataset after the test case is available with multiple datasets with (Closure Object ()) / (Closure Object ()) #3 ✓ it can resolve a dataset after the test case is available with multiple datasets with (Closure Object ()) / (Closure Object ()) #4 ✓ it can resolve a dataset after the test case is available with shared yield sets with (Closure Object ()) #1 ✓ it can resolve a dataset after the test case is available with shared yield sets with (Closure Object ()) #2 ✓ it can resolve a dataset after the test case is available with shared array sets with (Closure Object ()) #1 ✓ it can resolve a dataset after the test case is available with shared array sets with (Closure Object ()) #2 ✓ it resolves a potential bound dataset logically with ('foo', Closure Object ()) ✓ it resolves a potential bound dataset logically even when the closure comes first with (Closure Object (), 'bar') ✓ it will not resolve a closure if it is type hinted as a closure with (Closure Object ()) #1 ✓ it will not resolve a closure if it is type hinted as a closure with (Closure Object ()) #2 ✓ it will not resolve a closure if it is type hinted as a callable with (Closure Object ()) #1 ✓ it will not resolve a closure if it is type hinted as a callable with (Closure Object ()) #2 ✓ it can correctly resolve a bound dataset that returns an array with (Closure Object ()) ✓ it can correctly resolve a bound dataset that returns an array but wants to be spread with (Closure Object ()) ↓ forbids to define tests in Datasets dirs and Datasets.php files ✓ it may be used with high order with dataset "formal" ✓ it may be used with high order with dataset "informal" ✓ it may be used with high order even when bound with dataset "formal" ✓ it may be used with high order even when bound with dataset "informal" ✓ with on nested describe → nested → before inner describe block with (1) ✓ with on nested describe → nested → describe → it should include the with value from all parent describe blocks with (1) / (2) ✓ with on nested describe → nested → describe → should include the with value from all parent describe blocks and the test with (1) / (2) / (3) ✓ with on nested describe → nested → after inner describe block with (1) ✓ matching describe block names → outer → before inner describe block with (1) ✓ matching describe block names → outer → inner → it should include the with value from all parent describe blocks with (1) / (2) ✓ matching describe block names → outer → inner → should include the with value from all parent describe blocks and the test with (1) / (2) / (3) ✓ matching describe block names → outer → inner → it should not include the value from the other describe block with the same name with (1) ✓ matching describe block names → outer → after inner describe block with (1) ✓ after describe block with (5) ✓ it may be used with high order after describe block with dataset "formal" ✓ it may be used with high order after describe block with dataset "informal" ✓ after describe block with named dataset with ('after') PASS Tests\Features\Depends ✓ first ✓ second ✓ depends ✓ depends with ...params ✓ depends with defined arguments ✓ depends run test only once ✓ it asserts true is true ✓ depends works with the correct test name ✓ describe block → first in describe ✓ describe block → second in describe ✓ describe block → third in describe ✓ describe block → nested describe → first in nested describe ✓ describe block → nested describe → second in nested describe ✓ describe block → nested describe → third in nested describe ✓ depends on test after describe block PASS Tests\Features\DependsInheritance ✓ it is a test ✓ it uses correct parent class DEPR Tests\Features\Deprecated ! deprecated → str_contains(): Passing null to parameter #1 ($haystack) of type string is deprecated // tests/Features/Deprecated.php:4 ! user deprecated → Since foo 1.0: This is a deprecation description // tests/Features/Deprecated.php:10 PASS Tests\Features\Describe - 5 todos ✓ before each ✓ hooks → value ✓ hooks in different orders → value ↓ todo ✓ previous describable before each does not get applied here ↓ todo on hook → should not fail ↓ todo on hook → should run ↓ todo on describe → should not fail ↓ todo on describe → should run ✓ should run ✓ with with (1) ✓ with on hook → value with (2) ✓ with on describe → value with (3) ✓ depends on describe → foo ✓ depends on describe → bar ✓ depends on describe using with → foo with (3) ✓ depends on describe using with → bar with (3) ✓ with test after describe → it should run the before each PASS Tests\Features\DescriptionLess ✓ get 'foo' ✓ get 'foo' → get 'bar' → expect true → toBeTrue ✓ get 'foo' → expect true → toBeTrue ✓ a "describe" group of tests → get 'foo' ✓ a "describe" group of tests → get 'foo' → get 'bar' → expect true → toBeTrue ✓ a "describe" group of tests → get 'foo' → expect true → toBeTrue PASS Tests\Features\Done ✓ it may have an associated assignee [@nunomaduro] ✓ it may have an associated issue #1 ✓ it may have an associated PR #1 ✓ it may have an associated note // a note PASS Tests\Features\Exceptions ✓ it gives access the the underlying expectException ✓ it catch exceptions ✓ it catch exceptions and messages ✓ it catch exceptions, messages and code ✓ it can just define the message ✓ it can just define the code ✓ it not catch exceptions if given condition is false ✓ it catch exceptions if given condition is true ✓ it catch exceptions and messages if given condition is true ✓ it catch exceptions, messages and code if given condition is true ✓ it can just define the message if given condition is true ✓ it can just define the code if given condition is true ✓ it can just define the message if given condition is 1 ✓ it can just define the code if given condition is 1 ✓ it not catch exceptions if given condition is true ✓ it catch exceptions if given condition is false ✓ it catch exceptions and messages if given condition is false ✓ it catch exceptions, messages and code if given condition is false ✓ it can just define the message if given condition is false ✓ it can just define the code if given condition is false ✓ it can just define the message if given condition is 0 ✓ it can just define the code if given condition is 0 PASS Tests\Features\Expect\HigherOrder\methods ✓ it can access methods ✓ it can access multiple methods ✓ it works with not ✓ it can accept arguments ✓ it works with each ✓ it works inside of each ✓ it works with sequence ✓ it can compose complex expectations ✓ it can handle nested method calls ✓ it works with higher order tests ✓ it can use the scoped method to lock into the given level for expectations ✓ it works consistently with the json expectation method PASS Tests\Features\Expect\HigherOrder\methodsAndProperties ✓ it can access methods and properties ✓ it can handle nested methods and properties ✓ it works with higher order tests ✓ it can start a new higher order expectation using the and syntax ✓ it can start a new higher order expectation using the and syntax in higher order tests ✓ it can start a new higher order expectation using the and syntax without nesting expectations PASS Tests\Features\Expect\HigherOrder\properties ✓ it allows properties to be accessed from the value ✓ it can access multiple properties from the value ✓ it works with not ✓ it works with each ✓ it works inside of each ✓ it works with sequence ✓ it can compose complex expectations ✓ it works with objects ✓ it works with nested properties ✓ it works with higher order tests PASS Tests\Features\Expect\each ✓ an exception is thrown if the the type is not iterable ✓ it expects on each item ✓ it chains expectations on each item ✓ opposite expectations on each item ✓ chained opposite and non-opposite expectations ✓ it can add expectations via "and" ✓ it accepts callables ✓ it passes the key of the current item to callables PASS Tests\Features\Expect\extend ✓ it macros true is true ✓ it macros false is not true ✓ it macros true is true with argument ✓ it macros false is not true with argument PASS Tests\Features\Expect\json ✓ it properly parses json string ✓ fails with broken json string PASS Tests\Features\Expect\matchExpectation ✓ it pass ✓ it failures ✓ it runs with truthy ✓ it runs with falsy ✓ it runs with truthy closure condition ✓ it runs with falsy closure condition ✓ it can be passed non-callable values ✓ it fails with unhandled match ✓ it can be used in higher order tests PASS Tests\Features\Expect\not ✓ not property calls PASS Tests\Features\Expect\pipes ✓ pipe is applied and can stop pipeline ✓ pipe is run and can let the pipeline keep going ✓ pipe works with negated expectation ✓ interceptor is applied ✓ interceptor stops the pipeline ✓ interceptor is called only when filter is met ✓ interceptor can be filtered with a closure ✓ interceptor can be filter the expected parameter as well ✓ interceptor works with negated expectation ✓ intercept can add new parameters to the expectation PASS Tests\Features\Expect\ray ✓ ray calls do not fail when ray is not installed PASS Tests\Features\Expect\sequence ✓ an exception is thrown if the the type is not iterable ✓ an exception is thrown if there are no expectations ✓ allows for sequences of checks to be run on iterable data ✓ loops back to the start if it runs out of sequence items ✓ fails if the number of iterable items is less than the number of expectations ✓ it works with associative arrays ✓ it can be passed non-callable values ✓ it can be passed a mixture of value types ✓ it works with traversables PASS Tests\Features\Expect\toBe ✓ strict comparisons ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeAlpha ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeAlphaNumeric ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeArray ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeBetween ✓ passes with int ✓ passes with float ✓ passes with float and int ✓ passes with DateTime ✓ failure with int ✓ failure with float ✓ failure with float and int ✓ failure with DateTime ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeBool ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeCallable ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeCamelCase ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeDigits ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeDirectory ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeEmpty ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeFalse ✓ strict comparisons ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeFalsy ✓ passes as falsy with (false) ✓ passes as falsy with ('') ✓ passes as falsy with (null) ✓ passes as falsy with (0) ✓ passes as falsy with ('0') ✓ passes as not falsy with (true) ✓ passes as not falsy with (1) #1 ✓ passes as not falsy with ('false') ✓ passes as not falsy with (1) #2 ✓ passes as not falsy with (-1) ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeFile ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeFloat ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeGreaterThan ✓ passes ✓ passes with DateTime and DateTimeImmutable ✓ passes with strings ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeGreaterThanOrEqual ✓ passes ✓ passes with DateTime and DateTimeImmutable ✓ passes with strings ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeIn ✓ passes ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeInfinite ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeInstanceOf ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeInt ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeIntBackedEnum ✓ enum is backed by int ✓ enum is not backed by int PASS Tests\Features\Expect\toBeInvokable ✓ class is invokable ✓ opposite class is invokable ✓ class is invokable via a parent class ✓ class is invokable via a trait ✓ failure when the class is not invokable ✓ class is not invokable PASS Tests\Features\Expect\toBeIterable ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeJson ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeKebabCase ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeLessThan ✓ passes ✓ passes with DateTime and DateTimeImmutable ✓ passes with strings ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeLessThanOrEqual ✓ passes ✓ passes with DateTime and DateTimeImmutable ✓ passes with strings ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeList ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeLowercase ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeNAN ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeNull ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeNumeric ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeObject ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeReadableDirectory ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeReadableFile ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeResource ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeScalar ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeSlug ✓ pass ✓ failures ✓ failures with custom message ✓ failures with default message ✓ not failures PASS Tests\Features\Expect\toBeSnakeCase ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeString ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeStringBackedEnum ✓ enum is backed by string ✓ enum is not backed by string PASS Tests\Features\Expect\toBeStudlyCase ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeTrue ✓ strict comparisons ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeTruthy ✓ passes as truthy with (true) ✓ passes as truthy with (1) #1 ✓ passes as truthy with ('false') ✓ passes as truthy with (1) #2 ✓ passes as truthy with (-1) ✓ passes as not truthy with (false) ✓ passes as not truthy with ('') ✓ passes as not truthy with (null) ✓ passes as not truthy with (0) ✓ passes as not truthy with ('0') ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeUppercase ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeUrl ✓ pass ✓ failures ✓ failures with custom message ✓ failures with default message ✓ not failures PASS Tests\Features\Expect\toBeUuid ✓ failures with wrong type ✓ pass ✓ failures ✓ failures with message ✓ not failures PASS Tests\Features\Expect\toBeWritableDirectory ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toBeWritableFile ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toContain ✓ passes strings ✓ passes strings with multiple needles ✓ passes arrays ✓ passes arrays with multiple needles ✓ passes with array needles ✓ failures ✓ failures with multiple needles (all failing) ✓ failures with multiple needles (some failing) ✓ not failures ✓ not failures with multiple needles (all failing) ✓ not failures with multiple needles (some failing) PASS Tests\Features\Expect\toContainEqual ✓ passes arrays ✓ passes arrays with multiple needles ✓ failures ✓ failures with multiple needles (all failing) ✓ failures with multiple needles (some failing) ✓ not failures ✓ not failures with multiple needles (all failing) ✓ not failures with multiple needles (some failing) PASS Tests\Features\Expect\toContainOnlyInstancesOf ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toEndWith ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toEqual ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toEqualCanonicalizing ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toEqualWithDelta ✓ pass ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toHaveAttribute ✓ class has attribute ✓ opposite class has attribute ✓ class not has attribute PASS Tests\Features\Expect\toHaveCamelCaseKeys ✓ pass ✓ failures ✓ failures with message ✓ not failures PASS Tests\Features\Expect\toHaveConstructor ✓ class has constructor ✓ class has no constructor PASS Tests\Features\Expect\toHaveCount ✓ pass ✓ failures with invalid type ✓ failures ✓ failures with message ✓ not failures PASS Tests\Features\Expect\toHaveDestructor ✓ class has destructor ✓ class has no destructor PASS Tests\Features\Expect\toHaveKebabCaseKeys ✓ pass ✓ failures ✓ failures with message ✓ not failures PASS Tests\Features\Expect\toHaveKey ✓ pass ✓ pass with nested key ✓ pass with plain key with dots ✓ pass with value check ✓ pass with value check and nested key ✓ pass with value check and plain key with dots ✓ failures ✓ failures with custom message ✓ failures with custom message and Any matcher ✓ failures with nested key ✓ failures with nested key and custom message ✓ failures with nested key and custom message with Any matcher ✓ failures with plain key with dots ✓ fails with wrong value ✓ fails with wrong value and nested key ✓ fails with wrong value and plain key with dots ✓ not failures ✓ not failures with nested key ✓ not failures with plain key with dots ✓ not failures with correct value ✓ not failures with correct value and with nested key ✓ not failures with correct value and with plain key with dots PASS Tests\Features\Expect\toHaveKeys ✓ pass ✓ pass with multi-dimensional arrays ✓ failures ✓ failures with custom message ✓ failures with multi-dimensional arrays ✓ failures with multi-dimensional arrays and custom message ✓ not failures ✓ not failures with multi-dimensional arrays PASS Tests\Features\Expect\toHaveLength ✓ it passes with ('Fortaleza') ✓ it passes with ('Sollefteå') ✓ it passes with ('Ιεράπετρα') ✓ it passes with (stdClass) ✓ it passes with array ✓ it passes with *not* ✓ it properly fails with *not* ✓ it fails ✓ it fails with message PASS Tests\Features\Expect\toHaveLineCountLessThan ✓ it passes ✓ it fails PASS Tests\Features\Expect\toHaveMethod ✓ class has method ✓ opposite class has method ✓ class has method via a parent class ✓ class has method via a trait ✓ failure when the class has no method ✓ class has no method PASS Tests\Features\Expect\toHaveMethods ✓ class has method ✓ opposite class has method ✓ class has method via a parent class ✓ class has method via a trait ✓ failure when the class has no method ✓ class has no method PASS Tests\Features\Expect\toHaveMethodsDocumented ✓ it passes ✓ it fails 1 ✓ it fails 2 PASS Tests\Features\Expect\toHavePrefix ✓ missing prefix ✓ has prefix ✓ opposite missing prefix ✓ opposite has prefix PASS Tests\Features\Expect\toHavePrivateMethodsBesides ✓ pass ✓ failures PASS Tests\Features\Expect\toHaveProperties ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toHavePropertiesDocumented ✓ it passes ✓ it fails 1 ✓ it fails 2 PASS Tests\Features\Expect\toHaveProperty ✓ pass ✓ failures ✓ failures with message ✓ failures with message and Any matcher ✓ not failures PASS Tests\Features\Expect\toHaveProtectedMethodsBesides ✓ pass ✓ failures PASS Tests\Features\Expect\toHavePublicMethodsBesides ✓ pass ✓ failures PASS Tests\Features\Expect\toHaveSameSize ✓ failures with wrong type ✓ pass ✓ failures ✓ failures with message ✓ not failures PASS Tests\Features\Expect\toHaveSnakeCaseKeys ✓ pass ✓ failures ✓ failures with message ✓ not failures PASS Tests\Features\Expect\toHaveStudlyCaseKeys ✓ pass ✓ failures ✓ failures with message ✓ not failures PASS Tests\Features\Expect\toHaveSuffix ✓ missing suffix ✓ has suffix ✓ opposite missing suffix ✓ opposite has suffix PASS Tests\Features\Expect\toMatch ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toMatchArray ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toMatchConstraint ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toMatchObject ✓ pass ✓ pass with class ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toMatchSnapshot ✓ pass ✓ pass using pipes ✓ pass with __toString ✓ pass with toString ✓ pass with dataset with ('my-datas-set-value') ✓ within describe → pass with dataset with ('my-datas-set-value') ✓ pass with toArray ✓ pass with array ✓ pass with toSnapshot ✓ failures ✓ failures with custom message ✓ not failures ✓ multiple snapshot expectations ✓ multiple snapshot expectations with datasets with (1) ✓ multiple snapshot expectations with datasets with ('foo') ✓ multiple snapshot expectations with datasets with ('bar') ✓ multiple snapshot expectations with datasets with ('baz') ✓ describable → multiple snapshot expectations with describe ✓ multiple snapshot expectations with repeat @ repetition 1 of 10 ✓ multiple snapshot expectations with repeat @ repetition 2 of 10 ✓ multiple snapshot expectations with repeat @ repetition 3 of 10 ✓ multiple snapshot expectations with repeat @ repetition 4 of 10 ✓ multiple snapshot expectations with repeat @ repetition 5 of 10 ✓ multiple snapshot expectations with repeat @ repetition 6 of 10 ✓ multiple snapshot expectations with repeat @ repetition 7 of 10 ✓ multiple snapshot expectations with repeat @ repetition 8 of 10 ✓ multiple snapshot expectations with repeat @ repetition 9 of 10 ✓ multiple snapshot expectations with repeat @ repetition 10 of 10 PASS Tests\Features\Expect\toStartWith ✓ pass ✓ failures ✓ failures with custom message ✓ not failures PASS Tests\Features\Expect\toThrow ✓ passes ✓ failures 1 ✓ failures 2 ✓ failures 3 ✓ failures 4 ✓ failures 5 ✓ failures 6 ✓ failures 7 ✓ failures 8 ✓ failures with custom message ✓ not failures ✓ closure missing parameter ✓ closure missing type-hint ✓ it can handle a non-defined exception ✓ it can handle a class not found Error PASS Tests\Features\Expect\toUseStrictEquality ✓ missing strict equality ✓ has strict equality ✓ opposite missing strict equality ✓ opposite has strict equality PASS Tests\Features\Expect\toUseStrictTypes ✓ pass ✓ failures PASS Tests\Features\Expect\toUseTrait ✓ pass ✓ failures ✓ not failures PASS Tests\Features\Expect\unless ✓ it pass ✓ it failures ✓ it runs with truthy ✓ it skips with falsy ✓ it runs with truthy closure condition ✓ it skips with falsy closure condition ✓ it can be used in higher order tests PASS Tests\Features\Expect\when ✓ it pass ✓ it failures ✓ it runs with truthy ✓ it skips with falsy ✓ it runs with truthy closure condition ✓ it skips with falsy closure condition ✓ it can be used in higher order tests PASS Tests\Features\Fail ✓ it may fail ✓ it may fail with the given message PASS Tests\Features\Fails ✓ it may fail ✓ it may fail with the given message PASS Tests\Features\Fixture ✓ it may return a file path ✓ it may throw an exception if the file does not exist WARN Tests\Features\Helpers ✓ it can set/get properties on $this ! it gets null if property do not exist → Undefined property Tests\Features\Helpers::$wqdwqdqw ✓ it allows to call underlying protected/private methods ✓ it throws error if method do not exist ✓ it can forward unexpected calls to any global function ✓ it can use helpers from helpers file ✓ it can use helpers from helpers directory PASS Tests\Features\HigherOrderTests ✓ it proxies calls to object ✓ it is capable doing multiple assertions ✓ it resolves expect callables correctly ✓ does not treat method names as callables ✓ it can defer a method until after test setup ✓ it can pass datasets into the expect callables with (1, 2, 3) ✓ it can pass datasets into the defer callable with (1, 2, 3) ✓ it can pass shared datasets into callables with (1) ✓ it can pass shared datasets into callables with (2) WARN Tests\Features\Incompleted … incompleted … it is incompleted … it is incompleted even with method calls like skip … it is incompleted even with method calls like group ✓ it is not incompleted because of expect ✓ it is not incompleted because of assert ✓ it is not incompleted because of test with assertions … a "describe" group of tests → it is incompleted PASS Tests\Features\Issue ✓ it may be associated with an issue #1, #2 ✓ nested → it may be associated with an issue #1, #4, #5, #6, #3 // an note between an the issue PASS Tests\Features\It ✓ it is a test ✓ it is a higher order message test ✓ a "describe" group of tests → it is a test ✓ a "describe" group of tests → it is a higher order message test PASS Tests\Features\Note ✓ it may have a static note // This is before each static note // This is a note // This is before each runtime note ✓ it may have a runtime note // This is before each static note // This is before each runtime note // This is a runtime note ✓ it may have static note and runtime note // This is before each static note // This is a static note // This is before each runtime note // This is a runtime note ✓ nested → it may have static note and runtime note // This is before each static note // This is describe static note // This is before each describe static note // This is a static note within describe // This is before each runtime note // This is before each describe runtime note // This is a runtime note within describe ✓ nested → describe nested within describe → it may have a static note and runtime note // This is before each static note // This is describe static note // This is before each describe static note // This is a nested describe static note // This is before each nested describe static note // This is a static note within a nested describe // This is before each runtime note // This is before each describe runtime note // This is before each nested describe runtime note // This is a runtime note within a nested describe ✓ matching describe names → describe block → it may have a static note and runtime note // This is before each static note // This is before each matching describe static note // This is a nested matching static note // This is a static note within a matching describe // This is before each runtime note // This is before each matching describe runtime note // This is before each matching describe runtime note // This is a runtime note within a matching describe ✓ matching describe names → describe block → it may have a static note and runtime note, that are different than the matching describe block // This is before each static note // This is before each matching describe static note // This is a nested matching static note, and should not contain the matching describe notes // This is before each matching describe static note, and should not contain the matching describe notes // This is a static note within a matching describe, and should not contain the matching describe notes // This is before each runtime note // This is before each matching describe runtime note // This is before each matching describe runtime note, and should not contain the matching describe notes // This is a runtime note within a matching describe, and should not contain the matching describe notes ✓ multiple notes // This is before each static note // This is before each runtime note // This is a runtime note // This is another runtime note NOTI Tests\Features\Notices ! notice → This is a notice description // tests/Features/Notices.php:4 ! a "describe" group of tests → notice → This is a notice description // tests/Features/Notices.php:11 PASS Tests\Features\Pr ✓ it may be associated with an pr #1, #2 ✓ nested → it may be associated with an pr #1, #4, #5, #6, #3 // an note between an the pr PASS Tests\Features\References ✓ it can reference a specific class ✓ it can reference a specific class method PASS Tests\Features\Repeat ✓ once ✓ multiple times @ repetition 1 of 5 ✓ multiple times @ repetition 2 of 5 ✓ multiple times @ repetition 3 of 5 ✓ multiple times @ repetition 4 of 5 ✓ multiple times @ repetition 5 of 5 ✓ multiple times with single dataset dataset "a" @ repetition 1 of 6 ✓ multiple times with single dataset dataset "b" @ repetition 1 of 6 ✓ multiple times with single dataset dataset "c" @ repetition 1 of 6 ✓ multiple times with single dataset dataset "a" @ repetition 2 of 6 ✓ multiple times with single dataset dataset "b" @ repetition 2 of 6 ✓ multiple times with single dataset dataset "c" @ repetition 2 of 6 ✓ multiple times with single dataset dataset "a" @ repetition 3 of 6 ✓ multiple times with single dataset dataset "b" @ repetition 3 of 6 ✓ multiple times with single dataset dataset "c" @ repetition 3 of 6 ✓ multiple times with single dataset dataset "a" @ repetition 4 of 6 ✓ multiple times with single dataset dataset "b" @ repetition 4 of 6 ✓ multiple times with single dataset dataset "c" @ repetition 4 of 6 ✓ multiple times with single dataset dataset "a" @ repetition 5 of 6 ✓ multiple times with single dataset dataset "b" @ repetition 5 of 6 ✓ multiple times with single dataset dataset "c" @ repetition 5 of 6 ✓ multiple times with single dataset dataset "a" @ repetition 6 of 6 ✓ multiple times with single dataset dataset "b" @ repetition 6 of 6 ✓ multiple times with single dataset dataset "c" @ repetition 6 of 6 ✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 1 of 7 ✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 2 of 7 ✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 3 of 7 ✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 4 of 7 ✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 5 of 7 ✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 6 of 7 ✓ multiple times with multiple dataset dataset "a" / (4) @ repetition 7 of 7 ✓ multiple times with multiple dataset dataset "a" / (5) @ repetition 7 of 7 ✓ multiple times with multiple dataset dataset "a" / (6) @ repetition 7 of 7 ✓ multiple times with multiple dataset dataset "b" / (4) @ repetition 7 of 7 ✓ multiple times with multiple dataset dataset "b" / (5) @ repetition 7 of 7 ✓ multiple times with multiple dataset dataset "b" / (6) @ repetition 7 of 7 ✓ multiple times with multiple dataset dataset "c" / (4) @ repetition 7 of 7 ✓ multiple times with multiple dataset dataset "c" / (5) @ repetition 7 of 7 ✓ multiple times with multiple dataset dataset "c" / (6) @ repetition 7 of 7 ✓ multiple times with iterator @ repetition 1 of 2 ✓ multiple times with iterator @ repetition 2 of 2 ✓ multiple times with repeat iterator with single dataset ('a') @ repetition 1 of 2 ✓ multiple times with repeat iterator with single dataset ('b') @ repetition 1 of 2 ✓ multiple times with repeat iterator with single dataset ('c') @ repetition 1 of 2 ✓ multiple times with repeat iterator with single dataset ('a') @ repetition 2 of 2 ✓ multiple times with repeat iterator with single dataset ('b') @ repetition 2 of 2 ✓ multiple times with repeat iterator with single dataset ('c') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('a') / ('d') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('a') / ('e') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('a') / ('f') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('b') / ('d') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('b') / ('e') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('b') / ('f') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('d') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('e') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('f') @ repetition 1 of 2 ✓ multiple times with repeat iterator with multiple dataset ('a') / ('d') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('a') / ('e') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('a') / ('f') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('b') / ('d') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('b') / ('e') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('b') / ('f') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('d') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('e') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('f') @ repetition 2 of 2 ✓ describe blocks → multiple times @ repetition 1 of 3 ✓ describe blocks → multiple times @ repetition 2 of 3 ✓ describe blocks → multiple times @ repetition 3 of 3 ✓ describe blocks → describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 1 of 3 ✓ describe blocks → describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 2 of 3 ✓ describe blocks → describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 3 of 3 ✓ describe blocks → describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 1 of 2 ✓ describe blocks → describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 2 of 2 ✓ describe blocks → describe with repeat → nested describe without repeat → test with no repeat should repeat the number of times specified in the parent's parent describe block @ repetition 1 of 3 ✓ describe blocks → describe with repeat → nested describe without repeat → test with no repeat should repeat the number of times specified in the parent's parent describe block @ repetition 2 of 3 ✓ describe blocks → describe with repeat → nested describe without repeat → test with no repeat should repeat the number of times specified in the parent's parent describe block @ repetition 3 of 3 ✓ describe blocks → describe with repeat → nested describe without repeat → test with repeat should repeat the number of times specified in the test @ repetition 1 of 2 ✓ describe blocks → describe with repeat → nested describe without repeat → test with repeat should repeat the number of times specified in the test @ repetition 2 of 2 ✓ describe blocks → describe with repeat → nested describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 1 of 2 ✓ describe blocks → describe with repeat → nested describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 2 of 2 ✓ describe blocks → describe with repeat → nested describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 1 of 2 ✓ describe blocks → describe with repeat → nested describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 2 of 2 ✓ matching describe blocks → describe block → it should repeat the number of times specified in the parent describe block @ repetition 1 of 3 ✓ matching describe blocks → describe block → it should repeat the number of times specified in the parent describe block @ repetition 2 of 3 ✓ matching describe blocks → describe block → it should repeat the number of times specified in the parent describe block @ repetition 3 of 3 ✓ matching describe blocks → describe block → should not repeat the number of times of the describe block with the same name PASS Tests\Features\ScopedDatasets\Directory\NestedDirectory1\TestFileInNestedDirectoryWithDatasetsFile ✓ uses dataset with (1) ✓ uses dataset with (2) ✓ uses dataset with (3) ✓ uses dataset with (4) ✓ uses dataset with (5) ✓ uses dataset with ('ScopedDatasets/NestedDirector…ts.php') ✓ the right dataset is taken PASS Tests\Features\ScopedDatasets\Directory\NestedDirectory2\TestFileInNestedDirectory ✓ uses dataset with (1) ✓ uses dataset with (2) ✓ uses dataset with (3) ✓ uses dataset with (4) ✓ uses dataset with (5) ✓ uses dataset with ('ScopedDatasets/Datasets/Scoped.php') ✓ the right dataset is taken PASS Tests\Features\ScopedDatasets\Directory\TestFileWithLocallyDefinedDataset ✓ uses dataset with (1) ✓ uses dataset with (2) ✓ uses dataset with (3) ✓ uses dataset with (4) ✓ uses dataset with (5) ✓ uses dataset with ('ScopedDatasets/ScopedDatasets.php') ✓ the right dataset is taken PASS Tests\Features\ScopedDatasets\Directory\TestFileWithScopedDataset ✓ uses dataset with (1) ✓ uses dataset with (2) ✓ uses dataset with (3) ✓ uses dataset with (4) ✓ uses dataset with (5) ✓ uses dataset with ('ScopedDatasets/Datasets/Scoped.php') ✓ the right dataset is taken PASS Tests\Features\ScopedDatasets\TestFileOutOfScope ✓ uses dataset with (1) ✓ uses dataset with (2) ✓ the right dataset is taken ✓ it can see datasets defined in Pest.php file with ('A') ✓ it can see datasets defined in Pest.php file with ('B') ✓ Pest.php dataset is taken PASS Tests\Features\See ✓ it can reference a specific class ✓ it can reference a specific class method WARN Tests\Features\Skip ✓ it do not skips - it skips with truthy → 1 - it skips with truthy condition by default - it skips with message → skipped because bar - it skips with truthy closure condition ✓ it do not skips with falsy closure condition - it skips with condition and message → skipped because foo - it skips when skip after assertion - it can use something in the test case as a condition → This test was skipped - it can user higher order callables and skip - skip on describe → skipped tests → nested inside skipped block → it should not execute - skip on describe → skipped tests → it should not execute ✓ skip on describe → it should execute - skip on beforeEach → skipped tests → nested inside skipped block → it should not execute - skip on beforeEach → skipped tests → it should not execute ✓ skip on beforeEach → it should execute - matching describe with skip → describe block → it should not execute ✓ matching describe with skip → describe block → it should execute a test in a describe block with the same name as a skipped describe block ✓ matching describe with skip → it should execute - matching describe with skip on beforeEach → describe block → it should not execute ✓ matching describe with skip on beforeEach → describe block → it should execute a test in a describe block with the same name as a skipped describe block ✓ matching describe with skip on beforeEach → it should execute ✓ it does not skip after the describe block - it can skip after the describe block WARN Tests\Features\SkipOnPhp ✓ it can run on php version ✓ it can run on specific php version - it can skip on php versions depending on constraint → This test is skipped on PHP [>=7.4.0]. PASS Tests\Features\Test ✓ a test ✓ higher order message test PASS Tests\Features\ThrowsNoExceptions ✓ it allows access to the underlying expectNotToPerformAssertions method ✓ it allows performing no expectations without being risky ✓ a "describe" group of tests → it allows performing no expectations without being risky PASS Tests\Features\Ticket ✓ it may be associated with an ticket #1, #2 ✓ nested → it may be associated with an ticket #1, #4, #5, #6, #3 // an note between an the ticket PASS Tests\Features\Todo - 29 todos ↓ something todo later ↓ something todo later chained ↓ something todo later chained and with function body ✓ it does something within a file with a todo ↓ it may have an associated assignee [@nunomaduro] ↓ it may have an associated issue #1 ↓ it may have an associated PR #1 ↓ it may have an associated note // a note ↓ todo on describe → todo block → nested inside todo block → it should not execute ↓ todo on describe → todo block → nested inside todo block → it should set the note // hi ↓ todo on describe → todo block → describe with note → it should apply the note to a test without a todo // describe note ↓ todo on describe → todo block → describe with note → it should apply the note to a test with a todo // describe note ↓ todo on describe → todo block → describe with note → it should apply the note as well as the note from the test // describe note // test note ↓ todo on describe → todo block → describe with note → nested describe with note → it should apply all parent notes to a test without a todo // describe note // nested describe note ↓ todo on describe → todo block → describe with note → nested describe with note → it should apply all parent notes to a test with a todo // describe note // nested describe note ↓ todo on describe → todo block → describe with note → nested describe with note → it should apply all parent notes as well as the note from the test // describe note // nested describe note // test note ↓ todo on describe → todo block → it should not execute ✓ todo on describe → it should execute ↓ todo on describe with matching name → describe block → it should not execute ✓ todo on describe with matching name → describe block → it should execute a test in a describe block with the same name as a todo describe block ✓ todo on describe with matching name → it should execute ↓ todo on test after describe block ↓ todo with note on test after describe block // test note ↓ todo on beforeEach → todo block → nested inside todo block → it should not execute ↓ todo on beforeEach → todo block → describe with note → it should apply the note to a test without a todo // describe note ↓ todo on beforeEach → todo block → describe with note → it should apply the note to a test with a todo // describe note ↓ todo on beforeEach → todo block → describe with note → it should apply the note as well as the note from the test // describe note // test note ↓ todo on beforeEach → todo block → describe with note → nested describe with note → it should apply all parent notes to a test without a todo // describe note // nested describe note ↓ todo on beforeEach → todo block → describe with note → nested describe with note → it should apply all parent notes to a test with a todo // describe note // nested describe note ↓ todo on beforeEach → todo block → describe with note → nested describe with note → it should apply all parent notes as well as the note from the test // describe note // nested describe note // test note ↓ todo on beforeEach → todo block → it should not execute ✓ todo on beforeEach → it should execute ↓ todo on test after describe block with beforeEach ↓ todo with note on test after describe block with beforeEach // test note WARN Tests\Features\Warnings ! warning → Undefined property: P\Tests\Features\Warnings::$fooqwdfwqdfqw ! user warning → This is a warning description ! a "describe" group of tests → user warning → This is a warning description PASS Tests\Features\Wip ✓ it may have an associated assignee [@nunomaduro] ✓ it may have an associated issue #1 ✓ it may have an associated PR #1 ✓ it may have an associated note // a note WARN Tests\Fixtures\CollisionTest - error - success PASS Tests\Fixtures\DirectoryWithTests\ExampleTest ✓ it example 1 PASS Tests\Fixtures\ExampleTest ✓ it example 2 WARN Tests\Fixtures\UnexpectedOutput - output PASS Tests\Helpers\TestInHelpers ✓ it executes tests in the Helpers directory PASS Tests\Hooks\AfterEachTest ✓ nested → nested afterEach execution order ✓ global afterEach execution order PASS Tests\Hooks\BeforeAllTest ✓ it gets called before all tests 1 @ repetition 1 of 2 ✓ it gets called before all tests 1 @ repetition 2 of 2 ✓ it gets called before all tests 2 PASS Tests\Hooks\BeforeEachTest ✓ global beforeEach execution order PASS Tests\PHPUnit\CustomAffixes\InvalidTestName ✓ it runs file names like @#$%^&()-_=+.php PASS Tests\PHPUnit\CustomAffixes\ATestWithSpaces ✓ it runs file names like A Test With Spaces.php PASS Tests\PHPUnit\CustomAffixes\AdditionalFileExtension ✓ it runs file names like AdditionalFileExtension.spec.php PASS Tests\PHPUnit\CustomAffixes\FolderWithAn\ExampleTest ✓ custom traits can be used ✓ trait applied in this file PASS Tests\PHPUnit\CustomAffixes\ManyExtensions ✓ it runs file names like ManyExtensions.class.test.php PASS Tests\PHPUnit\CustomAffixes\TestCaseWithQuotes ✓ it runs file names like Test 'Case' With Quotes.php PASS Tests\PHPUnit\CustomAffixes\kebabcasespec ✓ it runs file names like kebab-case-spec.php PASS Tests\PHPUnit\CustomAffixes\snakecasespec ✓ it runs file names like snake_case_spec.php PASS Tests\CustomTestCase\ChildTest ✓ override method PASS Tests\CustomTestCase\ExecutedTest ✓ that gets executed PASS Tests\CustomTestCase\ParentTest ✓ override method PASS Tests\PHPUnit\CustomTestCase\UsesPerDirectory ✓ closure was bound to CustomTestCase PASS Tests\PHPUnit\CustomTestCaseInSubFolders\SubFolder\SubFolder\UsesPerSubDirectory ✓ closure was bound to CustomTestCase PASS Tests\PHPUnit\CustomTestCaseInSubFolders\SubFolder2\UsesPerFile ✓ custom traits can be used ✓ trait applied in this file PASS Tests\PHPUnit\GlobPatternTests\SubFolder\InnerFolder\UsesPerDirectoryAsPattern ✓ closure was bound to CustomTestCase PASS Tests\PHPUnit\GlobPatternTests\SubFolder2\UsesPerFileAsPattern ✓ closure was bound to CustomTestCase PASS Tests\Playground ✓ basic PASS Tests\Plugins\Coverage ✓ compute comparable coverage with (0, 0) ✓ compute comparable coverage with (0.5, 0.5) ✓ compute comparable coverage with (1.0, 1.0) ✓ compute comparable coverage with (32.51, 32.5) ✓ compute comparable coverage with (32.12312321312312, 32.1) ✓ compute comparable coverage with (32.53333333333333, 32.5) ✓ compute comparable coverage with (32.57777771232132, 32.5) ✓ compute comparable coverage with (100.0, 100.0) PASS Tests\Plugins\Traits ✓ it allows global uses ✓ it allows multiple global uses registered in the same path PASS Tests\Unit\Configuration\In ✓ it proxies to uses call PASS Tests\Unit\Configuration\Theme ✓ it creates a printer instance PASS Tests\Unit\Console\Help ✓ it outputs the help information when --help is used PASS Tests\Unit\DatasetsTests ✓ it show only the names of named datasets in their description ✓ it show the actual dataset of non-named datasets in their description ✓ it show only the names of multiple named datasets in their description ✓ it show the actual dataset of multiple non-named datasets in their description ✓ it show the correct description for mixed named and not-named datasets ✓ it shows the correct description for long texts with newlines ✓ it shows the correct description for arrays with many elements ✓ it shows the correct description of datasets with html PASS Tests\Unit\Expectations\OppositeExpectation ✓ it throw expectation failed exception with string argument ✓ it throw expectation failed exception with array argument PASS Tests\Unit\Overrides\ThrowableBuilder ✓ collision editor can be added to the stack trace PASS Tests\Unit\Plugins\Concerns\HandleArguments ✓ method hasArgument with ('--long-argument', true) ✓ method hasArgument with ('-a', true) ✓ method hasArgument with ('--with-equal-sign', true) ✓ method hasArgument with ('someValue', true) ✓ method hasArgument with ('--a', false) ✓ method hasArgument with ('--undefined-argument', false) PASS Tests\Unit\Plugins\Environment ✓ environment is set to CI when --ci option is used ✓ environment is set to Local when --ci option is not used PASS Tests\Unit\Plugins\Retry ✓ it orders by defects and stop on defects if when --retry is used PASS Tests\Unit\Preset ✓ preset invalid name ✓ preset → myFramework PASS Tests\Unit\Support\Arr ✓ last → it should return false for an empty arary ✓ last → it should return the last element for an array with a single element ✓ last → it should return the last element for an array without changing the internal pointer ✓ last → it should return the last element for an associative array without changing the internal pointer ✓ last → it should return the last element for an mixed key array without changing the internal pointer PASS Tests\Unit\Support\Backtrace ✓ it gets file name from called file PASS Tests\Unit\Support\Container ✓ it exists ✓ it gets an instance ✓ autowire ✓ it creates an instance and resolves parameters ✓ it creates an instance and resolves also sub parameters ✓ it can resolve builtin value types ✓ it cannot resolve a parameter without type PASS Tests\Unit\Support\DatasetInfo ✓ it can check if dataset is defined inside a Datasets directory with ('/var/www/project/tests/Datase…rs.php', true) ✓ it can check if dataset is defined inside a Datasets directory with ('/var/www/project/tests/Datasets.php', false) ✓ it can check if dataset is defined inside a Datasets directory with ('/var/www/project/tests/Featur…rs.php', true) ✓ it can check if dataset is defined inside a Datasets directory with ('/var/www/project/tests/Featur…rs.php', false) ✓ it can check if dataset is defined inside a Datasets directory with ('/var/www/project/tests/Featur…ts.php', false) ✓ it can check if dataset is defined inside a Datasets.php file with ('/var/www/project/tests/Datase…rs.php', false) ✓ it can check if dataset is defined inside a Datasets.php file with ('/var/www/project/tests/Datasets.php', true) ✓ it can check if dataset is defined inside a Datasets.php file with ('/var/www/project/tests/Featur…rs.php', false) #1 ✓ it can check if dataset is defined inside a Datasets.php file with ('/var/www/project/tests/Featur…rs.php', false) #2 ✓ it can check if dataset is defined inside a Datasets.php file with ('/var/www/project/tests/Featur…ts.php', true) ✓ it computes the dataset scope with ('/var/www/project/tests/Datase…rs.php', '/var/www/project/tests') ✓ it computes the dataset scope with ('/var/www/project/tests/Datasets.php', '/var/www/project/tests') ✓ it computes the dataset scope with ('/var/www/project/tests/Featur…rs.php', '/var/www/project/tests/Features') ✓ it computes the dataset scope with ('/var/www/project/tests/Featur…rs.php', '/var/www/project/tests/Featur…rs.php') #1 ✓ it computes the dataset scope with ('/var/www/project/tests/Featur…ts.php', '/var/www/project/tests/Features') ✓ it computes the dataset scope with ('/var/www/project/tests/Featur…rs.php', '/var/www/project/tests/Featur…ollers') ✓ it computes the dataset scope with ('/var/www/project/tests/Featur…rs.php', '/var/www/project/tests/Featur…rs.php') #2 ✓ it computes the dataset scope with ('/var/www/project/tests/Featur…ts.php', '/var/www/project/tests/Featur…ollers') PASS Tests\Unit\Support\ExceptionTrace ✓ it ensures the given closures reports the correct class name ✓ it ensures the given closures reports the correct class name and suggests the [pest()] function PASS Tests\Unit\Support\HigherOrderMessage ✓ undefined method exceptions PASS Tests\Unit\Support\Reflection ✓ it gets file name from closure ✓ it gets property values ✓ it gets properties from classes ✓ it gets methods from classes PASS Tests\Unit\Support\Str ✓ it evaluates the code with ('version()', '__pest_evaluable_version__') ✓ it evaluates the code with ('version__ ', '__pest_evaluable_version_____') ✓ it evaluates the code with ('version\', '__pest_evaluable_version_') PASS Tests\Unit\TestName ✓ it may start with P with ('P\Tests\BarTest', 'Tests\BarTest') ✓ it may start with P with ('P\Packages\Foo', 'Packages\Foo') ✓ it may start with P with ('P\PPPackages\Foo', 'PPPackages\Foo') ✓ it may start with P with ('PPPackages\Foo', 'PPPackages\Foo') #1 ✓ it may start with P with ('PPPackages\Foo', 'PPPackages\Foo') #2 ✓ test description ✓ test_description ✓ ふ+が+ ✓ ほげ ✓ 卜竹弓一十山 ✓ アゴデヸ ✓ !p8VrB ✓ &xe6VeKWF#n4 ✓ %%HurHUnw7zM! ✓ rundeliekend ✓ g%%c!Jt9$fy#Kf ✓ NRs*Gz2@hmB$W$BPD%%b2U%3P%z%apnwSX ✓ ÀĤ{¼÷ ✓ ìèéàòç ✓ زهراء المعادي ✓ الجبيهه ✓ الظهران ✓ Каролин ✓ অ্যান্টার্কটিকা ✓ Frýdek-Místek" ✓ Allingåbro& ✓ Κεντροαφρικανική Δημοκρατία ✓ آذربایجان غربی ✓ זימבבואה ✓ Belišće ✓ Գվատեմալա ✓ パプアニューギニア ✓ 富山県 ✓ Қарағанды ✓ Қостанай ✓ 안양시 동안구 ✓ Itālija ✓ Honningsvåg ✓ Águeda ✓ Râșcani ✓ Năsăud ✓ Орехово-Зуево ✓ Čereňany ✓ Moravče ✓ Šentjernej ✓ Врање ✓ Крушевац ✓ Åkersberga ✓ บอสเนียและเฮอร์เซโกวีนา ✓ Birleşik Arap Emirlikleri ✓ Німеччина ✓ Nam Định ✓ 呼和浩特 ✓ test /** with comment */ should do PASS Tests\Unit\TestSuite ✓ it does not allow to add the same test description twice ✓ it does not allow static closures ✓ it alerts users about tests with arguments but no input ✓ it can return an array of all test suite filenames PASS Tests\Visual\BeforeEachTestName ✓ description ✓ latest description PASS Tests\Visual\Collision ✓ collision with (['']) PASS Tests\Visual\Help ✓ visual snapshot of help command output WARN Tests\Visual\JUnit ✓ junit output - junit with parallel → Not working yet PASS Tests\Visual\Parallel ✓ parallel ✓ a parallel test can extend another test with same name PASS Tests\Visual\SingleTestOrDirectory ✓ allows to run a single test ✓ allows to run a directory ✓ it disable decorating printer when colors is set to never WARN Tests\Visual\Success - visual snapshot of test suite on success WARN Tests\Visual\TeamCity - visual snapshot of team city with ('Failure.php') - visual snapshot of team city with ('SuccessOnly.php') WARN Tests\Visual\Todo - todos - todos in parallel - todo - todo in parallel WARN Tests\Visual\Version - visual snapshot of help command output PASS Testsexternal\Features\Expect\toMatchSnapshot ✓ pass with dataset with ('my-datas-set-value') ✓ within describe → pass with dataset with ('my-datas-set-value') Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1188 passed (2814 assertions)