From db44b1086cbb06be1d3e1390d43cf6b1fecb1bf5 Mon Sep 17 00:00:00 2001 From: Stig Bakken Date: Sun, 4 Nov 2001 09:07:17 +0000 Subject: [PATCH] * expectError() now accepts "*" as a catch-all * updated tests --- pear/PEAR.php | 10 +++-- pear/tests/pear_error.phpt | 61 +++---------------------- pear/tests/pear_error2.phpt | 6 +-- pear/tests/pear_error3.phpt | 8 ++-- pear/tests/pear_error4.phpt | 89 +++++++++++++++++++++++++++++++++++++ 5 files changed, 110 insertions(+), 64 deletions(-) create mode 100644 pear/tests/pear_error4.phpt diff --git a/pear/PEAR.php b/pear/PEAR.php index 1f73c0c1e2..4a6a19d6ee 100644 --- a/pear/PEAR.php +++ b/pear/PEAR.php @@ -286,7 +286,7 @@ class PEAR * * @return int the new depth of the "expected errors" stack */ - function expectError($code) + function expectError($code = "*") { if (is_array($code)) { array_push($this->_expected_errors, $code); @@ -366,8 +366,12 @@ class PEAR $message = $message->getMessage(); } - if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && in_array($code, end($this->_expected_errors))) { - $mode = PEAR_ERROR_RETURN; + if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) { + if ($exp[0] == "*" || + (is_int(reset($exp)) && in_array($code, $exp)) || + (is_string(reset($exp)) && in_array($message, $exp))) { + $mode = PEAR_ERROR_RETURN; + } } if ($mode === null) { diff --git a/pear/tests/pear_error.phpt b/pear/tests/pear_error.phpt index 79267dae5d..0b7bd514e8 100644 --- a/pear/tests/pear_error.phpt +++ b/pear/tests/pear_error.phpt @@ -1,5 +1,5 @@ --TEST-- -PEAR_Error test +PEAR_Error: basic test --SKIPIF-- --FILE-- toString() . "\n"; -print "testing expectError:\n"; -$obj =& new PEAR; -$obj->setErrorHandling(PEAR_ERROR_PRINT, "*** ERROR: %s\n"); -print "expecting syntax/invalid\n"; -$obj->expectError(array("syntax", "invalid")); -print "raising already_exists\n"; -$err = $obj->raiseError("already_exists"); -print "raising syntax\n"; -$err = $obj->raiseError("syntax"); -print "expecting syntax only\n"; -$obj->expectError(array("syntax")); -print "raising invalid\n"; -$err = $obj->raiseError("invalid"); -print "popping\n"; -var_dump($obj->popExpect()); -print "raising invalid\n"; -$err = $obj->raiseError("invalid"); -print "popping\n"; -var_dump($obj->popExpect()); -print "raising invalid\n"; -$err = $obj->raiseError("invalid"); - ?> --GET-- --POST-- @@ -159,42 +137,17 @@ mode=print: test error[pear_error: message="test error" code=-42 mode=print leve mode=callback(function): errorhandler function called, obj=[pear_error: message="test error" code=-42 mode=callback callback=errorhandler prefix="" info=""] mode=callback(method): errorhandler method called, obj=[pear_error: message="test error" code=-42 mode=callback callback=errorclass::errorhandler prefix="" info=""] mode=print&trigger: test error -User Notice: test error in PEAR.php on line 591 +User Notice: test error in PEAR.php on line 595 [pear_error: message="test error" code=-42 mode=print|trigger level=notice prefix="" info=""] mode=trigger: -User Notice: test error in PEAR.php on line 591 +User Notice: test error in PEAR.php on line 595 [pear_error: message="test error" code=-42 mode=trigger level=notice prefix="" info=""] mode=trigger,level=notice: -User Notice: test error in PEAR.php on line 591 +User Notice: test error in PEAR.php on line 595 [pear_error: message="test error" code=-42 mode=trigger level=notice prefix="" info=""] mode=trigger,level=warning: -User Warning: test error in PEAR.php on line 591 +User Warning: test error in PEAR.php on line 595 [pear_error: message="test error" code=-42 mode=trigger level=warning prefix="" info=""] mode=trigger,level=error: -User Error: test error in PEAR.php on line 591 +User Error: test error in PEAR.php on line 595 [pear_error: message="test error" code=-42 mode=trigger level=error prefix="" info=""] -testing expectError: -expecting syntax/invalid -raising already_exists -*** ERROR: already_exists -raising syntax -*** ERROR: syntax -expecting syntax only -raising invalid -*** ERROR: invalid -popping -array(1) { - [0]=> - string(6) "syntax" -} -raising invalid -*** ERROR: invalid -popping -array(2) { - [0]=> - string(6) "syntax" - [1]=> - string(7) "invalid" -} -raising invalid -*** ERROR: invalid diff --git a/pear/tests/pear_error2.phpt b/pear/tests/pear_error2.phpt index 8d2531380e..eef585289f 100644 --- a/pear/tests/pear_error2.phpt +++ b/pear/tests/pear_error2.phpt @@ -1,5 +1,5 @@ --TEST-- -PEAR_Error in die mode +PEAR_Error: die mode --SKIPIF-- --FILE-- getMessage()."\n"; + } else { + print "errorhandler called without error object\n"; + } +} + +$obj = new PEAR; +$obj->setErrorHandling(PEAR_ERROR_CALLBACK, "errorhandler"); + +print "subtest 1\n"; +$obj->expectError(1); +$obj->raiseError("1", 1); +$obj->popExpect(); +$obj->raiseError("2", 2); + +print "subtest 2\n"; +$obj->expectError(3); +$obj->expectError(2); +$obj->raiseError("3", 3); + +print "subtest 3\n"; +$obj->popExpect(); +$obj->raiseError("3", 3); +$obj->popExpect(); + +print "subtest 4\n"; +$obj->expectError(array(1,2,3,4,5)); +$obj->raiseError("0", 0); +$obj->raiseError("1", 1); +$obj->raiseError("2", 2); +$obj->raiseError("3", 3); +$obj->raiseError("4", 4); +$obj->raiseError("5", 5); +$obj->raiseError("6", 6); +$obj->raiseError("error"); +$obj->popExpect(); + +print "subtest 5\n"; +$obj->expectError("*"); +$obj->raiseError("42", 42); +$obj->raiseError("75", 75); +$obj->raiseError("13", 13); +$obj->popExpect(); + +print "subtest 6\n"; +$obj->expectError(); +$obj->raiseError("123", 123); +$obj->raiseError("456", 456); +$obj->raiseError("789", 789); +$obj->popExpect(); + +print "subtest 7\n"; +$obj->expectError("syntax error"); +$obj->raiseError("type mismatch"); +$obj->raiseError("syntax error"); +$obj->popExpect(); + +?> +--EXPECT-- +subtest 1 +error: 2 +subtest 2 +error: 3 +subtest 3 +subtest 4 +error: 0 +error: 6 +error: error +subtest 5 +subtest 6 +subtest 7 +error: type mismatch -- 2.50.1