The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.




    use Chj::TEST;
    # or
    use Chj::TEST use => 'Method::Signatures'
        #, use => ['Foo::Bar', qw(bar baz)],
        #, require => 'CGI'
    # ^ this will use or require the indicated modules, and if RUN_TESTS
    # is set and they fail, will gracefully fail with a SKIP testing message
    # (if RUN_TESTS is not set, it will die as normally).

    TEST { 1+1 } 2; # success
    TEST { 1+1 } "2"; # fails,
        # because equality is compared on the result of Data::Dumper

    # compute also result lazily:
    TEST { 1+1 } GIVES {3-1}; # success

    TEST_STDOUT { print "Hello" } "Hello";
    TEST_EXCEPTION { die "Hello" } "Hello"; # " at .. line .." and
                                            # backtrace are cut off

    use Chj::TEST ':all';

    my $result = run_tests(__PACKAGE__);
    is $result->failures, 0; # 0 failures
    is $result->successes > 0, 1;
    is $result->exit_code, 0; # usable for passing to `exit`

    #  or
    #run_tests __PACKAGE__, "Another::Package";
    #  or
    #run_tests_ packages => __PACKAGE__, numbers => [2..4];
    #   aliases package, number, no also accepted

    #  For conditional running the tests as part of a global test suite:
    #perhaps_run_tests "main" or do_something_else;
    #  This will run run_tests("main") iff the RUN_TESTS environment
    #  variable is true, otherwise run do_something_else.


If the `TEST` environmental variable is set to false (as opposed to not set at all), tests are dropped. This saves the memory otherwise required to hold the test code and results.




This is alpha software! Read the status section in the package README or on the website.