lua-TestMore
an Unit Testing Framework

References

plan( arg )

plan(2)

pass "one"
pass "two"
gives
1..2
ok 1 - one
ok 2 - two

done_testing( num_tests )

plan 'no_plan'

pass "one"
pass "two"
done_testing()

gives

ok 1 - one
ok 2 - two
1..2

skip_all( reason )

if everything_looks_good then
    plan(7)
else
    skip_all "looks bad"
end

gives

1..0 # SKIP looks bad

BAIL_OUT( reason )

plan(7)

if not require_ok 'MyApp' then
    BAIL_OUT "no MyApp"
end

gives

1..7
not ok 1 - require 'MyApp'
#     module 'MyApp' not found:
#       no field package.preload['MyApp']
#       no file '.\MyApp.lua'
#       ...
Bail out!  no MyApp

and breaks the execution of prove

ok( test [, name] )

nok( test [, name] )

is( got, expected [, name] )

isnt( got, expected [, name] )

like( got, pattern [, name] )

unlike( got, pattern [, name] )

cmp_ok( this, op, that [, name] )

type_ok( val, t [, name] )

pass( name )

fail( name )

require_ok( mod )

eq_array( got, expected [, name] )

is_deeply( got, expected [, name] )

error_is( code [, params_array], expected [, name] )

error_like( code [, params_array], pattern [, name] )

lives_ok( code [, params_array] [, name] )

diag( msg )

note( msg )

skip( reason [, count] )

plan(4)

pass "one"

if true then
    skip("here, segfault", 2)
else
    fail "two"
    fail "three"
end

pass "four"

gives

1..4
ok 1 - one
ok 2 - # skip here, segfault
ok 3 - # skip here, segfault
ok 4 - four

todo_skip( reason )

plan(3)

pass "one"

if true then
    todo_skip "here, segfault"
else
    fail "two"
end

pass "three"

gives

1..3
ok 1 - one
not ok 2 - # TODO & SKIP here, segfault
ok 3 - three

skip_rest( reason )

plan(3)

if not require_ok 'MyApp' then
    skip_rest "no MyApp"
    os.exit()
end

pass "two"
pass "three"

gives

1..3
not ok 1 - require 'MyApp'
#     module 'MyApp' not found:
#       no field package.preload['MyApp']
#       no file '.\MyApp.lua'
#       ...
ok 2 - # skip no MyApp
ok 3 - # skip no MyApp

todo( reason [, count] )

plan(4)

pass "one"

todo( "not yet implemented", 2 )
fail "two"
fail "three"

pass "four"

gives

1..4
ok 1 - one
not ok 2 - two # TODO # not yet implemented
not ok 3 - three # TODO # not yet implemented
ok 4 - four

Examples

$ cat 99example.t
#!/usr/bin/lua
require 'Test.More'

plan(9)

ok(true, "true")
ok(1, "1 is true")
nok(false, "false")
nok(nil, "nil is false")

is(1 + 1, 2, "addition")

like("with aaa", 'a', "pattern matches")
unlike("with aaa", 'b', "pattern doesn't match")

error_like([[error 'MSG']], '^[^:]+:%d+: MSG', "loadstring error")
error_is(error, { 'MSG' }, 'MSG', "function error with param")
$ lua 99example.t
1..9
ok 1 - true
ok 2 - 1 is true
ok 3 - false
ok 4 - nil is false
ok 5 - addition
ok 6 - pattern matches
ok 7 - pattern doesn't match
ok 8 - loadstring error
ok 9 - function error with param
$ prove 99example.t
99example.t .. ok
All tests successful.
Files=1, Tests=9,  0 wallclock secs ( 0.05 usr +  0.20 sys =  0.25 CPU)
Result: PASS