Skip to content

expected_tests doesn't strictly correspond to runtests #40

@szabgab

Description

@szabgab

expected_tests is documented to correspond to the behaviour of runtests:

> Returns the total number of tests that runtests() will run on the specified class/object.

Which makes sense, but isn't the case currently because of different implementation. While calling PACKAGE->runtests() executes 31 tests in my case currently, the same call with expected_tests always return 0.

The reason is that I have one base class for all my tests currently which doesn't contain any tests itself, but only provides infrastructure, e.g. to read some files and such. As per documentation I can execute runtests on that base class and all tests of all derived subclasses are executed. But if expected_tests of that class is called, the return value wrongly is 0, because derived classes are not taken into account automatically.

One possible workaround is to call _test_classes, which is used by runtests, and forward that result to expected_tests manually.

package Backend::Tests::Base;

use strict;
use warnings;

use base 'Test::Class';

INIT
{
my @testClasses = __PACKAGE__->_test_classes();
#pop(@testClasses);

use Data::Dumper;
warn(Dumper(\@testClasses));
warn(__PACKAGE__->expected_tests(@testClasses));
#  die('No tests to execute found.') unless (__PACKAGE__->expected_tests() > 0);
  Test::Class->runtests();
#warn(__PACKAGE__->expected_tests());
}

Original: https://rt.cpan.org/Ticket/Display.html?id=123142

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions