This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Test-Simple-0.63
authorSteve Peters <steve@fisharerojo.org>
Sun, 9 Jul 2006 13:51:37 +0000 (13:51 +0000)
committerSteve Peters <steve@fisharerojo.org>
Sun, 9 Jul 2006 13:51:37 +0000 (13:51 +0000)
p4raw-id: //depot/perl@28514

lib/Test/Builder.pm
lib/Test/Builder/Tester.pm
lib/Test/More.pm
lib/Test/Simple.pm
lib/Test/Simple/Changes
lib/Test/Simple/t/fail-more.t
lib/Test/Simple/t/tbt_01basic.t
lib/Test/Simple/t/tbt_05faildiag.t

index ac4a8a4..d9ebef1 100644 (file)
@@ -8,7 +8,7 @@ $^C ||= 0;
 
 use strict;
 use vars qw($VERSION);
-$VERSION = '0.32';
+$VERSION = '0.33';
 $VERSION = eval $VERSION;    # make the alpha version come out as a number
 
 # Make Test::Builder thread-safe for ithreads.
@@ -605,7 +605,7 @@ the string version.
 
 =item B<isnt_num>
 
-  $Test->is_num($got, $dont_expect, $name);
+  $Test->isnt_num($got, $dont_expect, $name);
 
 Like Test::More's isnt().  Checks if $got ne $dont_expect.  This is
 the numeric version.
index 9e3b9c7..92ca096 100644 (file)
@@ -2,7 +2,7 @@ package Test::Builder::Tester;
 
 use strict;
 use vars qw(@EXPORT $VERSION @ISA);
-$VERSION = "1.02";
+$VERSION = "1.03";
 
 use Test::Builder;
 use Symbol;
@@ -18,11 +18,21 @@ Test::Builder
     use Test::Builder::Tester tests => 1;
     use Test::More;
 
-    test_out("not ok 1 - foo");
-    test_fail(+1);
+    test_fail(+1, "foo");
     fail("foo");
     test_test("fail works");
 
+    test_pass("baz");
+    ok(1, "baz");
+    test_test("pass works");
+
+    test_fail(+3, "is foo bar?");
+    test_err("#          got: 'foo'",
+             "#     expected: 'bar'");
+    is("foo", "bar", "is foo bar?");
+    test_test("diagnostic checking works");
+
+
 =head1 DESCRIPTION
 
 A module that helps you test testing modules that are built with
@@ -30,8 +40,8 @@ B<Test::Builder>.
 
 The testing system is designed to be used by performing a three step
 process for each test you wish to test.  This process starts with using
-C<test_out> and C<test_err> in advance to declare what the testsuite you
-are testing will output with B<Test::Builder> to stdout and stderr.
+Test::Builder::Tester functions to declare what the testsuite you
+are testing will output with B<Test::Builder>.
 
 You then can run the test(s) from your test suite that call
 B<Test::Builder>.  At this point the output of B<Test::Builder> is
@@ -58,7 +68,7 @@ my $t = Test::Builder->new;
 use Exporter;
 @ISA = qw(Exporter);
 
-@EXPORT = qw(test_out test_err test_fail test_diag test_test line_num);
+@EXPORT = qw(test_out test_err test_fail test_diag test_test line_num test_pass);
 
 # _export_to_level and import stolen directly from Test::More.  I am
 # the king of cargo cult programming ;-)
@@ -154,58 +164,46 @@ sub _start_testing
     $t->no_ending(1);
 }
 
-=head2 Methods
+=head2 Functions
 
-These are the six methods that are exported as default.
+These are the functions exported by default.
 
 =over 4
 
-=item test_out
+=item test_pass
 
-=item test_err
+    test_pass();
+    test_pass($description);
 
-Procedures for predeclaring the output that your test suite is
-expected to produce until C<test_test> is called.  These procedures
-automatically assume that each line terminates with "\n".  So
+Because the standard success message that B<Test::Builder> produces
+whenever a test passes will be common in your test error
+output, rather than forcing you to call C<test_out> with the string
+all the time like so
 
-   test_out("ok 1","ok 2");
+    test_out("ok 1 - some test name here");
 
-is the same as
-
-   test_out("ok 1\nok 2");
-
-which is even the same as
+C<test_pass> exists as a convenience function that you can call instead.  It
+takes one optional argument, the test description from the test you expect to
+pass.  The following is equivalent to the above C<test_out> call.
 
-   test_out("ok 1");
-   test_out("ok 2");
-
-Once C<test_out> or C<test_err> (or C<test_fail> or C<test_diag>) have
-been called once all further output from B<Test::Builder> will be
-captured by B<Test::Builder::Tester>.  This means that your will not
-be able perform further tests to the normal output in the normal way
-until you call C<test_test> (well, unless you manually meddle with the
-output filehandles)
+    test_pass("some test name here");
 
 =cut
 
-sub test_out(@)
+sub test_pass(;$)
 {
-    # do we need to do any setup?
-    _start_testing() unless $testing;
-
-    $out->expect(@_)
+    _start_testing() unless $testing++;
+    my $mess = "ok $testing";
+    $mess .= ' - ' . shift if @_;
+    $out->expect( $mess, @_ );
 }
 
-sub test_err(@)
-{
-    # do we need to do any setup?
-    _start_testing() unless $testing;
-
-    $err->expect(@_)
-}
 
 =item test_fail
 
+    test_fail($line_num_offset);
+    test_fail($line_num_offset, $description);
+
 Because the standard failure message that B<Test::Builder> produces
 whenever a test fails will be a common occurrence in your test error
 output, and because has changed between Test::Builder versions, rather
@@ -214,35 +212,86 @@ so
 
     test_err("# Failed test ($0 at line ".line_num(+1).")");
 
-C<test_fail> exists as a convenience method that can be called
+C<test_fail> exists as a convenience function that can be called
 instead.  It takes one argument, the offset from the current line that
 the line that causes the fail is on.
 
     test_fail(+1);
+    ok(0);
 
-This means that the example in the synopsis could be rewritten
-more simply as:
+It optionally takes the $description of the test.
 
-   test_out("not ok 1 - foo");
-   test_fail(+1);
-   fail("foo");
-   test_test("fail works");
+    test_fail(+1, "kaboom");
+    fail("kaboom");
 
 =cut
 
 sub test_fail
 {
     # do we need to do any setup?
-    _start_testing() unless $testing;
+    _start_testing() unless $testing++;
 
     # work out what line we should be on
     my ($package, $filename, $line) = caller;
     $line = $line + (shift() || 0); # prevent warnings
 
+    my $mess = "not ok $testing";
+    $mess .= ' - ' . shift if @_;
+    $out->expect( $mess );
+
     # expect that on stderr
     $err->expect("#     Failed test ($0 at line $line)");
 }
 
+
+=item test_out
+
+    test_out(@output);
+
+=item test_err
+
+    test_err(@diagnostic_output);
+
+Procedures for predeclaring the output that your test suite is
+expected to produce until C<test_test> is called.  These procedures
+automatically assume that each line terminates with "\n".  So
+
+   test_out("foo","bar");
+
+is the same as
+
+   test_out("foo\nbar");
+
+which is even the same as
+
+   test_out("foo");
+   test_out("bar");
+
+Once C<test_out> or C<test_err> (or C<test_fail>, C<test_pass>, or
+C<test_diag>) have been called once all further output from B<Test::Builder>
+will be captured by B<Test::Builder::Tester>.  This means that your will not be
+able perform further tests to the normal output in the normal way until you
+call C<test_test>.
+
+=cut
+
+sub test_out(@)
+{
+    # do we need to do any setup?
+    _start_testing() unless $testing;
+
+    $out->expect(@_)
+}
+
+sub test_err(@)
+{
+    # do we need to do any setup?
+    _start_testing() unless $testing;
+
+    $err->expect(@_)
+}
+
+
 =item test_diag
 
 As most of the remaining expected output to the error stream will be
@@ -358,7 +407,6 @@ sub test_test
                     && ($args{skip_err} || $err->check),
                    $mess))
     {
-      # print out the diagnostic information about why this
       # test failed
 
       local $_;
@@ -376,7 +424,7 @@ sub test_test
 A utility function that returns the line number that the function was
 called on.  You can pass it an offset which will be added to the
 result.  This is very useful for working out the correct text of
-diagnostic methods that contain line numbers.
+diagnostic functions that contain line numbers.
 
 Essentially this is the same as the C<__LINE__> macro, but the
 C<line_num(+3)> idiom is arguably nicer.
@@ -442,10 +490,10 @@ sub color
 
 =head1 BUGS
 
-Calls B<Test::Builder>'s C<no_ending> method turning off the ending
-tests.  This is needed as otherwise it will trip out because we've run
-more tests than we strictly should have and it'll register any
-failures we had that we were testing for as real failures.
+Calls C<<Test::Builder->no_ending>> turning off the ending tests.
+This is needed as otherwise it will trip out because we've run more
+tests than we strictly should have and it'll register any failures we
+had that we were testing for as real failures.
 
 The color function doesn't work unless B<Term::ANSIColor> is installed
 and is compatible with your terminal.
@@ -543,7 +591,7 @@ sub complaint
     my $self = shift;
     my $type   = $self->type;
     my $got    = $self->got;
-    my $wanted = join "\n", @{$self->wanted};
+    my $wanted = join '', @{$self->wanted};
 
     # are we running in colour mode?
     if (Test::Builder::Tester::color)
index 8289ec0..be7e9fc 100644 (file)
@@ -16,7 +16,7 @@ sub _carp {
 
 
 use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS $TODO);
-$VERSION = '0.62';
+$VERSION = '0.63';
 $VERSION = eval $VERSION;    # make the alpha version come out as a number
 
 use Test::Builder::Module;
@@ -465,6 +465,12 @@ sub can_ok ($@) {
     my $class = ref $proto || $proto;
     my $tb = Test::More->builder;
 
+    unless( $class ) {
+        my $ok = $tb->ok( 0, "->can(...)" );
+        $tb->diag('    can_ok() called with empty class or reference');
+        return $ok;
+    }
+
     unless( @methods ) {
         my $ok = $tb->ok( 0, "$class->can(...)" );
         $tb->diag('    can_ok() called with no methods');
@@ -1107,7 +1113,7 @@ but want to put tests in your testing script (always a good idea).
 
     BAIL_OUT($reason);
 
-Incidates to the harness that things are going so badly all testing
+Indicates to the harness that things are going so badly all testing
 should terminate.  This includes the running any additional test scripts.
 
 This is typically used when testing cannot continue such as a critical
index ccf3d60..d9d1617 100644 (file)
@@ -4,7 +4,7 @@ use 5.004;
 
 use strict 'vars';
 use vars qw($VERSION @ISA @EXPORT);
-$VERSION = '0.62';
+$VERSION = '0.63';
 $VERSION = eval $VERSION;    # make the alpha version come out as a number
 
 use Test::Builder::Module;
index 3e0a1d7..83c82d5 100644 (file)
@@ -1,5 +1,21 @@
+0.63  Sun Jul  9 02:36:36 PDT 2006
+    * Fixed can_ok() to gracefully handle no class name.
+      Submitted by "Pete Krawczyk" <perl@bsod.net>
+      Implemented by "Richard Foley" <richard.foley@rfi.net>
+      [rt.cpan.org 15654]
+    * Added test_pass() to Test::Builder::Tester rather than having to
+      call test_out("ok 1 - foo"). <chromatic@wgz.org> [rt.cpan.org 11317]
+    * test_fail() now accepts a test diagnostic rather than having to
+      call test_out() separately. <chromatic@wgz.org> [rt.cpan.org 11319]
+    - Changed Test::Builder::Tester docs to show best practice using
+      test_fail() and test_pass().
+    - isnt_num() doc example wrongly showed is_num(). <chromatic@wgz.org>
+    - Fixed a minor typo in the BAIL_OUT() docs. <Jeff Deifik>
+    - Removed the LICENSE field from the Makefile.PL as the release of
+      MakeMaker with that feature has been delayed.
+
 0.62  Sat Oct  8 01:25:03 PDT 2005
-    * Aborbed Test::Builder::Tester.  The last release broke it because its
+    * Absorbed Test::Builder::Tester.  The last release broke it because its
       screen scraping Test::More and the failure output changed.  By
       distributing them together we ensure TBT won't break again.
     * Test::Builder->BAILOUT() was missing.
index 6f9d634..07d5d37 100644 (file)
@@ -45,7 +45,7 @@ sub main::err_ok ($) {
 package main;
 
 require Test::More;
-my $Total = 28;
+my $Total = 29;
 Test::More->import(tests => $Total);
 
 my $tb = Test::More->builder;
@@ -141,6 +141,7 @@ ERR
 #line 52
 can_ok('Mooble::Hooble::Yooble', qw(this that));
 can_ok('Mooble::Hooble::Yooble', ());
+can_ok(undef, undef);
 err_ok( <<ERR );
 #   Failed test 'Mooble::Hooble::Yooble->can(...)'
 #   in $0 at line 52.
@@ -149,6 +150,9 @@ err_ok( <<ERR );
 #   Failed test 'Mooble::Hooble::Yooble->can(...)'
 #   in $0 at line 53.
 #     can_ok() called with no methods
+#   Failed test '->can(...)'
+#   in $0 at line 54.
+#     can_ok() called with empty class or reference
 ERR
 
 #line 55
@@ -288,6 +292,7 @@ not ok - regex with % in it
 not ok - fail()
 not ok - Mooble::Hooble::Yooble->can(...)
 not ok - Mooble::Hooble::Yooble->can(...)
+not ok - ->can(...)
 not ok - The object isa Wibble
 not ok - My Wibble isa Wibble
 not ok - Another Wibble isa Wibble
index 77d1081..28cf4cb 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     }
 }
 
-use Test::Builder::Tester tests => 9;
+use Test::Builder::Tester tests => 12;
 use Test::More;
 
 ok(1,"This is a basic test");
index 0ae875a..d643e3f 100644 (file)
@@ -12,26 +12,23 @@ use Test::More;
 
 # test_fail
 
-test_out("not ok 1 - one");
-test_fail(+1);
+test_fail(+1, 'one');
 ok(0,"one");
 
-test_out("not ok 2 - two");
-test_fail(+2);
+test_fail(+2, 'two');
 
 ok(0,"two");
 
 test_test("test fail");
 
-test_fail(+2);
-test_out("not ok 1 - one");
+test_fail(+1, 'one');
 ok(0,"one");
 test_test("test_fail first");
 
 # test_diag
 
 use Test::Builder;
-my $test = new Test::Builder;
+my $test = Test::Builder->new();
 
 test_diag("this is a test string","so is this");
 $test->diag("this is a test string\n", "so is this\n");
@@ -47,5 +44,3 @@ test_diag("so is this");
 $test->diag("this is a test string\n");
 $test->diag("so is this\n");
 test_test("test diag multiple");
-
-