[tapx-dev] [commit] [106] Completed implementation of TAP version and added tests for same.

andy at hexten.net andy at hexten.net
Sat Mar 10 20:25:47 GMT 2007


Revision: 106
Author:   andy
Date:     2007-03-10 20:25:47 +0000 (Sat, 10 Mar 2007)

Log Message:
-----------
Completed implementation of TAP version and added tests for same.

Modified Paths:
--------------
    trunk/Changes
    trunk/MANIFEST
    trunk/lib/TAP/Parser.pm
    trunk/t/020-regression.t

Added Paths:
-----------
    trunk/t/sample-tests/version_good
    trunk/t/sample-tests/version_late
    trunk/t/sample-tests/version_old

Modified: trunk/Changes
===================================================================
--- trunk/Changes	2007-03-10 20:08:25 UTC (rev 105)
+++ trunk/Changes	2007-03-10 20:25:47 UTC (rev 106)
@@ -9,6 +9,7 @@
     - Removed now-unused is_first / is_last methods from Iterator and
       simplified remaining logic to suit.
     - Removed now-redundant t/140-varsource.t.
+    - Implemented TAP version syntax.
 
 0.50_07 5 March 2007
     - Fixed bug where we erroneously checked the test number instead of number

Modified: trunk/MANIFEST
===================================================================
--- trunk/MANIFEST	2007-03-10 20:08:25 UTC (rev 105)
+++ trunk/MANIFEST	2007-03-10 20:25:47 UTC (rev 106)
@@ -122,6 +122,9 @@
 t/sample-tests/todo_inline
 t/sample-tests/todo_misparse
 t/sample-tests/too_many
+t/sample-tests/version_good
+t/sample-tests/version_late
+t/sample-tests/version_old
 t/sample-tests/vms_nit
 t/sample-tests/with_comments
 t/source_tests/harness

Modified: trunk/lib/TAP/Parser.pm
===================================================================
--- trunk/lib/TAP/Parser.pm	2007-03-10 20:08:25 UTC (rev 105)
+++ trunk/lib/TAP/Parser.pm	2007-03-10 20:25:47 UTC (rev 106)
@@ -961,6 +961,15 @@
     my %state_globals = (
         comment => {},
         bailout => {},
+        version => {
+            act => sub {
+                my ( $self, $version ) = @_;
+                local *__ANON__ = '__ANON__bad_version_handler';
+                $self->_add_error(
+                    "If TAP version is present it must be the first line of output"
+                );
+            },
+        },
     );
 
     # Provides default elements for transitions
@@ -1016,9 +1025,10 @@
                     local *__ANON__ = '__ANON__version_handler';
                     my $ver_num = $version->version;
                     if ( $ver_num <= $DEFAULT_TAP_VERSION ) {
+                        my $ver_min = $DEFAULT_TAP_VERSION + 1;
                         $self->_add_error(
                                 "Explicit TAP version must be at least "
-                              . "$DEFAULT_TAP_VERSION. Got version $ver_num"
+                              . "$ver_min. Got version $ver_num"
                         );
                     }
                     $self->version($ver_num);

Modified: trunk/t/020-regression.t
===================================================================
--- trunk/t/020-regression.t	2007-03-10 20:08:25 UTC (rev 105)
+++ trunk/t/020-regression.t	2007-03-10 20:25:47 UTC (rev 106)
@@ -275,6 +275,7 @@
         parse_errors  => [],
         'exit'        => 0,
         wait          => 0,
+        version       => 3,
     },
     simple_fail => {
         results => [
@@ -665,7 +666,7 @@
         plan          => '1..10',
         passed        => [ 1 .. 4, 4 .. 9 ],
         actual_passed => [ 1 .. 4, 4 .. 10 ],
-        failed        => [ 10 ],
+        failed        => [10],
         actual_failed => [],
         todo          => [],
         todo_passed   => [],
@@ -2318,6 +2319,245 @@
         'exit'        => 0,
         wait          => 0,
     },
+    version_good => {
+        results => [
+            {   is_version => TRUE,
+                raw        => 'TAP version 4',
+            },
+            {   is_plan       => TRUE,
+                raw           => '1..5',
+                tests_planned => 5,
+                passed        => TRUE,
+                is_ok         => TRUE,
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 1,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 2,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 3,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 4,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 5,
+                description   => "",
+            },
+        ],
+        plan          => '1..5',
+        passed        => [ 1 .. 5 ],
+        actual_passed => [ 1 .. 5 ],
+        failed        => [],
+        actual_failed => [],
+        todo          => [],
+        todo_passed   => [],
+        skipped       => [],
+        good_plan     => TRUE,
+        is_good_plan  => TRUE,
+        tests_planned => 5,
+        tests_run     => 5,
+        parse_errors  => [],
+        'exit'        => 0,
+        wait          => 0,
+        version       => 4,
+    },
+    version_old => {
+        results => [
+            {   is_version => TRUE,
+                raw        => 'TAP version 3',
+            },
+            {   is_plan       => TRUE,
+                raw           => '1..5',
+                tests_planned => 5,
+                passed        => TRUE,
+                is_ok         => TRUE,
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 1,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 2,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 3,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 4,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 5,
+                description   => "",
+            },
+        ],
+        plan          => '1..5',
+        passed        => [ 1 .. 5 ],
+        actual_passed => [ 1 .. 5 ],
+        failed        => [],
+        actual_failed => [],
+        todo          => [],
+        todo_passed   => [],
+        skipped       => [],
+        good_plan     => TRUE,
+        is_good_plan  => TRUE,
+        tests_planned => 5,
+        tests_run     => 5,
+        parse_errors =>
+          [ 'Explicit TAP version must be at least 4. Got version 3' ],
+        'exit'  => 0,
+        wait    => 0,
+        version => 3,
+    },
+    version_late => {
+        results => [
+            {   is_plan       => TRUE,
+                raw           => '1..5',
+                tests_planned => 5,
+                passed        => TRUE,
+                is_ok         => TRUE,
+            },
+            {   is_version => TRUE,
+                raw        => 'TAP version 4',
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 1,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 2,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 3,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 4,
+                description   => "",
+            },
+            {   actual_passed => TRUE,
+                is_actual_ok  => TRUE,
+                passed        => TRUE,
+                is_ok         => TRUE,
+                is_test       => TRUE,
+                has_skip      => FALSE,
+                has_todo      => FALSE,
+                number        => 5,
+                description   => "",
+            },
+        ],
+        plan          => '1..5',
+        passed        => [ 1 .. 5 ],
+        actual_passed => [ 1 .. 5 ],
+        failed        => [],
+        actual_failed => [],
+        todo          => [],
+        todo_passed   => [],
+        skipped       => [],
+        good_plan     => TRUE,
+        is_good_plan  => TRUE,
+        tests_planned => 5,
+        tests_run     => 5,
+        parse_errors =>
+          [ 'If TAP version is present it must be the first line of output' ],
+        'exit'  => 0,
+        wait    => 0,
+        version => 3,
+    },
 );
 
 my %HANDLER_FOR = (
@@ -2408,7 +2648,8 @@
             }
         }
     }
-    ok !@$results, "... and we should have the correct number of results ($test)";
+    ok !@$results,
+      "... and we should have the correct number of results ($test)";
     return $parser;
 }
 

Added: trunk/t/sample-tests/version_good
===================================================================
--- trunk/t/sample-tests/version_good	                        (rev 0)
+++ trunk/t/sample-tests/version_good	2007-03-10 20:25:47 UTC (rev 106)
@@ -0,0 +1,9 @@
+print <<DUMMY_TEST;
+TAP version 4
+1..5
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+DUMMY_TEST

Added: trunk/t/sample-tests/version_late
===================================================================
--- trunk/t/sample-tests/version_late	                        (rev 0)
+++ trunk/t/sample-tests/version_late	2007-03-10 20:25:47 UTC (rev 106)
@@ -0,0 +1,9 @@
+print <<DUMMY_TEST;
+1..5
+TAP version 4
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+DUMMY_TEST

Added: trunk/t/sample-tests/version_old
===================================================================
--- trunk/t/sample-tests/version_old	                        (rev 0)
+++ trunk/t/sample-tests/version_old	2007-03-10 20:25:47 UTC (rev 106)
@@ -0,0 +1,9 @@
+print <<DUMMY_TEST;
+TAP version 3
+1..5
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+DUMMY_TEST




More information about the tapx-dev mailing list