The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

TEST::MORE::BASH

Write Perl tests in Bash

SYNOPSIS

A file t/test.t:

    #!/usr/bin/env test-more-bash

    plan 8

    pass "This test will always 'pass'"

    t() (
      fail "This test will always 'fail'"
    )
    todo "Testing 'todo'" t

    note "NOTE: This is awesome"

    diag "This is a WARNING"

    ok true \
      "Testing 'ok'"

    is "$((2 + 2))" 4 \
      "2 + 2 'is' 4"

    isnt "$((2 + 2))" 5 \
      "2 + 2 'isnt' 5"

    like "I like pie!" \
      "/\<like\>/" \
      "Testing 'like'"

    unlike \
      "Please like me on Facebook" \
      "/\<unlike\>/" \
      "Testing 'unlike'"

    t() (
      danger zone
    )
    skip "Skipping - Highway to the danger zone" t

Run prove t/test.t:

    test/test.t ..
    1..8
    ok 1 - This test will always 'pass'
    not ok 2 # TODO & SKIP Testing 'todo'
    # NOTE: This is awesome
    ok 3 - Testing 'ok'
    # This is a WARNING!
    ok 4 - 2 + 2 'is' 4
    ok 5 - 2 + 2 'isnt' 5
    ok 6 - Testing 'like'
    ok 7 - Testing 'unlike'
    ok 8 # skip Skipping - Highway to the danger zone
    ok
    All tests successful.
    Files=1, Tests=8,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.12 cusr  0.02 csys =  0.17 CPU)
    Result: PASS

DESCRIPTION

Test::More::Bash let's you write Perl module tests in Bash.

You just add this shebang line to a t/test-file.t:

    #!/usr/bin/env test-more-bash

Alternate Usage

Instead of using a special shebang line to get the desired behavior, you can start with this Perl line:

    use Test::More::Bash;

The test file will initially be run as Perl, but Test::More::Bash will exec a command that runs the file as Bash. The Bash runtime code defines a pass through Bash function called use that will effectively ignore the use Test::More::Bash; line.

NOTE: Passing extra parameters on the use Test::More::Bash line is not yet supported. In other words, you can't do:

    use Test::More::Bash tests => 5;

Instead just do:

    use Test::More::Bash;

    plan 5

AUTHORS

Copyright 2022 by Ingy döt Net

This library is free software and may be distributed under the same terms as perl itself.