From 2d6f07d759103700030e5b8d619e7d3bfd4d0b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Mon, 23 May 2016 18:16:24 +0200 Subject: [PATCH] Adapt to Test-Simple-1.302019 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch removes touching internals of the Test::Builder. More code could be removed probably. Also I removed the trailing END test in t/plans.t because number of expected tests is not a global variable anymore and thus it's not accessible out of the test scope. I do not understand how t/cookbook.t gets plan defined to no_plan, but if I kept setting plan to no_plan unconditionally in the _build_runner_plan's else branch, Test::Builder would complain about multiple setting to no_plan. Actually if all the branches after the "return $plan if $self->dry_run;" are removed, the tests will pass. Maybe current Test::Builder is smart enough to count the expected tests properly. CPAN RT#65249 Signed-off-by: Petr Písař --- lib/Test/Able/Role/Meta/Class.pm | 25 ++++++++++++++----------- t/plans.t | 5 ----- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/lib/Test/Able/Role/Meta/Class.pm b/lib/Test/Able/Role/Meta/Class.pm index ab31e92..1f42c4b 100644 --- a/lib/Test/Able/Role/Meta/Class.pm +++ b/lib/Test/Able/Role/Meta/Class.pm @@ -304,6 +304,7 @@ sub run_tests { } # Finalize planning for this run. + $self->builder->{able_Finalized} = 1; $self->clear_runner_plan; $self->runner_plan; $self->clear_last_runner_plan; @@ -348,7 +349,7 @@ sub run_methods { } unless ( $setup_exception_count || $self->dry_run ) { - my $tests_before = $self->builder->{Curr_Test}; + my $tests_before = $self->builder->current_test; eval { $self->current_test_object->$method_name; }; if ( my $exception = $@ ) { @@ -368,7 +369,7 @@ sub run_methods { } if ( $self->on_method_plan_fail && $method->plan =~ /^\d+$/ ) { - my $tests_diff = $self->builder->{Curr_Test} - $tests_before; + my $tests_diff = $self->builder->current_test - $tests_before; if ( $tests_diff != $method->plan ) { my $msg = "Method $method_name planned " . $method->plan . " tests but ran $tests_diff."; @@ -550,24 +551,27 @@ sub _build_runner_plan { return $plan if $self->dry_run; - $self->builder->no_plan unless $self->builder->has_plan; - - # Update Test::Builder. - if ( $self->builder->{No_Plan} || $self->builder->{was_No_Plan} ) { + if ( !defined $self->builder->has_plan || $self->builder->has_plan eq 'no_plan' || $self->builder->{was_No_Plan} ) { if ( $plan =~ /^\d+$/ ) { if ( $self->has_last_runner_plan ) { my $last = $self->last_runner_plan; my $plan_diff = $plan - ( $last eq 'no_plan' ? 0 : $last ); - $self->builder->{Expected_Tests} += $plan_diff; + $self->builder->{able_Plan} += $plan_diff; + if ($self->builder->{able_Finalized} and !defined $self->builder->has_plan) { + $self->builder->plan(tests => $self->builder->{able_Plan}); + } } else { - $self->builder->{Expected_Tests} += $plan; + $self->builder->{able_Plan} += $plan; } - $self->builder->{No_Plan} = 0; $self->builder->{was_No_Plan} = 1; $self->last_runner_plan( $plan ); } - else { $self->builder->{No_Plan} = 1; } + else { + if ($self->builder->{able_Finalized} and !defined $self->builder->has_plan) { + $self->builder->no_plan; + } + } } return $plan; @@ -587,7 +591,6 @@ sub _hack_test_builder { my $builder = shift; if ( $builder->{was_No_Plan} && $self->runner_plan =~ /\d+/ ) { - $builder->expected_tests( $self->builder->{Expected_Tests} ); $builder->no_header( 1 ); } diff --git a/t/plans.t b/t/plans.t index 38cc9f3..4b48de1 100644 --- a/t/plans.t +++ b/t/plans.t @@ -94,8 +94,3 @@ sub set_plan_on_no_plan_methods { return; } -sub END { - my $tb = Test::Builder->new; - die 'bad plan (' . $tb->expected_tests . ')' - unless $tb->expected_tests == 66; -} -- 2.5.5