Parrot::Test - testing routines for Parrot and language implementations
Set the number of tests to be run like this:
use Parrot::Test tests => 8;
Write individual tests like this:
pasm_output_is(<<'CODE', <<'OUTPUT', "description of test");
print "this is ok\n"
end
CODE
this is ok
OUTPUT
This module provides various Parrot-specific test functions.
The parameter $language
is the language of the code. The parameter $code
is the code that should be executed or transformed. The parameter $expected
is the expected result. The parameter $unexpected
is the unexpected result. The parameter $description
should describe the test.
Any optional parameters can follow. For example, to mark a test as a TODO test (where you know the implementation does not yet work), pass:
todo => 'reason to consider this TODO'
at the end of the argument list. Valid reasons include bug
, unimplemented
, and so on.
Note: you must use a $description
with TODO tests.
language_output_is( $language, $code, $expected, $description)
language_error_output_is( $language, $code, $expected, $description)
- Runs a language test and passes the test if a string comparison of the output with the expected result it true. For
language_error_output_is()
the exit code also has to be non-zero.
language_output_like( $language, $code, $expected, $description)
language_error_output_like( $language, $code, $expected, $description)
- Runs a language test and passes the test if the output matches the expected result. For
language_error_output_like()
the exit code also has to be non-zero.
language_output_isnt( $language, $code, $expected, $description)
language_error_output_isnt( $language, $code, $expected, $description)
- Runs a language test and passes the test if a string comparison if a string comparison of the output with the unexpected result is false. For
language_error_output_isnt()
the exit code also has to be non-zero.
pasm_output_is($code, $expected, $description)
- Runs the Parrot Assembler code and passes the test if a string comparison of the output with the expected result it true.
pasm_error_output_is($code, $expected, $description)
- Runs the Parrot Assembler code and passes the test if a string comparison of the output with the expected result it true and if Parrot exits with a non-zero exit code.
pasm_output_like($code, $expected, $description)
- Runs the Parrot Assembler code and passes the test if the output matches
$expected
.
pasm_error_output_like($code, $expected, $description)
- Runs the Parrot Assembler code and passes the test if the output matches
$expected
and if Parrot exits with a non-zero exit code.
pasm_output_isnt($code, $unexpected, $description)
- Runs the Parrot Assembler code and passes the test if a string comparison of the output with the unexpected result is false.
pasm_error_output_isnt($code, $unexpected, $description)
- Runs the Parrot Assembler code and passes the test if a string comparison of the output with the unexpected result is false and if Parrot exits with a non-zero exit code.
pir_output_is($code, $expected, $description)
- Runs the PIR code and passes the test if a string comparison of output with the expected result is true.
pir_error_output_is($code, $expected, $description)
- Runs the PIR code and passes the test if a string comparison of output with the expected result is true and if Parrot exits with a non-zero exit code.
pir_output_like($code, $expected, $description)
- Runs the PIR code and passes the test if output matches the expected result.
pir_error_output_like($code, $expected, $description)
- Runs the PIR code and passes the test if output matches the expected result and if Parrot exits with a non-zero exit code.
pir_output_isnt($code, $unexpected, $description)
- Runs the PIR code and passes the test if a string comparison of the output with the unexpected result is false.
pir_error_output_isnt($code, $unexpected, $description)
- Runs the PIR code and passes the test if a string comparison of the output with the unexpected result is false and if Parrot exits with a non-zero exit code.
pbc_output_is($code, $expected, $description)
- Runs the Parrot Bytecode and passes the test if a string comparison of output with the expected result is true.
pbc_error_output_is($code, $expected, $description)
- Runs the Parrot Bytecode and passes the test if a string comparison of the output with the expected result is true and if Parrot exits with a non-zero exit code.
pbc_output_like($code, $expected, $description)
- Runs the Parrot Bytecode and passes the test if output matches the expected result.
pbc_error_output_like($code, $expected, $description)
- Runs the Parrot Bytecode and passes the test if output matches the expected result and if Parrot exits with a non-zero exit code.
pbc_output_isnt($code, $unexpected, $description)
- Runs the Parrot Bytecode and passes the test if a string comparison of output with the unexpected result is false.
pbc_error_output_isnt($code, $unexpected, $description)
- Runs the Parrot Bytecode and passes the test if a string comparison of output with the unexpected result is false and if Parrot exits with a non-zero exit code.
pir_2_pasm_is($code, $expected, $description)
- Compile the Parrot Intermediate Representation and generate Parrot Assembler Code. Pass if the generated PASM is $expected.
pir_2_pasm_like($code, $expected, $description)
- Compile the Parrot Intermediate Representation and generate Parrot Assembler Code. Pass if the generated PASM matches $expected.
pir_2_pasm_isnt($code, $unexpected, $description)
- Compile the Parrot Intermediate Representation and generate Parrot Assembler Code. Pass unless the generated PASM is $expected.
c_output_is($code, $expected, $description, %options)
- Compiles and runs the C code, passing the test if a string comparison of output with the expected result it true. Valid options are 'todo' => 'reason' to mark a TODO test.
c_output_like($code, $expected, $description, %options)
- Compiles and runs the C code, passing the test if output matches the expected result. Valid options are 'todo' => 'reason' to mark a TODO test.
c_output_isnt($code, $unexpected, $description, %options)
- Compiles and runs the C code, passing the test if a string comparison of output with the unexpected result is false. Valid options are 'todo' => 'reason' to mark a TODO test.
example_output_is( $example_f, $expected, @todo )
example_output_like( $example_f, $expected, @todo )
example_output_isnt( $example_f, $expected, @todo )
- Determines the language, PIR or PASM, from the extension of
$example_f
and runs the appropriate ^language_output_(is|kike|isnt)
sub. $example_f
is used as a description, so don't pass one.
skip($why, $how_many)
- Use within a
SKIP: { ... }
block to indicate why and how many tests to skip, just like in Test::More.
run_command($command, %options)
- Run the given $command in a cross-platform manner.
- %options include...
STDOUT filehandle to redirect STDOUT to
STDERR filehandle to redirect STDERR to
CD directory to run the command in
- For example:
# equivalent to "cd some_dir && make test"
run_command("make test", CD => "some_dir");
slurp_file($file_name)
- Read the whole file $file_name and return the content as a string.
convert_line_endings($text)
- Convert Win32 style line endins with Unix style line endings.
path_to_parrot()
- Construct a relative path from the current dir to the parrot root dir.
per_test( $ext, $test_no )
- Construct a path for a temporary files. Takes
$0
into account.
pasm_fp_equality_macros()
- Returns a PASM macro that can be used to test fp equality/inequality.
write_code_to_file($code, $code_f)
- Writes
$code
into the file $code_f
.
generate_languages_functions
- Generate functions that are only used by a couple of Parrot::Test::<lang> modules. See RT#43266. This implementation is experimental and currently only works for languages/pipp.
- t/harness
- docs/tests.pod
- "More" in Test
- "Builder" in Test