NAME
Test::Script::Output - Tests the output of scripts using special comments
SYNOPSIS
use Test::Script::Output;
# in the tested file, file.p6
say "Hello";
Hello
# in test
output-ok( "file.p6", "script runs OK")
# Another tested file, regex.p6
say "Time now is ", now;
/^^Time now/
# in test
output-ok( "regex.p6", "script tested via regex runs OK")
DESCRIPTION
Test::Script::Output
tests the output of scripts. Desired output must be included aas an =output
pod section with the literal output that should be expected from it. If that changes, a regular expression can be used.
You can either set the output explicitly
First line
Second line
Or match the whole output via a regex, which can be used when the output is variable
/^^ Start /
The scripts can include external compunits as long as they're available, and you take care of including all relevant paths via use lib
.
If you want to check out how this works, the biggest collection of examples is at https://github.com/JJ/perl6-quick-reference-apress.
Provided is also a Dockerfile you can use directly for your tests; check it out at https://cloud.docker.com/repository/docker/jjmerelo/perl6-test-script-output/
Use this .travis.yml
for testing your scripts (or something like that, changing the name of the directory)
language: minimal
services:
- docker
install:
- docker pull jjmerelo/perl6-test-script-output
- mkdir t && echo "use Test::Script::Output;for <Chapter7 Chapter8 Chapter9 Chapter10> -> \$d { dir-ok( \$d.IO , 'Scripts in dir ' ~ \$d ~ ' are OK') }" > t/0.t
script: docker run -t -v $TRAVIS_BUILD_DIR:/test jjmerelo/perl6-test-script-output
Methods
output-ok( $file, $msg)
The argument can be either the name of an existing file, or a IO handle for that same file; the $msg
is the test message.
dir-ok( $dir, $msg)
Takes the files with the extension "*.p6" from a dir, and tests them, the test will be OK if all of the files check out.
_get_output( $f )
This is the routine doing the real work of extracting the expected and actual output from the file. It's not exported by default.
AUTHOR
JJ Merelo jjmerelo@gmail.com
Note
This test module was created originally to test the scripts for the book "Perl 6 Quick Reference", which is due to be published later this year by Apress.
COPYRIGHT AND LICENSE
Copyright 2019 JJ Merelo
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.