|
NAMETest::TAP::Model - DEPRECATED Use TAP::Harness, TAP::Formatter::HTMLSYNOPSISuse Test::TAP::Model; my $t = Test::TAP::Model->new(); # Test::Harness::Straps methods are available, but they aren't enough. # Extra book keeping is required. See the run_test method # here's a convenient wrapper $t = Test::TAP::Model->new_with_tests(glob("t/*.t")); # that's shorthand for new->run_tests $t->run_tests(qw{ t/foo.t t/bar.t }); # every file is an object (Test::TAP::Model::File) my @tests = $t->test_files; # this method returns a structure my $structure = $t->structure; # which is guaranteed to survive serialization my $other_struct = do { my $VAR; eval Data::Dumper::Dumper($structure) }; # the same as $t1 my $t2 = Test::TAP::Model->new_with_struct($other_struct); DESCRIPTIONThis module is a subclass of Test::Harness::Straps (although in an ideal world it would really use delegation).It uses callbacks in the straps object to construct a deep structure, with all the data known about a test run accessible within. It's purpose is to ease the processing of test data, for the purpose of generating reports, or something like that. The niche it fills is creating a way to access test run data, both from a serialized and a real source, and to ease the querying of this data. YEAH YEAH, WHAT IS IT GOOD FOR?Well, you can use it to send test results, and process them into pretty reports. See Test::TAP::HTMLMatrix.TWO INTERFACESThere are two ways to access the data in Test::TAP::Model. The complex one, which creates objects, revolves around the simpler one, which for Q&D purposes is exposed and encouraged too.Inside the object there is a well defined deep structure, accessed as $t->structure; This is the simple method. It is a hash, containing some fields, and basically organizes the test results, with all the fun fun data exposed. The second interface is documented below in "METHODS", and lets you create pretty little objects from this structure, which might or might not be more convenient for your purposes. When it's ready, that is. HASH STRUCTUREI hope this illustrates how the structure looks.$structure = { test_files => $test_files, start_time => # when the run started end_time => # ... and ended }; $test_files = [ $test_file, ... ]; $test_file = { file => "t/filename.t", results => \%results; events => $events, # optional pre_diag => # diagnosis emitted before any test }; %results = $strap->analyze_foo(); $events = [ { type => "test", num => # the serial number of the test ok => # a boolean result => # a string useful for display todo => # a boolean line => # the output line # pugs auxillery stuff, from the <pos:> comment pos => # the place in the test file the case is in time => # the time this event happenned }, { type => "bailout", reason => "blah blah blah", } ..., ]; That's basically it. OBJECT INTERFACEThe object interface is structured around three objects:
Each of these is discussed in it's respectful manpage. Here's the whole run: METHODSThe said OOP interface
Misc methods
SERIALIZINGYou can use any serializer you like (YAML, Storable, etc), to freeze "$obj->structure", and then you can thaw it back, and pass the thawed structure to "new_with_struct".You can then access the object interface normally. This behavior is guaranteed to remain consistent, at least between similar versions of this module. This is there to simplify smoke reports. ISA Test::Harness::StrapsTest::TAP::Model is a Test::Harness::Straps subclass. It knows to run tests on it's own. See the "run" methods and it's friends.However, you should see how "run_test" gets things done beforehand. It's a bit of a hack because I'm not quite sure if Test::Harness::Straps has the proper events to encapsulate this cleanly (Gaal took care of the handlers way before I got into the picture), and I'm too lazy to check it out. VERSION CONTROLThis module is maintained using Darcs. You can get the latest version from <http://nothingmuch.woobling.org/Test-TAP-Model/>, and use "darcs send" to commit changes.AUTHORSThis list was generated from svn log testgraph.pl and testgraph.css in the pugs repo, sorted by last name.
COPYRIGHT & LICNESECopyright (c) 2005 the aforementioned authors. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Visit the GSP FreeBSD Man Page Interface. |