use v6-alpha; use Test; =pod Test examples This loads some of the scripts of the examples/ dir and compares their output with the expected output (stored in examples/output/). =cut my @examples = < functional/fp functional/reverse algorithms/hanoi algorithms/quicksort algorithms/lambda-calculus junctions/1 junctions/3 junctions/all-all junctions/all-any junctions/any-any junctions/any-any2 junctions/grades vmethods/escape vmethods/bytes vmethods/time vmethods/math japh/curry japh/ipw-japh japh/list_fun3 japh/madgolfer slurpy-list-params/head-neck-tail slurpy-list-params/flatten-arg-lists cashiers overloading >; plan +@examples; if $*OS eq "browser" { skip_rest "Programs running in browsers don't have access to regular IO."; exit; } # We can't run under win32 because of C<\> as path separator instead of C # -- awaiting v6 File::Spec # Actually, nobody really needs the path separator diag "Running under $*OS"; my ($pugs,$redir) = ($*EXECUTABLE_NAME, ">"); if $*OS eq any() { $pugs = 'pugs.exe'; # $redir = '>'; }; sub nonce () { return (".$*PID." ~ int rand 1000) } for @examples -> $ex { my $fn = ~ nonce; my $command = "$pugs examples/$ex.pl $redir $fn"; diag $command; system $command; my $expected = slurp "examples/output/$ex"; my $got = slurp $fn; unlink $fn; is $got, $expected, "$ex.pl worked"; }