[Israel.pm] Alternative for catching return value

Levenglick Dov-RM07994 DovL at freescale.com
Mon Nov 14 03:51:34 PST 2005

eval {$sysUnderTest->someAction($foo, $bar, foo, bar)};
die $@ if $@

Will work if $sysUnderTest->someAction() trys to die if it fails.
This should be the same as throwing a C++ exception

Best Regards,
Dov Levenglick
DSP SoC System and Applications Engineer,
Network and Computing Systems Group
Freescale Semiconductor Israel
Tel. +972-9-952-2804
The information contained in this email is classified as:
[ ] General Business Information
[ ] Freescale Internal Use Only
[ ] Freescale Confidential Propriety
[x] Personal Memorandum

-----Original Message-----
From: perl-bounces at perl.org.il [mailto:perl-bounces at perl.org.il] On Behalf Of David Baird
Sent: Monday, November 14, 2005 1:26 PM
To: Perl in Israel
Subject: [Israel.pm] Alternative for catching return value

Our test scripts are filled with this kind of construction:

$ret = $sysUnderTest->someAction($foo, $bar, 'foo', 'bar');
die "System Under Test failed = $testEnv::return_dscr[$ret]\n"
    unless $ret == $testEnv::ACTION_SUCCESS;

or sometimes like this:

$ret = $sysUnderTest->Stop();
if (($ret != $testEnv::CMD_INVALID_FOR_STATE) &&
    ($ret != $testEnv::ACTION_SUCCESS) ) {

    die "Stop failed = $testEnv::return_dscr[$ret]\n";

I think that the DESTROY method is called, because it has to return
the system under test to a neutral state, and perhaps there is some
misunderstanding on when the DESTROY of all objects will get called.

Could anyone come up with cleaner code which doesn't require defining
$ret, but still allows the debugger to catch the return value before
the test script dies?

Thank you,

Perl mailing list
Perl at perl.org.il

More information about the Perl mailing list