From d69f61c8d3a0289cb9f5350ef35e1b1bc20cc56d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 11 Feb 2023 16:48:06 +0000 Subject: [PATCH] refacto: `--retry` option --- .gitignore | 1 - .temp/retry.json | 1 + .temp/test-results | 1 + composer.json | 1 + phpunit.xml | 2 - src/Bootstrappers/BootSubscribers.php | 5 +- src/Factories/TestCaseMethodFactory.php | 7 -- src/Plugins/Cache.php | 37 ++++++++ src/Plugins/Retry.php | 14 +-- src/Repositories/RetryRepository.php | 91 ------------------- ...php => EnsureConfigurationIsAvailable.php} | 6 +- .../EnsureErroredTestsAreRetryable.php | 23 ----- .../EnsureFailedTestsAreRetryable.php | 23 ----- .../EnsureRetryRepositoryExists.php | 23 ----- src/TestSuite.php | 7 -- tests/.snapshots/Failure.php.inc | 4 +- tests/.snapshots/success.txt | 2 +- tests/Unit/Plugins/Retry.php | 13 ++- 18 files changed, 61 insertions(+), 200 deletions(-) create mode 100644 .temp/retry.json create mode 100644 .temp/test-results create mode 100644 src/Plugins/Cache.php delete mode 100644 src/Repositories/RetryRepository.php rename src/Subscribers/{EnsureConfigurationDefaults.php => EnsureConfigurationIsAvailable.php} (54%) delete mode 100644 src/Subscribers/EnsureErroredTestsAreRetryable.php delete mode 100644 src/Subscribers/EnsureFailedTestsAreRetryable.php delete mode 100644 src/Subscribers/EnsureRetryRepositoryExists.php diff --git a/.gitignore b/.gitignore index 235a8cff..3a11a383 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,6 @@ coverage.xml /.php-cs-fixer.php .php-cs-fixer.cache .temp/coverage.php -.temp/retry.json *.swp *.swo .vscode/ diff --git a/.temp/retry.json b/.temp/retry.json new file mode 100644 index 00000000..33db9abc --- /dev/null +++ b/.temp/retry.json @@ -0,0 +1 @@ +["P\\Tests\\Temporary\\A::it_can_run_a_test_5#(3)","P\\Tests\\Temporary\\A::it_can_run_a_test_5#(4)"] \ No newline at end of file diff --git a/.temp/test-results b/.temp/test-results new file mode 100644 index 00000000..56c4841c --- /dev/null +++ b/.temp/test-results @@ -0,0 +1 @@ +{"version":1,"defects":{"P\\Tests\\Features\\Coverage::it_adds_coverage_if___coverage_exist":1,"P\\Tests\\Features\\DatasetsTests::forbids_to_define_tests_in_Datasets_dirs_and_Datasets_php_files":1,"P\\Tests\\Features\\Incompleted::incompleted":2,"P\\Tests\\Features\\Incompleted::it_is_incompleted":2,"P\\Tests\\Features\\Incompleted::it_is_incompleted_even_with_method_calls_like_skip":2,"P\\Tests\\Features\\Incompleted::it_is_incompleted_even_with_method_calls_like_group":2,"P\\Tests\\Features\\Skip::it_skips_with_truthy":1,"P\\Tests\\Features\\Skip::it_skips_with_truthy_condition_by_default":1,"P\\Tests\\Features\\Skip::it_skips_with_message":1,"P\\Tests\\Features\\Skip::it_skips_with_truthy_closure_condition":1,"P\\Tests\\Features\\Skip::it_skips_with_condition_and_message":1,"P\\Tests\\Features\\Skip::it_skips_when_skip_after_assertion":1,"P\\Tests\\Features\\Skip::it_can_use_something_in_the_test_case_as_a_condition":1,"P\\Tests\\Features\\Skip::it_can_user_higher_order_callables_and_skip":1,"P\\Tests\\Features\\Todo::something_todo_later":1,"P\\Tests\\Features\\Todo::something_todo_later_chained":1,"P\\Tests\\Features\\Todo::something_todo_later_chained_and_with_function_body":1,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_phpunit_is_not_a_valid_XML":1,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_failing_to_read_phpunit_content":1,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_there_is_no_test_suites_directory":1,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_test_suite_directory_has_no_value":1,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_test_suite_directory_does_not_exist":1,"P\\Tests\\Unit\\ConfigLoader::it_returns_the_parent_folder_of_first_test_suite_directory":1,"P\\Tests\\Features\\DatasetsTests::lazy_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::eager_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::lazy_registered_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::eager_registered_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::named_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::lazy_multiple_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::eager_multiple_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::lazy_registered_multiple_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::eager_registered_multiple_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::eager_wrapped_registered_multiple_datasets_did_the_job_right":7,"P\\Tests\\Features\\DatasetsTests::named_multiple_datasets_did_the_job_right":7,"P\\Tests\\Temporary\\A::it_can_run_a_test_5":7,"P\\Tests\\Temporary\\A::it_can_run_a_test_5#(3)":7,"P\\Tests\\Temporary\\A::it_can_run_a_test_5#(4)":7,"P\\Tests\\Unit\\Plugins\\Retry::it_orders_by_defects_and_stop_on_defects_if_when___retry_is_used_":7,"P\\Tests\\Visual\\Success::visual_snapshot_of_test_suite_on_success":5,"P\\Tests\\Visual\\TeamCity::visual_snapshot_of_team_city#('Failure.php')":5,"P\\Tests\\Visual\\Help::visual_snapshot_of_help_command_output":1,"P\\Tests\\Visual\\TeamCity::visual_snapshot_of_team_city#('SuccessOnly.php')":5,"P\\Tests\\Visual\\Version::visual_snapshot_of_help_command_output":1},"times":{"P\\Tests\\Features\\AfterAll::deletes_file_after_all":0.001,"P\\Tests\\Features\\AfterEach::it_does_not_get_executed_before_the_test":0,"P\\Tests\\Features\\AfterEach::it_gets_executed_after_the_test":0,"P\\Tests\\Features\\BeforeAll::it_gets_executed_before_tests":0,"P\\Tests\\Features\\BeforeAll::it_do_not_get_executed_before_each_test":0,"P\\Tests\\Features\\BeforeEach::it_gets_executed_before_each_test":0,"P\\Tests\\Features\\BeforeEach::it_gets_executed_before_each_test_once_again":0,"P\\Tests\\Features\\Coverage::it_has_plugin":0,"P\\Tests\\Features\\Coverage::it_adds_coverage_if___coverage_exist":0.002,"P\\Tests\\Features\\Coverage::it_adds_coverage_if___min_exist":0,"P\\Tests\\Features\\Coverage::it_generates_coverage_based_on_file_input":0,"P\\Tests\\Features\\Covers::it_uses_the_correct_PHPUnit_attribute_for_class":0,"P\\Tests\\Features\\Covers::it_uses_the_correct_PHPUnit_attribute_for_function":0,"P\\Tests\\Features\\Covers::it_removes_duplicated_attributes":0,"P\\Tests\\Features\\Covers::it_guesses_if_the_given_argument_is_a_class_or_function":0,"P\\Tests\\Features\\Covers::it_appends_CoversNothing_to_method_attributes":0,"P\\Tests\\Features\\Covers::it_does_not_append_CoversNothing_to_other_methods":0,"P\\Tests\\Features\\Covers::it_throws_exception_if_no_class_nor_method_has_been_found":0,"P\\Tests\\Features\\DatasetsTests::it_throws_exception_if_dataset_does_not_exist":0,"P\\Tests\\Features\\DatasetsTests::it_throws_exception_if_dataset_already_exist":0,"P\\Tests\\Features\\DatasetsTests::it_sets_closures":0,"P\\Tests\\Features\\DatasetsTests::it_sets_arrays":0,"P\\Tests\\Features\\DatasetsTests::it_gets_bound_to_test_case_object#('a')":0,"P\\Tests\\Features\\DatasetsTests::it_gets_bound_to_test_case_object#('b')":0,"P\\Tests\\Features\\DatasetsTests::it_truncates_the_description#('FoooFoooFoooFoooFoooFoooFoooF...ooFooo')":0,"P\\Tests\\Features\\DatasetsTests::lazy_datasets#(1)":0,"P\\Tests\\Features\\DatasetsTests::lazy_datasets#(2)":0,"P\\Tests\\Features\\DatasetsTests::lazy_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::eager_datasets#(1)":0,"P\\Tests\\Features\\DatasetsTests::eager_datasets#(2)":0,"P\\Tests\\Features\\DatasetsTests::eager_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::lazy_registered_datasets#(1)":0,"P\\Tests\\Features\\DatasetsTests::lazy_registered_datasets#(2)":0,"P\\Tests\\Features\\DatasetsTests::lazy_registered_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_datasets#(1)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_datasets#(2)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::eager_wrapped_registered_datasets#(1)":0,"P\\Tests\\Features\\DatasetsTests::eager_wrapped_registered_datasets#(2)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::named_datasets#data set \"one\"":0,"P\\Tests\\Features\\DatasetsTests::named_datasets#data set \"two\"":0,"P\\Tests\\Features\\DatasetsTests::named_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::lazy_named_datasets#(Bar Object (...))":0,"P\\Tests\\Features\\DatasetsTests::it_creates_unique_test_case_names#('Name 1', Pest\\Plugin Object (), true) #1":0,"P\\Tests\\Features\\DatasetsTests::it_creates_unique_test_case_names#('Name 1', Pest\\Plugin Object (), true) #2":0,"P\\Tests\\Features\\DatasetsTests::it_creates_unique_test_case_names#('Name 1', Pest\\Plugin Object (), false)":0,"P\\Tests\\Features\\DatasetsTests::it_creates_unique_test_case_names#('Name 2', Pest\\Plugin Object (), false)":0,"P\\Tests\\Features\\DatasetsTests::it_creates_unique_test_case_names#('Name 2', Pest\\Plugin Object (), true)":0,"P\\Tests\\Features\\DatasetsTests::it_creates_unique_test_case_names#('Name 1', Pest\\Plugin Object (), true) #3":0,"P\\Tests\\Features\\DatasetsTests::it_creates_unique_test_case_names___count":0,"P\\Tests\\Features\\DatasetsTests::lazy_multiple_datasets#(1) \/ (3)":0,"P\\Tests\\Features\\DatasetsTests::lazy_multiple_datasets#(1) \/ (4)":0,"P\\Tests\\Features\\DatasetsTests::lazy_multiple_datasets#(2) \/ (3)":0,"P\\Tests\\Features\\DatasetsTests::lazy_multiple_datasets#(2) \/ (4)":0,"P\\Tests\\Features\\DatasetsTests::lazy_multiple_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::eager_multiple_datasets#(1) \/ (3)":0,"P\\Tests\\Features\\DatasetsTests::eager_multiple_datasets#(1) \/ (4)":0,"P\\Tests\\Features\\DatasetsTests::eager_multiple_datasets#(2) \/ (3)":0,"P\\Tests\\Features\\DatasetsTests::eager_multiple_datasets#(2) \/ (4)":0,"P\\Tests\\Features\\DatasetsTests::eager_multiple_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::lazy_registered_multiple_datasets#(1) \/ (1)":0,"P\\Tests\\Features\\DatasetsTests::lazy_registered_multiple_datasets#(1) \/ (2)":0,"P\\Tests\\Features\\DatasetsTests::lazy_registered_multiple_datasets#(2) \/ (1)":0,"P\\Tests\\Features\\DatasetsTests::lazy_registered_multiple_datasets#(2) \/ (2)":0,"P\\Tests\\Features\\DatasetsTests::lazy_registered_multiple_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_multiple_datasets#(1) \/ (1)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_multiple_datasets#(1) \/ (2)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_multiple_datasets#(2) \/ (1)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_multiple_datasets#(2) \/ (2)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_multiple_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::eager_wrapped_registered_multiple_datasets#(1) \/ (1)":0,"P\\Tests\\Features\\DatasetsTests::eager_wrapped_registered_multiple_datasets#(1) \/ (2)":0,"P\\Tests\\Features\\DatasetsTests::eager_wrapped_registered_multiple_datasets#(2) \/ (1)":0,"P\\Tests\\Features\\DatasetsTests::eager_wrapped_registered_multiple_datasets#(2) \/ (2)":0,"P\\Tests\\Features\\DatasetsTests::eager_wrapped_registered_multiple_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::named_multiple_datasets#data set \"one\" \/ data set \"three\"":0,"P\\Tests\\Features\\DatasetsTests::named_multiple_datasets#data set \"one\" \/ data set \"four\"":0,"P\\Tests\\Features\\DatasetsTests::named_multiple_datasets#data set \"two\" \/ data set \"three\"":0,"P\\Tests\\Features\\DatasetsTests::named_multiple_datasets#data set \"two\" \/ data set \"four\"":0,"P\\Tests\\Features\\DatasetsTests::named_multiple_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets#(1) \/ (3) \/ (5)":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets#(1) \/ (3) \/ (6)":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets#(1) \/ (4) \/ (5)":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets#(1) \/ (4) \/ (6)":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets#(2) \/ (3) \/ (5)":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets#(2) \/ (3) \/ (6)":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets#(2) \/ (4) \/ (5)":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets#(2) \/ (4) \/ (6)":0,"P\\Tests\\Features\\DatasetsTests::more_than_two_datasets_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_with_Generator_functions#(1)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_with_Generator_functions#(2)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_with_Generator_functions#(3)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_with_Generator_functions#(4)":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_with_Generator_functions_did_the_job_right":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_with_Generator_functions_display_description#data set \"taylor\"":0,"P\\Tests\\Features\\DatasetsTests::eager_registered_wrapped_datasets_with_Generator_functions_display_description#data set \"james\"":0,"P\\Tests\\Features\\DatasetsTests::it_can_resolve_a_dataset_after_the_test_case_is_available#(Closure Object (...)) #1":0,"P\\Tests\\Features\\DatasetsTests::it_can_resolve_a_dataset_after_the_test_case_is_available#(Closure Object (...)) #2":0,"P\\Tests\\Features\\DatasetsTests::it_can_resolve_a_dataset_after_the_test_case_is_available_with_shared_yield_sets#(Closure Object (...)) #1":0,"P\\Tests\\Features\\DatasetsTests::it_can_resolve_a_dataset_after_the_test_case_is_available_with_shared_yield_sets#(Closure Object (...)) #2":0,"P\\Tests\\Features\\DatasetsTests::it_can_resolve_a_dataset_after_the_test_case_is_available_with_shared_array_sets#(Closure Object (...)) #1":0,"P\\Tests\\Features\\DatasetsTests::it_can_resolve_a_dataset_after_the_test_case_is_available_with_shared_array_sets#(Closure Object (...)) #2":0,"P\\Tests\\Features\\DatasetsTests::it_resolves_a_potential_bound_dataset_logically#('foo', Closure Object (...))":0,"P\\Tests\\Features\\DatasetsTests::it_resolves_a_potential_bound_dataset_logically_even_when_the_closure_comes_first#(Closure Object (...), 'bar')":0,"P\\Tests\\Features\\DatasetsTests::it_will_not_resolve_a_closure_if_it_is_type_hinted_as_a_closure#(Closure Object (...)) #1":0,"P\\Tests\\Features\\DatasetsTests::it_will_not_resolve_a_closure_if_it_is_type_hinted_as_a_closure#(Closure Object (...)) #2":0,"P\\Tests\\Features\\DatasetsTests::it_will_not_resolve_a_closure_if_it_is_type_hinted_as_a_callable#(Closure Object (...)) #1":0,"P\\Tests\\Features\\DatasetsTests::it_will_not_resolve_a_closure_if_it_is_type_hinted_as_a_callable#(Closure Object (...)) #2":0,"P\\Tests\\Features\\DatasetsTests::it_can_correctly_resolve_a_bound_dataset_that_returns_an_array#(Closure Object (...))":0,"P\\Tests\\Features\\DatasetsTests::it_can_correctly_resolve_a_bound_dataset_that_returns_an_array_but_wants_to_be_spread#(Closure Object (...))":0,"P\\Tests\\Features\\DatasetsTests::forbids_to_define_tests_in_Datasets_dirs_and_Datasets_php_files":0,"P\\Tests\\Features\\Depends::first":0,"P\\Tests\\Features\\Depends::second":0,"P\\Tests\\Features\\Depends::depends":0,"P\\Tests\\Features\\Depends::depends_with____params":0,"P\\Tests\\Features\\Depends::depends_with_defined_arguments":0,"P\\Tests\\Features\\Depends::depends_run_test_only_once":0,"P\\Tests\\Features\\Depends::it_asserts_true_is_true":0,"P\\Tests\\Features\\Depends::depends_works_with_the_correct_test_name":0,"P\\Tests\\Features\\DependsInheritance::it_is_a_test":0,"P\\Tests\\Features\\DependsInheritance::it_uses_correct_parent_class":0,"P\\Tests\\Features\\Exceptions::it_gives_access_the_the_underlying_expectException":0,"P\\Tests\\Features\\Exceptions::it_catch_exceptions":0,"P\\Tests\\Features\\Exceptions::it_catch_exceptions_and_messages":0,"P\\Tests\\Features\\Exceptions::it_catch_exceptions__messages_and_code":0,"P\\Tests\\Features\\Exceptions::it_can_just_define_the_message":0,"P\\Tests\\Features\\Exceptions::it_can_just_define_the_code":0,"P\\Tests\\Features\\Exceptions::it_not_catch_exceptions_if_given_condition_is_false":0,"P\\Tests\\Features\\Exceptions::it_catch_exceptions_if_given_condition_is_true":0,"P\\Tests\\Features\\Exceptions::it_catch_exceptions_and_messages_if_given_condition_is_true":0,"P\\Tests\\Features\\Exceptions::it_catch_exceptions__messages_and_code_if_given_condition_is_true":0,"P\\Tests\\Features\\Exceptions::it_can_just_define_the_message_if_given_condition_is_true":0,"P\\Tests\\Features\\Exceptions::it_can_just_define_the_code_if_given_condition_is_true":0,"P\\Tests\\Features\\Exceptions::it_can_just_define_the_message_if_given_condition_is_1":0,"P\\Tests\\Features\\Exceptions::it_can_just_define_the_code_if_given_condition_is_1":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_can_access_methods":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_can_access_multiple_methods":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_works_with_not":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_can_accept_arguments":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_works_with_each":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_works_inside_of_each":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_works_with_sequence":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_can_compose_complex_expectations":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_can_handle_nested_method_calls":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_works_with_higher_order_tests":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_can_use_the_scoped_method_to_lock_into_the_given_level_for_expectations":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methods::it_works_consistently_with_the_json_expectation_method":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methodsAndProperties::it_can_access_methods_and_properties":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methodsAndProperties::it_can_handle_nested_methods_and_properties":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methodsAndProperties::it_works_with_higher_order_tests":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methodsAndProperties::it_can_start_a_new_higher_order_expectation_using_the_and_syntax":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methodsAndProperties::it_can_start_a_new_higher_order_expectation_using_the_and_syntax_in_higher_order_tests":0,"P\\Tests\\Features\\Expect\\HigherOrder\\methodsAndProperties::it_can_start_a_new_higher_order_expectation_using_the_and_syntax_without_nesting_expectations":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_allows_properties_to_be_accessed_from_the_value":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_can_access_multiple_properties_from_the_value":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_works_with_not":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_works_with_each":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_works_inside_of_each":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_works_with_sequence":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_can_compose_complex_expectations":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_works_with_objects":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_works_with_nested_properties":0,"P\\Tests\\Features\\Expect\\HigherOrder\\properties::it_works_with_higher_order_tests":0,"P\\Tests\\Features\\Expect\\each::an_exception_is_thrown_if_the_the_type_is_not_iterable":0,"P\\Tests\\Features\\Expect\\each::it_expects_on_each_item":0,"P\\Tests\\Features\\Expect\\each::it_chains_expectations_on_each_item":0,"P\\Tests\\Features\\Expect\\each::opposite_expectations_on_each_item":0,"P\\Tests\\Features\\Expect\\each::chained_opposite_and_non_opposite_expectations":0,"P\\Tests\\Features\\Expect\\each::it_can_add_expectations_via__and_":0,"P\\Tests\\Features\\Expect\\each::it_accepts_callables":0,"P\\Tests\\Features\\Expect\\each::it_passes_the_key_of_the_current_item_to_callables":0,"P\\Tests\\Features\\Expect\\extend::it_macros_true_is_true":0,"P\\Tests\\Features\\Expect\\extend::it_macros_false_is_not_true":0,"P\\Tests\\Features\\Expect\\extend::it_macros_true_is_true_with_argument":0,"P\\Tests\\Features\\Expect\\extend::it_macros_false_is_not_true_with_argument":0,"P\\Tests\\Features\\Expect\\json::it_properly_parses_json_string":0,"P\\Tests\\Features\\Expect\\json::fails_with_broken_json_string":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_pass":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_failures":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_runs_with_truthy":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_runs_with_falsy":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_runs_with_truthy_closure_condition":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_runs_with_falsy_closure_condition":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_can_be_passed_non_callable_values":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_fails_with_unhandled_match":0,"P\\Tests\\Features\\Expect\\matchExpectation::it_can_be_used_in_higher_order_tests":0,"P\\Tests\\Features\\Expect\\not::not_property_calls":0,"P\\Tests\\Features\\Expect\\pipes::pipe_is_applied_and_can_stop_pipeline":0,"P\\Tests\\Features\\Expect\\pipes::pipe_is_run_and_can_let_the_pipeline_keep_going":0,"P\\Tests\\Features\\Expect\\pipes::pipe_works_with_negated_expectation":0,"P\\Tests\\Features\\Expect\\pipes::interceptor_is_applied":0,"P\\Tests\\Features\\Expect\\pipes::interceptor_stops_the_pipeline":0,"P\\Tests\\Features\\Expect\\pipes::interceptor_is_called_only_when_filter_is_met":0,"P\\Tests\\Features\\Expect\\pipes::interceptor_can_be_filtered_with_a_closure":0,"P\\Tests\\Features\\Expect\\pipes::interceptor_can_be_filter_the_expected_parameter_as_well":0,"P\\Tests\\Features\\Expect\\pipes::interceptor_works_with_negated_expectation":0,"P\\Tests\\Features\\Expect\\pipes::intercept_can_add_new_parameters_to_the_expectation":0,"P\\Tests\\Features\\Expect\\ray::ray_calls_do_not_fail_when_ray_is_not_installed":0,"P\\Tests\\Features\\Expect\\sequence::an_exception_is_thrown_if_the_the_type_is_not_iterable":0,"P\\Tests\\Features\\Expect\\sequence::allows_for_sequences_of_checks_to_be_run_on_iterable_data":0,"P\\Tests\\Features\\Expect\\sequence::loops_back_to_the_start_if_it_runs_out_of_sequence_items":0,"P\\Tests\\Features\\Expect\\sequence::fails_if_the_number_of_iterable_items_is_greater_than_the_number_of_expectations":0,"P\\Tests\\Features\\Expect\\sequence::it_works_with_associative_arrays":0,"P\\Tests\\Features\\Expect\\sequence::it_can_be_passed_non_callable_values":0,"P\\Tests\\Features\\Expect\\sequence::it_can_be_passed_a_mixture_of_value_types":0,"P\\Tests\\Features\\Expect\\toBe::strict_comparisons":0,"P\\Tests\\Features\\Expect\\toBe::failures":0,"P\\Tests\\Features\\Expect\\toBe::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBe::not_failures":0,"P\\Tests\\Features\\Expect\\toBeArray::pass":0,"P\\Tests\\Features\\Expect\\toBeArray::failures":0,"P\\Tests\\Features\\Expect\\toBeArray::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeArray::not_failures":0,"P\\Tests\\Features\\Expect\\toBeBool::pass":0,"P\\Tests\\Features\\Expect\\toBeBool::failures":0,"P\\Tests\\Features\\Expect\\toBeBool::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeBool::not_failures":0,"P\\Tests\\Features\\Expect\\toBeCallable::pass":0,"P\\Tests\\Features\\Expect\\toBeCallable::failures":0,"P\\Tests\\Features\\Expect\\toBeCallable::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeCallable::not_failures":0,"P\\Tests\\Features\\Expect\\toBeDirectory::pass":0,"P\\Tests\\Features\\Expect\\toBeDirectory::failures":0,"P\\Tests\\Features\\Expect\\toBeDirectory::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeDirectory::not_failures":0,"P\\Tests\\Features\\Expect\\toBeEmpty::pass":0,"P\\Tests\\Features\\Expect\\toBeEmpty::failures":0,"P\\Tests\\Features\\Expect\\toBeEmpty::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeEmpty::not_failures":0,"P\\Tests\\Features\\Expect\\toBeFalse::strict_comparisons":0,"P\\Tests\\Features\\Expect\\toBeFalse::failures":0,"P\\Tests\\Features\\Expect\\toBeFalse::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeFalse::not_failures":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_falsy#(false)":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_falsy#('')":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_falsy#(null)":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_falsy#(0)":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_falsy#('0')":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_not_falsy#(true)":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_not_falsy#(1) #1":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_not_falsy#('false')":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_not_falsy#(1) #2":0,"P\\Tests\\Features\\Expect\\toBeFalsy::passes_as_not_falsy#(-1)":0,"P\\Tests\\Features\\Expect\\toBeFalsy::failures":0,"P\\Tests\\Features\\Expect\\toBeFalsy::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeFalsy::not_failures":0,"P\\Tests\\Features\\Expect\\toBeFile::pass":0,"P\\Tests\\Features\\Expect\\toBeFile::failures":0,"P\\Tests\\Features\\Expect\\toBeFile::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeFile::not_failures":0,"P\\Tests\\Features\\Expect\\toBeFloat::pass":0,"P\\Tests\\Features\\Expect\\toBeFloat::failures":0,"P\\Tests\\Features\\Expect\\toBeFloat::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeFloat::not_failures":0,"P\\Tests\\Features\\Expect\\toBeGreatherThan::passes":0,"P\\Tests\\Features\\Expect\\toBeGreatherThan::failures":0,"P\\Tests\\Features\\Expect\\toBeGreatherThan::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeGreatherThan::not_failures":0,"P\\Tests\\Features\\Expect\\toBeGreatherThanOrEqual::passes":0,"P\\Tests\\Features\\Expect\\toBeGreatherThanOrEqual::failures":0,"P\\Tests\\Features\\Expect\\toBeGreatherThanOrEqual::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeGreatherThanOrEqual::not_failures":0,"P\\Tests\\Features\\Expect\\toBeIn::passes":0,"P\\Tests\\Features\\Expect\\toBeIn::failures":0,"P\\Tests\\Features\\Expect\\toBeIn::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeIn::not_failures":0,"P\\Tests\\Features\\Expect\\toBeInfinite::pass":0,"P\\Tests\\Features\\Expect\\toBeInfinite::failures":0,"P\\Tests\\Features\\Expect\\toBeInfinite::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeInfinite::not_failures":0,"P\\Tests\\Features\\Expect\\toBeInstanceOf::pass":0,"P\\Tests\\Features\\Expect\\toBeInstanceOf::failures":0,"P\\Tests\\Features\\Expect\\toBeInstanceOf::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeInstanceOf::not_failures":0,"P\\Tests\\Features\\Expect\\toBeInt::pass":0,"P\\Tests\\Features\\Expect\\toBeInt::failures":0,"P\\Tests\\Features\\Expect\\toBeInt::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeInt::not_failures":0,"P\\Tests\\Features\\Expect\\toBeIterable::pass":0,"P\\Tests\\Features\\Expect\\toBeIterable::failures":0,"P\\Tests\\Features\\Expect\\toBeIterable::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeIterable::not_failures":0,"P\\Tests\\Features\\Expect\\toBeJson::pass":0,"P\\Tests\\Features\\Expect\\toBeJson::failures":0,"P\\Tests\\Features\\Expect\\toBeJson::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeJson::not_failures":0,"P\\Tests\\Features\\Expect\\toBeLessThan::passes":0,"P\\Tests\\Features\\Expect\\toBeLessThan::failures":0,"P\\Tests\\Features\\Expect\\toBeLessThan::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeLessThan::not_failures":0,"P\\Tests\\Features\\Expect\\toBeLessThanOrEqual::passes":0,"P\\Tests\\Features\\Expect\\toBeLessThanOrEqual::failures":0,"P\\Tests\\Features\\Expect\\toBeLessThanOrEqual::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeLessThanOrEqual::not_failures":0,"P\\Tests\\Features\\Expect\\toBeNAN::pass":0,"P\\Tests\\Features\\Expect\\toBeNAN::failures":0,"P\\Tests\\Features\\Expect\\toBeNAN::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeNAN::not_failures":0,"P\\Tests\\Features\\Expect\\toBeNull::pass":0,"P\\Tests\\Features\\Expect\\toBeNull::failures":0,"P\\Tests\\Features\\Expect\\toBeNull::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeNull::not_failures":0,"P\\Tests\\Features\\Expect\\toBeNumeric::pass":0,"P\\Tests\\Features\\Expect\\toBeNumeric::failures":0,"P\\Tests\\Features\\Expect\\toBeNumeric::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeNumeric::not_failures":0,"P\\Tests\\Features\\Expect\\toBeObject::pass":0,"P\\Tests\\Features\\Expect\\toBeObject::failures":0,"P\\Tests\\Features\\Expect\\toBeObject::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeObject::not_failures":0,"P\\Tests\\Features\\Expect\\toBeReadableDirectory::pass":0,"P\\Tests\\Features\\Expect\\toBeReadableDirectory::failures":0,"P\\Tests\\Features\\Expect\\toBeReadableDirectory::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeReadableDirectory::not_failures":0,"P\\Tests\\Features\\Expect\\toBeReadableFile::pass":0,"P\\Tests\\Features\\Expect\\toBeReadableFile::failures":0,"P\\Tests\\Features\\Expect\\toBeReadableFile::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeReadableFile::not_failures":0,"P\\Tests\\Features\\Expect\\toBeResource::pass":0,"P\\Tests\\Features\\Expect\\toBeResource::failures":0,"P\\Tests\\Features\\Expect\\toBeResource::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeResource::not_failures":0,"P\\Tests\\Features\\Expect\\toBeScalar::pass":0,"P\\Tests\\Features\\Expect\\toBeScalar::failures":0,"P\\Tests\\Features\\Expect\\toBeScalar::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeScalar::not_failures":0,"P\\Tests\\Features\\Expect\\toBeString::pass":0,"P\\Tests\\Features\\Expect\\toBeString::failures":0,"P\\Tests\\Features\\Expect\\toBeString::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeString::not_failures":0,"P\\Tests\\Features\\Expect\\toBeTrue::strict_comparisons":0,"P\\Tests\\Features\\Expect\\toBeTrue::failures":0,"P\\Tests\\Features\\Expect\\toBeTrue::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeTrue::not_failures":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_truthy#(true)":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_truthy#(1) #1":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_truthy#('false')":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_truthy#(1) #2":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_truthy#(-1)":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_not_truthy#(false)":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_not_truthy#('')":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_not_truthy#(null)":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_not_truthy#(0)":0,"P\\Tests\\Features\\Expect\\toBeTruthy::passes_as_not_truthy#('0')":0,"P\\Tests\\Features\\Expect\\toBeTruthy::failures":0,"P\\Tests\\Features\\Expect\\toBeTruthy::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeTruthy::not_failures":0,"P\\Tests\\Features\\Expect\\toBeWritableDirectory::pass":0,"P\\Tests\\Features\\Expect\\toBeWritableDirectory::failures":0,"P\\Tests\\Features\\Expect\\toBeWritableDirectory::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeWritableDirectory::not_failures":0,"P\\Tests\\Features\\Expect\\toBeWritableFile::pass":0,"P\\Tests\\Features\\Expect\\toBeWritableFile::failures":0,"P\\Tests\\Features\\Expect\\toBeWritableFile::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toBeWritableFile::not_failures":0,"P\\Tests\\Features\\Expect\\toContain::passes_strings":0,"P\\Tests\\Features\\Expect\\toContain::passes_strings_with_multiple_needles":0,"P\\Tests\\Features\\Expect\\toContain::passes_arrays":0,"P\\Tests\\Features\\Expect\\toContain::passes_arrays_with_multiple_needles":0,"P\\Tests\\Features\\Expect\\toContain::passes_with_array_needles":0,"P\\Tests\\Features\\Expect\\toContain::failures":0,"P\\Tests\\Features\\Expect\\toContain::failures_with_multiple_needles__all_failing_":0,"P\\Tests\\Features\\Expect\\toContain::failures_with_multiple_needles__some_failing_":0,"P\\Tests\\Features\\Expect\\toContain::not_failures":0,"P\\Tests\\Features\\Expect\\toContain::not_failures_with_multiple_needles__all_failing_":0,"P\\Tests\\Features\\Expect\\toContain::not_failures_with_multiple_needles__some_failing_":0,"P\\Tests\\Features\\Expect\\toContainOnlyInstancesOf::pass":0,"P\\Tests\\Features\\Expect\\toContainOnlyInstancesOf::failures":0,"P\\Tests\\Features\\Expect\\toContainOnlyInstancesOf::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toContainOnlyInstancesOf::not_failures":0,"P\\Tests\\Features\\Expect\\toEndWith::pass":0,"P\\Tests\\Features\\Expect\\toEndWith::failures":0,"P\\Tests\\Features\\Expect\\toEndWith::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toEndWith::not_failures":0,"P\\Tests\\Features\\Expect\\toEqual::pass":0,"P\\Tests\\Features\\Expect\\toEqual::failures":0,"P\\Tests\\Features\\Expect\\toEqual::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toEqual::not_failures":0,"P\\Tests\\Features\\Expect\\toEqualCanonicalizing::pass":0,"P\\Tests\\Features\\Expect\\toEqualCanonicalizing::failures":0,"P\\Tests\\Features\\Expect\\toEqualCanonicalizing::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toEqualCanonicalizing::not_failures":0,"P\\Tests\\Features\\Expect\\toEqualWithDelta::pass":0,"P\\Tests\\Features\\Expect\\toEqualWithDelta::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toEqualWithDelta::not_failures":0,"P\\Tests\\Features\\Expect\\toHaveCount::pass":0,"P\\Tests\\Features\\Expect\\toHaveCount::failures":0,"P\\Tests\\Features\\Expect\\toHaveCount::failures_with_message":0,"P\\Tests\\Features\\Expect\\toHaveCount::not_failures":0,"P\\Tests\\Features\\Expect\\toHaveKey::pass":0,"P\\Tests\\Features\\Expect\\toHaveKey::pass_with_nested_key":0,"P\\Tests\\Features\\Expect\\toHaveKey::pass_with_plain_key_with_dots":0,"P\\Tests\\Features\\Expect\\toHaveKey::pass_with_value_check":0,"P\\Tests\\Features\\Expect\\toHaveKey::pass_with_value_check_and_nested_key":0,"P\\Tests\\Features\\Expect\\toHaveKey::pass_with_value_check_and_plain_key_with_dots":0,"P\\Tests\\Features\\Expect\\toHaveKey::failures":0,"P\\Tests\\Features\\Expect\\toHaveKey::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toHaveKey::failures_with_custom_message_and_Any_matcher":0,"P\\Tests\\Features\\Expect\\toHaveKey::failures_with_nested_key":0,"P\\Tests\\Features\\Expect\\toHaveKey::failures_with_nested_key_and_custom_message":0,"P\\Tests\\Features\\Expect\\toHaveKey::failures_with_nested_key_and_custom_message_with_Any_matcher":0,"P\\Tests\\Features\\Expect\\toHaveKey::failures_with_plain_key_with_dots":0,"P\\Tests\\Features\\Expect\\toHaveKey::fails_with_wrong_value":0,"P\\Tests\\Features\\Expect\\toHaveKey::fails_with_wrong_value_and_nested_key":0,"P\\Tests\\Features\\Expect\\toHaveKey::fails_with_wrong_value_and_plain_key_with_dots":0,"P\\Tests\\Features\\Expect\\toHaveKey::not_failures":0,"P\\Tests\\Features\\Expect\\toHaveKey::not_failures_with_nested_key":0,"P\\Tests\\Features\\Expect\\toHaveKey::not_failures_with_plain_key_with_dots":0,"P\\Tests\\Features\\Expect\\toHaveKey::not_failures_with_correct_value":0,"P\\Tests\\Features\\Expect\\toHaveKey::not_failures_with_correct_value_and__with_nested_key":0,"P\\Tests\\Features\\Expect\\toHaveKey::not_failures_with_correct_value_and__with_plain_key_with_dots":0,"P\\Tests\\Features\\Expect\\toHaveKeys::pass":0,"P\\Tests\\Features\\Expect\\toHaveKeys::pass_with_multi_dimensional_arrays":0,"P\\Tests\\Features\\Expect\\toHaveKeys::failures":0,"P\\Tests\\Features\\Expect\\toHaveKeys::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toHaveKeys::failures_with_multi_dimensional_arrays":0,"P\\Tests\\Features\\Expect\\toHaveKeys::failures_with_multi_dimensional_arrays_and_custom_message":0,"P\\Tests\\Features\\Expect\\toHaveKeys::not_failures":0,"P\\Tests\\Features\\Expect\\toHaveKeys::not_failures_with_multi_dimensional_arrays":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_passes#('Fortaleza')":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_passes#('Sollefte\u00e5')":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_passes#('\u0399\u03b5\u03c1\u03ac\u03c0\u03b5\u03c4\u03c1\u03b1')":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_passes#(stdClass Object (...))":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_passes_with_array":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_passes_with__not_":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_properly_fails_with__not_":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_fails":0,"P\\Tests\\Features\\Expect\\toHaveLength::it_fails_with_message":0,"P\\Tests\\Features\\Expect\\toHaveMethod::pass":0,"P\\Tests\\Features\\Expect\\toHaveMethod::failures":0,"P\\Tests\\Features\\Expect\\toHaveMethod::failures_with_message":0,"P\\Tests\\Features\\Expect\\toHaveMethod::not_failures":0,"P\\Tests\\Features\\Expect\\toHaveMethods::pass":0,"P\\Tests\\Features\\Expect\\toHaveMethods::failures":0,"P\\Tests\\Features\\Expect\\toHaveMethods::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toHaveMethods::not_failures":0,"P\\Tests\\Features\\Expect\\toHaveProperties::pass":0,"P\\Tests\\Features\\Expect\\toHaveProperties::failures":0,"P\\Tests\\Features\\Expect\\toHaveProperties::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toHaveProperties::not_failures":0,"P\\Tests\\Features\\Expect\\toHaveProperty::pass":0,"P\\Tests\\Features\\Expect\\toHaveProperty::failures":0,"P\\Tests\\Features\\Expect\\toHaveProperty::failures_with_message":0,"P\\Tests\\Features\\Expect\\toHaveProperty::failures_with_message_and_Any_matcher":0,"P\\Tests\\Features\\Expect\\toHaveProperty::not_failures":0,"P\\Tests\\Features\\Expect\\toMatch::pass":0,"P\\Tests\\Features\\Expect\\toMatch::failures":0,"P\\Tests\\Features\\Expect\\toMatch::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toMatch::not_failures":0,"P\\Tests\\Features\\Expect\\toMatchArray::pass":0,"P\\Tests\\Features\\Expect\\toMatchArray::failures":0,"P\\Tests\\Features\\Expect\\toMatchArray::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toMatchArray::not_failures":0,"P\\Tests\\Features\\Expect\\toMatchConstraint::pass":0,"P\\Tests\\Features\\Expect\\toMatchConstraint::failures":0,"P\\Tests\\Features\\Expect\\toMatchConstraint::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toMatchConstraint::not_failures":0,"P\\Tests\\Features\\Expect\\toMatchObject::pass":0,"P\\Tests\\Features\\Expect\\toMatchObject::pass_with_class":0,"P\\Tests\\Features\\Expect\\toMatchObject::failures":0,"P\\Tests\\Features\\Expect\\toMatchObject::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toMatchObject::not_failures":0,"P\\Tests\\Features\\Expect\\toStartWith::pass":0,"P\\Tests\\Features\\Expect\\toStartWith::failures":0,"P\\Tests\\Features\\Expect\\toStartWith::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toStartWith::not_failures":0,"P\\Tests\\Features\\Expect\\toThrow::passes":0,"P\\Tests\\Features\\Expect\\toThrow::failures_1":0,"P\\Tests\\Features\\Expect\\toThrow::failures_2":0,"P\\Tests\\Features\\Expect\\toThrow::failures_3":0,"P\\Tests\\Features\\Expect\\toThrow::failures_4":0,"P\\Tests\\Features\\Expect\\toThrow::failures_5":0,"P\\Tests\\Features\\Expect\\toThrow::failures_6":0,"P\\Tests\\Features\\Expect\\toThrow::failures_7":0,"P\\Tests\\Features\\Expect\\toThrow::failures_with_custom_message":0,"P\\Tests\\Features\\Expect\\toThrow::not_failures":0,"P\\Tests\\Features\\Expect\\toThrow::closure_missing_parameter":0,"P\\Tests\\Features\\Expect\\toThrow::closure_missing_type_hint":0,"P\\Tests\\Features\\Expect\\toThrow::it_can_handle_a_non_defined_exception":0,"P\\Tests\\Features\\Expect\\toThrow::it_can_handle_a_class_not_found_Error":0,"P\\Tests\\Features\\Expect\\unless::it_pass":0,"P\\Tests\\Features\\Expect\\unless::it_failures":0,"P\\Tests\\Features\\Expect\\unless::it_runs_with_truthy":0,"P\\Tests\\Features\\Expect\\unless::it_skips_with_falsy":0,"P\\Tests\\Features\\Expect\\unless::it_runs_with_truthy_closure_condition":0,"P\\Tests\\Features\\Expect\\unless::it_skips_with_falsy_closure_condition":0,"P\\Tests\\Features\\Expect\\unless::it_can_be_used_in_higher_order_tests":0,"P\\Tests\\Features\\Expect\\when::it_pass":0,"P\\Tests\\Features\\Expect\\when::it_failures":0,"P\\Tests\\Features\\Expect\\when::it_runs_with_truthy":0,"P\\Tests\\Features\\Expect\\when::it_skips_with_falsy":0,"P\\Tests\\Features\\Expect\\when::it_runs_with_truthy_closure_condition":0,"P\\Tests\\Features\\Expect\\when::it_skips_with_falsy_closure_condition":0,"P\\Tests\\Features\\Expect\\when::it_can_be_used_in_higher_order_tests":0,"P\\Tests\\Features\\Helpers::it_can_set_get_properties_on__this":0,"P\\Tests\\Features\\Helpers::it_throws_error_if_property_do_not_exist":0,"P\\Tests\\Features\\Helpers::it_allows_to_call_underlying_protected_private_methods":0.004,"P\\Tests\\Features\\Helpers::it_throws_error_if_method_do_not_exist":0,"P\\Tests\\Features\\Helpers::it_can_forward_unexpected_calls_to_any_global_function":0,"P\\Tests\\Features\\Helpers::it_can_use_helpers_from_helpers_file":0,"P\\Tests\\Features\\HigherOrderTests::it_proxies_calls_to_object":0,"P\\Tests\\Features\\HigherOrderTests::it_is_capable_doing_multiple_assertions":0,"P\\Tests\\Features\\HigherOrderTests::it_resolves_expect_callables_correctly":0,"P\\Tests\\Features\\HigherOrderTests::does_not_treat_method_names_as_callables":0,"P\\Tests\\Features\\HigherOrderTests::it_can_defer_a_method_until_after_test_setup":0,"P\\Tests\\Features\\HigherOrderTests::it_can_pass_datasets_into_the_expect_callables#(1, 2, 3)":0,"P\\Tests\\Features\\HigherOrderTests::it_can_pass_datasets_into_the_defer_callable#(1, 2, 3)":0,"P\\Tests\\Features\\HigherOrderTests::it_can_pass_shared_datasets_into_callables#(1)":0,"P\\Tests\\Features\\HigherOrderTests::it_can_pass_shared_datasets_into_callables#(2)":0,"P\\Tests\\Features\\Incompleted::incompleted":0.001,"P\\Tests\\Features\\Incompleted::it_is_incompleted":0,"P\\Tests\\Features\\Incompleted::it_is_incompleted_even_with_method_calls_like_skip":0,"P\\Tests\\Features\\Incompleted::it_is_incompleted_even_with_method_calls_like_group":0,"P\\Tests\\Features\\Incompleted::it_is_not_incompleted_because_of_expect":0,"P\\Tests\\Features\\Incompleted::it_is_not_incompleted_because_of_assert":0,"P\\Tests\\Features\\Incompleted::it_is_not_incompleted_because_of_test_with_assertions":0,"P\\Tests\\Features\\It::it_is_a_test":0,"P\\Tests\\Features\\It::it_is_a_higher_order_message_test":0,"P\\Tests\\Features\\PendingHigherOrderTests::get__foo_":0,"P\\Tests\\Features\\PendingHigherOrderTests::get__foo______get__bar______expect_true_____toBeTrue_":0,"P\\Tests\\Features\\PendingHigherOrderTests::get__foo______expect_true_____toBeTrue_":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory1\\TestFileInNestedDirectoryWithDatasetsFile::uses_dataset#(1)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory1\\TestFileInNestedDirectoryWithDatasetsFile::uses_dataset#(2)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory1\\TestFileInNestedDirectoryWithDatasetsFile::uses_dataset#(3)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory1\\TestFileInNestedDirectoryWithDatasetsFile::uses_dataset#(4)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory1\\TestFileInNestedDirectoryWithDatasetsFile::uses_dataset#(5)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory1\\TestFileInNestedDirectoryWithDatasetsFile::uses_dataset#('ScopedDatasets\/NestedDirector...ts.php')":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory1\\TestFileInNestedDirectoryWithDatasetsFile::the_right_dataset_is_taken":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory2\\TestFileInNestedDirectory::uses_dataset#(1)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory2\\TestFileInNestedDirectory::uses_dataset#(2)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory2\\TestFileInNestedDirectory::uses_dataset#(3)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory2\\TestFileInNestedDirectory::uses_dataset#(4)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory2\\TestFileInNestedDirectory::uses_dataset#(5)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory2\\TestFileInNestedDirectory::uses_dataset#('ScopedDatasets\/Datasets\/Scoped.php')":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\NestedDirectory2\\TestFileInNestedDirectory::the_right_dataset_is_taken":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithLocallyDefinedDataset::uses_dataset#(1)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithLocallyDefinedDataset::uses_dataset#(2)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithLocallyDefinedDataset::uses_dataset#(3)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithLocallyDefinedDataset::uses_dataset#(4)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithLocallyDefinedDataset::uses_dataset#(5)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithLocallyDefinedDataset::uses_dataset#('ScopedDatasets\/ScopedDatasets.php')":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithLocallyDefinedDataset::the_right_dataset_is_taken":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithScopedDataset::uses_dataset#(1)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithScopedDataset::uses_dataset#(2)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithScopedDataset::uses_dataset#(3)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithScopedDataset::uses_dataset#(4)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithScopedDataset::uses_dataset#(5)":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithScopedDataset::uses_dataset#('ScopedDatasets\/Datasets\/Scoped.php')":0,"P\\Tests\\Features\\ScopedDatasets\\Directory\\TestFileWithScopedDataset::the_right_dataset_is_taken":0,"P\\Tests\\Features\\ScopedDatasets\\TestFileOutOfScope::uses_dataset#(1)":0,"P\\Tests\\Features\\ScopedDatasets\\TestFileOutOfScope::uses_dataset#(2)":0,"P\\Tests\\Features\\ScopedDatasets\\TestFileOutOfScope::the_right_dataset_is_taken":0,"P\\Tests\\Features\\Skip::it_do_not_skips":0,"P\\Tests\\Features\\Skip::it_skips_with_truthy":0,"P\\Tests\\Features\\Skip::it_skips_with_truthy_condition_by_default":0,"P\\Tests\\Features\\Skip::it_skips_with_message":0,"P\\Tests\\Features\\Skip::it_skips_with_truthy_closure_condition":0,"P\\Tests\\Features\\Skip::it_do_not_skips_with_falsy_closure_condition":0,"P\\Tests\\Features\\Skip::it_skips_with_condition_and_message":0,"P\\Tests\\Features\\Skip::it_skips_when_skip_after_assertion":0,"P\\Tests\\Features\\Skip::it_can_use_something_in_the_test_case_as_a_condition":0,"P\\Tests\\Features\\Skip::it_can_user_higher_order_callables_and_skip":0,"P\\Tests\\Features\\Test::a_test":0,"P\\Tests\\Features\\Test::higher_order_message_test":0,"P\\Tests\\Features\\ThrowsNoExceptions::it_allows_access_to_the_underlying_expectNotToPerformAssertions_method":0,"P\\Tests\\Features\\ThrowsNoExceptions::it_allows_performing_no_expectations_without_being_risky":0,"P\\Tests\\Features\\Todo::something_todo_later":0,"P\\Tests\\Features\\Todo::something_todo_later_chained":0,"P\\Tests\\Features\\Todo::something_todo_later_chained_and_with_function_body":0,"P\\Tests\\Features\\Todo::it_does_something_within_a_file_with_a_todo":0,"P\\Tests\\Fixtures\\DirectoryWithTests\\ExampleTest::it_example_1":0,"P\\Tests\\Fixtures\\ExampleTest::it_example_2":0,"P\\Tests\\Hooks\\AfterAllTest::global_afterAll_execution_order":0,"P\\Tests\\Hooks\\AfterAllTest::it_only_gets_called_once_per_file":0,"P\\Tests\\Hooks\\AfterEachTest::global_afterEach_execution_order":0,"P\\Tests\\Hooks\\BeforeAllTest::global_beforeAll_execution_order":0,"P\\Tests\\Hooks\\BeforeAllTest::it_only_gets_called_once_per_file":0,"P\\Tests\\Hooks\\BeforeEachTest::global_beforeEach_execution_order":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNamecyFfd983TaoNeeMP::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\ATestWithSpaces::it_runs_file_names_like__A_Test_With_Spaces_php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\AdditionalFileExtension::it_runs_file_names_like__AdditionalFileExtension_spec_php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\FolderWithAn\\ExampleTest::custom_traits_can_be_used":0,"P\\Tests\\PHPUnit\\CustomAffixes\\FolderWithAn\\ExampleTest::trait_applied_in_this_file":0,"P\\Tests\\PHPUnit\\CustomAffixes\\ManyExtensions::it_runs_file_names_like__ManyExtensions_class_test_php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\TestCaseWithQuotes::it_runs_file_names_like__Test__Case__With_Quotes_php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\kebabcasespec::it_runs_file_names_like__kebab_case_spec_php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\snakecasespec::it_runs_file_names_like__snake_case_spec_php_":0,"Tests\\CustomTestCase\\ExecutedTest::testThatGetsExecuted":0,"P\\Tests\\PHPUnit\\CustomTestCase\\UsesPerDirectory::closure_was_bound_to_CustomTestCase":0,"P\\Tests\\PHPUnit\\CustomTestCaseInSubFolders\\SubFolder\\SubFolder\\UsesPerSubDirectory::closure_was_bound_to_CustomTestCase":0,"P\\Tests\\PHPUnit\\CustomTestCaseInSubFolders\\SubFolder2\\UsesPerFile::custom_traits_can_be_used":0,"P\\Tests\\PHPUnit\\CustomTestCaseInSubFolders\\SubFolder2\\UsesPerFile::trait_applied_in_this_file":0,"P\\Tests\\Playground::basic":0,"P\\Tests\\Plugins\\Traits::it_allows_global_uses":0,"P\\Tests\\Plugins\\Traits::it_allows_multiple_global_uses_registered_in_the_same_path":0,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_no_phpunit_file_is_found":0,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_phpunit_is_not_a_valid_XML":0,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_failing_to_read_phpunit_content":0,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_there_is_no_test_suites_directory":0,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_test_suite_directory_has_no_value":0,"P\\Tests\\Unit\\ConfigLoader::it_fallbacks_to_default_path_if_test_suite_directory_does_not_exist":0,"P\\Tests\\Unit\\ConfigLoader::it_returns_the_parent_folder_of_first_test_suite_directory":0,"P\\Tests\\Unit\\Console\\Help::it_outputs_the_help_information_when___help_is_used":0.001,"P\\Tests\\Unit\\DatasetsTests::it_show_only_the_names_of_named_datasets_in_their_description":0,"P\\Tests\\Unit\\DatasetsTests::it_show_the_actual_dataset_of_non_named_datasets_in_their_description":0,"P\\Tests\\Unit\\DatasetsTests::it_show_only_the_names_of_multiple_named_datasets_in_their_description":0,"P\\Tests\\Unit\\DatasetsTests::it_show_the_actual_dataset_of_multiple_non_named_datasets_in_their_description":0,"P\\Tests\\Unit\\DatasetsTests::it_show_the_correct_description_for_mixed_named_and_not_named_datasets":0,"P\\Tests\\Unit\\Expectations\\OppositeExpectation::it_throw_expectation_failed_exception_with_string_argument":0,"P\\Tests\\Unit\\Expectations\\OppositeExpectation::it_throw_expectation_failed_exception_with_array_argument":0,"P\\Tests\\Unit\\Plugins\\Environment::environment_is_set_to_CI_when___ci_option_is_used":0,"P\\Tests\\Unit\\Plugins\\Environment::environment_is_set_to_Local_when___ci_option_is_not_used":0,"P\\Tests\\Unit\\Plugins\\Retry::it_retries_if___retry_argument_is_used":0,"P\\Tests\\Unit\\Support\\Backtrace::it_gets_file_name_from_called_file":0,"P\\Tests\\Unit\\Support\\Container::it_exists":0,"P\\Tests\\Unit\\Support\\Container::it_gets_an_instance":0,"P\\Tests\\Unit\\Support\\Container::autowire":0,"P\\Tests\\Unit\\Support\\Container::it_creates_an_instance_and_resolves_parameters":0,"P\\Tests\\Unit\\Support\\Container::it_creates_an_instance_and_resolves_also_sub_parameters":0,"P\\Tests\\Unit\\Support\\Container::it_can_resolve_builtin_value_types":0,"P\\Tests\\Unit\\Support\\Container::it_cannot_resolve_a_parameter_without_type":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_directory#('\/var\/www\/project\/tests\/Datase...rs.php', true)":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_directory#('\/var\/www\/project\/tests\/Datasets.php', false)":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_directory#('\/var\/www\/project\/tests\/Featur...rs.php', true)":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_directory#('\/var\/www\/project\/tests\/Featur...rs.php', false)":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_directory#('\/var\/www\/project\/tests\/Featur...ts.php', false)":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_php_file#('\/var\/www\/project\/tests\/Datase...rs.php', false)":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_php_file#('\/var\/www\/project\/tests\/Datasets.php', true)":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_php_file#('\/var\/www\/project\/tests\/Featur...rs.php', false) #1":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_php_file#('\/var\/www\/project\/tests\/Featur...rs.php', false) #2":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_can_check_if_dataset_is_defined_inside_a_Datasets_php_file#('\/var\/www\/project\/tests\/Featur...ts.php', true)":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_computes_the_dataset_scope#('\/var\/www\/project\/tests\/Datase...rs.php', '\/var\/www\/project\/tests')":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_computes_the_dataset_scope#('\/var\/www\/project\/tests\/Datasets.php', '\/var\/www\/project\/tests')":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_computes_the_dataset_scope#('\/var\/www\/project\/tests\/Featur...rs.php', '\/var\/www\/project\/tests\/Features')":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_computes_the_dataset_scope#('\/var\/www\/project\/tests\/Featur...rs.php', '\/var\/www\/project\/tests\/Featur...rs.php') #1":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_computes_the_dataset_scope#('\/var\/www\/project\/tests\/Featur...ts.php', '\/var\/www\/project\/tests\/Features')":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_computes_the_dataset_scope#('\/var\/www\/project\/tests\/Featur...rs.php', '\/var\/www\/project\/tests\/Featur...ollers')":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_computes_the_dataset_scope#('\/var\/www\/project\/tests\/Featur...rs.php', '\/var\/www\/project\/tests\/Featur...rs.php') #2":0,"P\\Tests\\Unit\\Support\\DatasetInfo::it_computes_the_dataset_scope#('\/var\/www\/project\/tests\/Featur...ts.php', '\/var\/www\/project\/tests\/Featur...ollers')":0,"P\\Tests\\Unit\\Support\\Reflection::it_gets_file_name_from_closure":0,"P\\Tests\\Unit\\Support\\Reflection::it_gets_property_values":0,"P\\Tests\\Unit\\Support\\Str::it_evaluates_the_code#('version()', 'version__')":0,"P\\Tests\\Unit\\Support\\Str::it_evaluates_the_code#('version__ ', 'version___')":0,"P\\Tests\\Unit\\Support\\Str::it_evaluates_the_code#('version\\', 'version_')":0,"P\\Tests\\Unit\\TestSuite::it_does_not_allow_to_add_the_same_test_description_twice":0,"P\\Tests\\Unit\\TestSuite::it_alerts_users_about_tests_with_arguments_but_no_input":0,"P\\Tests\\Unit\\TestSuite::it_can_return_an_array_of_all_test_suite_filenames":0,"P\\Tests\\Unit\\TestSuite::it_can_filter_the_test_suite_filenames_to_those_with_the_only_method":0,"P\\Tests\\Unit\\TestSuite::it_does_not_filter_the_test_suite_filenames_to_those_with_the_only_method_when_working_in_CI_pipeline":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestName6rmgo1f1GLn8efOC::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameVHq29Cibw1uV6U1a::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNamea7cf4nrSZKHtnPDI::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameEu5uRcMG9MMq4iY0::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNamekRbYzSQbo3eEDuZJ::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNamel9LewlRc8ysgFzwA::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameP6CLcxXtYKqPawGB::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameblQKRYk4WHbDgYaq::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameC83odp1h10QW1AG8::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameaF5nmNeyTIsxjuvc::it_runs_file_names_like_______________php_":0,"P\\Tests\\Temporary\\A::it_can_run_a_test_1":0,"P\\Tests\\Temporary\\A::it_can_run_a_test_2":0,"P\\Tests\\Temporary\\B::it_can_run_a_test_3":0.001,"P\\Tests\\Temporary\\B::it_can_run_a_test_4":0,"P\\Tests\\Temporary\\A::it_can_run_a_test_3":0,"P\\Tests\\Temporary\\A::it_can_run_a_test_4":0,"P\\Tests\\Temporary\\A::it_can_run_a_test_5":0.003,"P\\Tests\\Temporary\\A::it_can_run_a_test_6":0,"P\\Tests\\Temporary\\A::it_can_run_a_test_5#(1)":0,"P\\Tests\\Temporary\\A::it_can_run_a_test_5#(2)":0,"P\\Tests\\Temporary\\A::it_can_run_a_test_5#(3)":0.001,"P\\Tests\\Temporary\\A::it_can_run_a_test_5#(4)":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNamekWQNLuXZGVg7drbd::it_runs_file_names_like_______________php_":0,"P\\Tests\\Unit\\Plugins\\Retry::it_orders_by_defects_and_stop_on_defects_if_when___retry_is_used_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameMfC12NUVxMPFsfZt::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameqFOiUFZS8TAhZdx2::it_runs_file_names_like_______________php_":0,"P\\Tests\\Visual\\Help::visual_snapshot_of_help_command_output":0.87,"P\\Tests\\Visual\\SingleTestOrDirectory::allows_to_run_a_single_test":0.086,"P\\Tests\\Visual\\SingleTestOrDirectory::allows_to_run_a_directory":0.085,"P\\Tests\\Visual\\SingleTestOrDirectory::it_disable_decorating_printer_when_colors_is_set_to_never":0.082,"P\\Tests\\Visual\\Success::visual_snapshot_of_test_suite_on_success":1.648,"P\\Tests\\Visual\\TeamCity::visual_snapshot_of_team_city#('Failure.php')":0.084,"P\\Tests\\Visual\\TeamCity::visual_snapshot_of_team_city#('SuccessOnly.php')":0.079,"P\\Tests\\Visual\\Todo::todo":0.098,"P\\Tests\\Visual\\Version::visual_snapshot_of_help_command_output":0.061,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameGa5Hof5xYfgU7lMm::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNamegI0knrpHah3koRU5::it_runs_file_names_like_______________php_":0,"P\\Tests\\PHPUnit\\CustomAffixes\\InvalidTestNameK1b2wCDaZR2fNzot::it_runs_file_names_like_______________php_":0}} \ No newline at end of file diff --git a/composer.json b/composer.json index c76fa451..5417ae05 100644 --- a/composer.json +++ b/composer.json @@ -81,6 +81,7 @@ "extra": { "pest": { "plugins": [ + "Pest\\Plugins\\Cache", "Pest\\Plugins\\Coverage", "Pest\\Plugins\\Init", "Pest\\Plugins\\Environment", diff --git a/phpunit.xml b/phpunit.xml index d1b754d0..13e5b2af 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -5,14 +5,12 @@ beStrictAboutTestsThatDoNotTestAnything="true" beStrictAboutOutputDuringTests="true" bootstrap="vendor/autoload.php" - cacheResult="false" colors="true" failOnRisky="true" failOnWarning="true" processIsolation="false" stopOnError="false" stopOnFailure="false" - cacheDirectory=".phpunit.cache" backupStaticProperties="false" displayDetailsOnIncompleteTests="true" displayDetailsOnSkippedTests="true" diff --git a/src/Bootstrappers/BootSubscribers.php b/src/Bootstrappers/BootSubscribers.php index 8c21c35d..201afed0 100644 --- a/src/Bootstrappers/BootSubscribers.php +++ b/src/Bootstrappers/BootSubscribers.php @@ -22,10 +22,7 @@ final class BootSubscribers implements Bootstrapper */ private const SUBSCRIBERS = [ Subscribers\EnsureConfigurationIsValid::class, - Subscribers\EnsureConfigurationDefaults::class, - Subscribers\EnsureRetryRepositoryExists::class, - Subscribers\EnsureErroredTestsAreRetryable::class, - Subscribers\EnsureFailedTestsAreRetryable::class, + Subscribers\EnsureConfigurationIsAvailable::class, Subscribers\EnsureTeamCityEnabled::class, ]; diff --git a/src/Factories/TestCaseMethodFactory.php b/src/Factories/TestCaseMethodFactory.php index 1f338db6..98643d54 100644 --- a/src/Factories/TestCaseMethodFactory.php +++ b/src/Factories/TestCaseMethodFactory.php @@ -8,7 +8,6 @@ use Closure; use Pest\Contracts\AddsAnnotations; use Pest\Exceptions\ShouldNotHappen; use Pest\Factories\Concerns\HigherOrderable; -use Pest\Plugins\Retry; use Pest\Repositories\DatasetsRepository; use Pest\Support\Str; use Pest\TestSuite; @@ -129,12 +128,6 @@ final class TestCaseMethodFactory $methodName = Str::evaluable($this->description); - $retryRepository = TestSuite::getInstance()->retryRepository; - - if (Retry::$retrying && ! $retryRepository->isEmpty() && ! $retryRepository->exists(sprintf('%s::%s', $classFQN, $methodName))) { - return ''; - } - $datasetsCode = ''; $annotations = ['@test']; $attributes = []; diff --git a/src/Plugins/Cache.php b/src/Plugins/Cache.php new file mode 100644 index 00000000..a31459e6 --- /dev/null +++ b/src/Plugins/Cache.php @@ -0,0 +1,37 @@ +pushArgument( + sprintf('--cache-directory=%s', realpath(self::TEMPORARY_FOLDER)), + $arguments + ); + + return $this->pushArgument('--cache-result', $arguments); + } +} diff --git a/src/Plugins/Retry.php b/src/Plugins/Retry.php index f961018e..e87eb8e9 100644 --- a/src/Plugins/Retry.php +++ b/src/Plugins/Retry.php @@ -13,18 +13,18 @@ final class Retry implements HandlesArguments { use Concerns\HandleArguments; - /** - * Whether it should show retry or not. - */ - public static bool $retrying = false; - /** * {@inheritDoc} */ public function handleArguments(array $arguments): array { - self::$retrying = $this->hasArgument('--retry', $arguments); + if ($this->hasArgument('--retry', $arguments)) { + $arguments = $this->popArgument('--retry', $arguments); - return $this->popArgument('--retry', $arguments); + $arguments = $this->pushArgument('--order-by=defects', $arguments); + $arguments = $this->pushArgument(' --stop-on-defect', $arguments); + } + + return $arguments; } } diff --git a/src/Repositories/RetryRepository.php b/src/Repositories/RetryRepository.php deleted file mode 100644 index e2a158c2..00000000 --- a/src/Repositories/RetryRepository.php +++ /dev/null @@ -1,91 +0,0 @@ -save([...$this->all(), ...[$element]]); - } - - /** - * Clears the existing file, if any, and re-creates it. - */ - public function boot(): void - { - @unlink(self::TEMPORARY_FOLDER.'/'.$this->filename.'.json'); // @phpstan-ignore-line - - $this->save([]); - } - - /** - * Checks if there is any element. - */ - public function isEmpty(): bool - { - return $this->all() === []; - } - - /** - * Checks if the given element exists. - */ - public function exists(string $element): bool - { - return in_array($element, $this->all(), true); - } - - /** - * Gets all elements. - * - * @return array - */ - private function all(): array - { - $path = self::TEMPORARY_FOLDER.'/'.$this->filename.'.json'; - - $contents = file_exists($path) ? file_get_contents($path) : '{}'; - - assert(is_string($contents)); - - $all = json_decode($contents, true, 512, JSON_THROW_ON_ERROR); - - return is_array($all) ? $all : []; - } - - /** - * Save the given elements. - * - * @param array $elements - */ - private function save(array $elements): void - { - $contents = json_encode($elements, JSON_THROW_ON_ERROR); - - file_put_contents(self::TEMPORARY_FOLDER.'/'.$this->filename.'.json', $contents); - } -} diff --git a/src/Subscribers/EnsureConfigurationDefaults.php b/src/Subscribers/EnsureConfigurationIsAvailable.php similarity index 54% rename from src/Subscribers/EnsureConfigurationDefaults.php rename to src/Subscribers/EnsureConfigurationIsAvailable.php index ce94089d..f23ee108 100644 --- a/src/Subscribers/EnsureConfigurationDefaults.php +++ b/src/Subscribers/EnsureConfigurationIsAvailable.php @@ -4,19 +4,21 @@ declare(strict_types=1); namespace Pest\Subscribers; +use Pest\Support\Container; use PHPUnit\Event\TestRunner\Configured; use PHPUnit\Event\TestRunner\ConfiguredSubscriber; +use PHPUnit\TextUI\Configuration\Configuration; /** * @internal */ -final class EnsureConfigurationDefaults implements ConfiguredSubscriber +final class EnsureConfigurationIsAvailable implements ConfiguredSubscriber { /** * Runs the subscriber. */ public function notify(Configured $event): void { - // TODO... + Container::getInstance()->add(Configuration::class, $event->configuration()); } } diff --git a/src/Subscribers/EnsureErroredTestsAreRetryable.php b/src/Subscribers/EnsureErroredTestsAreRetryable.php deleted file mode 100644 index 6eb2661d..00000000 --- a/src/Subscribers/EnsureErroredTestsAreRetryable.php +++ /dev/null @@ -1,23 +0,0 @@ -retryRepository->add($event->test()->id()); - } -} diff --git a/src/Subscribers/EnsureFailedTestsAreRetryable.php b/src/Subscribers/EnsureFailedTestsAreRetryable.php deleted file mode 100644 index 73468723..00000000 --- a/src/Subscribers/EnsureFailedTestsAreRetryable.php +++ /dev/null @@ -1,23 +0,0 @@ -retryRepository->add($event->test()->id()); - } -} diff --git a/src/Subscribers/EnsureRetryRepositoryExists.php b/src/Subscribers/EnsureRetryRepositoryExists.php deleted file mode 100644 index 91226b0c..00000000 --- a/src/Subscribers/EnsureRetryRepositoryExists.php +++ /dev/null @@ -1,23 +0,0 @@ -retryRepository->boot(); - } -} diff --git a/src/TestSuite.php b/src/TestSuite.php index bdec4d4e..68bc842f 100644 --- a/src/TestSuite.php +++ b/src/TestSuite.php @@ -9,7 +9,6 @@ use Pest\Repositories\AfterAllRepository; use Pest\Repositories\AfterEachRepository; use Pest\Repositories\BeforeAllRepository; use Pest\Repositories\BeforeEachRepository; -use Pest\Repositories\RetryRepository; use Pest\Repositories\TestRepository; use PHPUnit\Framework\TestCase; @@ -48,11 +47,6 @@ final class TestSuite */ public AfterAllRepository $afterAll; - /** - * Holds the retry repository. - */ - public RetryRepository $retryRepository; - /** * Holds the root path. */ @@ -75,7 +69,6 @@ final class TestSuite $this->tests = new TestRepository(); $this->afterEach = new AfterEachRepository(); $this->afterAll = new AfterAllRepository(); - $this->retryRepository = new RetryRepository('retry'); $this->rootPath = (string) realpath($rootPath); } diff --git a/tests/.snapshots/Failure.php.inc b/tests/.snapshots/Failure.php.inc index 51b54578..6e04c2ba 100644 --- a/tests/.snapshots/Failure.php.inc +++ b/tests/.snapshots/Failure.php.inc @@ -1,6 +1,6 @@ ##teamcity[testSuiteStarted name='Tests/tests/Failure' locationHint='file://tests/.tests/Failure.php' flowId='1234'] ##teamcity[testStarted name='it can fail with comparison' locationHint='pest_qn://tests/.tests/Failure.php::it can fail with comparison' flowId='1234'] -##teamcity[testFailed name='it can fail with comparison' message='Failed asserting that true matches expected false.' details='at src/Mixins/Expectation.php:342|nat src/Support/ExpectationPipeline.php:75|nat src/Support/ExpectationPipeline.php:79|nat src/Expectation.php:300|nat tests/.tests/Failure.php:6|nat src/Factories/TestCaseMethodFactory.php:106|nat src/Concerns/Testable.php:262|nat src/Support/ExceptionTrace.php:28|nat src/Concerns/Testable.php:262|nat src/Concerns/Testable.php:217|nat src/Kernel.php:79' type='comparisonFailure' actual='true' expected='false' flowId='1234'] +##teamcity[testFailed name='it can fail with comparison' message='Failed asserting that true matches expected false.' details='at src/Mixins/Expectation.php:342|nat src/Support/ExpectationPipeline.php:75|nat src/Support/ExpectationPipeline.php:79|nat src/Expectation.php:300|nat tests/.tests/Failure.php:6|nat src/Factories/TestCaseMethodFactory.php:105|nat src/Concerns/Testable.php:262|nat src/Support/ExceptionTrace.php:28|nat src/Concerns/Testable.php:262|nat src/Concerns/Testable.php:217|nat src/Kernel.php:79' type='comparisonFailure' actual='true' expected='false' flowId='1234'] ##teamcity[testFinished name='it can fail with comparison' duration='100000' flowId='1234'] ##teamcity[testStarted name='it can be ignored because of no assertions' locationHint='pest_qn://tests/.tests/Failure.php::it can be ignored because of no assertions' flowId='1234'] ##teamcity[testIgnored name='it can be ignored because of no assertions' message='This test did not perform any assertions' details='' flowId='1234'] @@ -9,7 +9,7 @@ ##teamcity[testIgnored name='it can be ignored because it is skipped' message='This test was ignored.' details='' flowId='1234'] ##teamcity[testFinished name='it can be ignored because it is skipped' duration='100000' flowId='1234'] ##teamcity[testStarted name='it can fail' locationHint='pest_qn://tests/.tests/Failure.php::it can fail' flowId='1234'] -##teamcity[testFailed name='it can fail' message='oh noo' details='at tests/.tests/Failure.php:18|nat src/Factories/TestCaseMethodFactory.php:106|nat src/Concerns/Testable.php:262|nat src/Support/ExceptionTrace.php:28|nat src/Concerns/Testable.php:262|nat src/Concerns/Testable.php:217|nat src/Kernel.php:79' flowId='1234'] +##teamcity[testFailed name='it can fail' message='oh noo' details='at tests/.tests/Failure.php:18|nat src/Factories/TestCaseMethodFactory.php:105|nat src/Concerns/Testable.php:262|nat src/Support/ExceptionTrace.php:28|nat src/Concerns/Testable.php:262|nat src/Concerns/Testable.php:217|nat src/Kernel.php:79' flowId='1234'] ##teamcity[testFinished name='it can fail' duration='100000' flowId='1234'] ##teamcity[testStarted name='it is not done yet' locationHint='pest_qn://tests/.tests/Failure.php::it is not done yet' flowId='1234'] ##teamcity[testIgnored name='it is not done yet' message='This test was ignored.' details='' flowId='1234'] diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 986c03c4..cce6c952 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -843,7 +843,7 @@ ✓ environment is set to Local when --ci option is not used PASS Tests\Unit\Plugins\Retry - ✓ it retries if --retry argument is used + ✓ it orders by defects and stop on defects if when --retry is used PASS Tests\Unit\Support\Backtrace ✓ it gets file name from called file diff --git a/tests/Unit/Plugins/Retry.php b/tests/Unit/Plugins/Retry.php index e0033821..a95ef62a 100644 --- a/tests/Unit/Plugins/Retry.php +++ b/tests/Unit/Plugins/Retry.php @@ -2,14 +2,13 @@ use Pest\Plugins\Retry; -beforeEach(fn () => Retry::$retrying = false); - -afterEach(fn () => Retry::$retrying = false); - -it('retries if --retry argument is used', function () { +it('orders by defects and stop on defects if when --retry is used ', function () { $retry = new Retry(); - $retry->handleArguments(['--retry']); + $arguments = $retry->handleArguments(['--retry']); - expect(Retry::$retrying)->toBeTrue(); + expect($arguments)->toBe([ + '--order-by=defects', + ' --stop-on-defect', + ]); });