[svn:parrot] r35830 - trunk/languages/perl6
[email protected] Tue, 20 Jan 2009 10:44:36 -0800 (PST)
| Newsgroups | perl.cvs.parrot |
|---|---|
| Message-ID | <[email protected]> |
Author: moritz
Date: Tue Jan 20 10:44:36 2009
New Revision: 35830
Modified:
trunk/languages/perl6/Test.pm
Log:
[rakudo] revert changes to Test.pm that broke some tests in fail.t
We we re-evaluate the patch from Ovid++ after the release
Modified: trunk/languages/perl6/Test.pm
==============================================================================
--- trunk/languages/perl6/Test.pm (original)
+++ trunk/languages/perl6/Test.pm Tue Jan 20 10:44:36 2009
@@ -5,12 +5,11 @@
## working. It's shamelessly stolen & adapted from MiniPerl6 in the pugs repo.
# globals to keep track of our tests
-our $num_of_tests_run = 0;
-our $num_of_tests_failed = 0;
-our $todo_upto_test_num = 0;
-our $todo_reason = '';
-our $die_on_fail = 0;
+our $num_of_tests_run = 0;
+our $num_of_tests_failed = 0;
our $num_of_tests_planned;
+our $todo_upto_test_num = 0;
+our $todo_reason = '';
our $*WARNINGS = 0;
@@ -34,48 +33,56 @@
say '1..' ~ $number_of_tests;
}
-sub die_on_fail() is export() {
- $die_on_fail = 1;
-}
-
-sub pass($desc) is export() {
+multi sub pass($desc) is export() {
proclaim(1, $desc);
}
-sub fail($desc) is export() {
- proclaim(0, $desc);
+multi sub ok(Object $cond, $desc) is export() {
+ proclaim($cond, $desc);
}
-sub ok(Object $passed, $desc='') is export() {
- my $diagnostics = diag_bool_true($passed);
- proclaim($passed, $desc, $diagnostics);
-}
+multi sub ok(Object $cond) is export() { ok($cond, ''); }
+
-sub nok(Object $passed, $desc='') is export() {
- my $diagnostics = diag_bool_false($passed);
- proclaim(!$passed, $desc, $diagnostics);
+multi sub nok(Object $cond, $desc) is export() {
+ proclaim(!$cond, $desc);
}
-sub is(Object $have, Object $want, $desc='') is export() {
- my $passed = $have eq $want;
- proclaim($passed, $desc, diag_eq($passed, $have, $want));
+multi sub nok(Object $cond) is export() { nok(!$cond, ''); }
+
+
+multi sub is(Object $got, Object $expected, $desc) is export() {
+ my $test = $got eq $expected;
+ proclaim($test, $desc);
}
-sub isnt(Object $have, Object $want, $desc='') is export() {
- my $passed = !($have eq $want);
- proclaim($passed, $desc, diag_neq($passed, $have, $want));
+multi sub is(Object $got, Object $expected) is export() { is($got, $expected, ''); }
+
+
+multi sub isnt(Object $got, Object $expected, $desc) is export() {
+ my $test = !($got eq $expected);
+ proclaim($test, $desc);
}
-sub is_approx(Object $have, Object $want, $desc='') is export() {
- my $passed = abs($have - $want) <= 0.00001;
- proclaim($passed, $desc, diag_approx($passed, $have, $want));
+multi sub isnt(Object $got, Object $expected) is export() { isnt($got, $expected, ''); }
+
+multi sub is_approx(Object $got, Object $expected, $desc) is export() {
+ my $test = abs($got - $expected) <= 0.00001;
+ proclaim($test, $desc);
}
-sub todo($reason, $count=1) is export() {
+multi sub is_approx($got, $expected) is export() { is_approx($got, $expected, ''); }
+
+multi sub todo($reason, $count) is export() {
$todo_upto_test_num = $num_of_tests_run + $count;
$todo_reason = '# TODO ' ~ $reason;
}
+multi sub todo($reason) is export() {
+ $todo_upto_test_num = $num_of_tests_run + 1;
+ $todo_reason = '# TODO ' ~ $reason;
+}
+
multi sub skip() is export() { proclaim(1, "# SKIP"); }
multi sub skip($reason) is export() { proclaim(1, "# SKIP " ~ $reason); }
multi sub skip($count, $reason) is export() {
@@ -138,10 +145,14 @@
}
-sub is_deeply($have, $want, $reason='') {
- my $passed = _is_deeply( $have, $want );
- my $diagnostics = diag_eq($passed, $have, $want);
- proclaim($passed, $reason, $diagnostics);
+multi sub is_deeply($this, $that, $reason) {
+ my $val = _is_deeply( $this, $that );
+ proclaim($val, $reason);
+}
+
+multi sub is_deeply($this, $that) {
+ my $val = _is_deeply( $this, $that );
+ proclaim($val, '');
}
sub _is_deeply( $this, $that) {
@@ -178,49 +189,21 @@
## 'private' subs
-sub diag_bool_true($passed) {
- # Workaround for: Method 'perl' not found for invocant (various classes,
- # including some anonymous, so can't just make a list).
- my $have;
- try { $have = $passed.perl; CATCH { $have = $passed } }
- return $passed
- ?? ''
- !! "# Expected a true value.\n# have: {$have}";
-}
-
-sub diag_bool_false($passed) {
- return $passed
- ?? "# Expected a false value.\n# have: {$passed.perl}"
- !! '';
-}
-
-sub diag_eq($passed, $have, $want) {
- # Workaround for: Method 'perl' not found for invocant (various classes,
- # including some anonymous, so can't just make a list).
- my $x_have;
- try { $x_have = $passed.perl; CATCH { $x_have = $passed } }
- return $passed ?? '' !! "# have: {$x_have}\n# want: {$want.perl}";
-}
-
-sub diag_neq($passed, $have, $want) {
- return $passed ?? '' !! "# Expected different values\n# have: {$have.perl}\n# want: {$want.perl}";
-}
-
-sub diag_approx($passed, $have, $want) {
- return $passed ?? '' !! "# Expected approximately the same values\n# have: {$have.perl}\n# want: {$want.perl}";
-}
-
sub eval_exception($code) {
my $eval_exception;
try { eval ($code); $eval_exception = $! }
$eval_exception // $!;
}
-sub proclaim($passed, $desc, $diagnostics='') {
+sub proclaim(Object $cond, $desc) {
$testing_started = 1;
$num_of_tests_run = $num_of_tests_run + 1;
- unless $passed {
+ if $cond.HOW().isa($cond, Junction) {
+ warn("Junction passed to proclaim");
+ }
+
+ unless $cond {
print "not ";
$num_of_tests_failed = $num_of_tests_failed + 1
unless $num_of_tests_run <= $todo_upto_test_num;
@@ -230,12 +213,6 @@
print $todo_reason;
}
print "\n";
- say $diagnostics if $diagnostics;
- if !$passed && $die_on_fail && !$todo_reason {
- die "Test failed. Stopping test.";
- }
- $todo_reason = ''; # must reset between tests
- return $passed;
}
END {