httpd-test-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Geoffrey Young <ge...@modperlcookbook.org>
Subject Re: t_cmp oddities
Date Thu, 08 Apr 2004 15:19:23 GMT


Geoffrey Young wrote:
>>  ok t_cmp (
>>          undef,
>>          &get_undef,
>>          "Retrieve undef from subroutine"
>>          );
> 
> 
>>  # expected: undef
>>  # received: Retrieve undef from subroutine
>>  not ok 1
> 
> 
> get_undef is slurping up the text as an argument.  call it as get_undef()
> instead (nobody really uses the & calling format anymore anyway :)

oh, wait, that's not it.  anyway, I've seen this myself before which is why
I was quick to (wrongly) answer :)  personally, I usually just

  my $val = get_undef;

  t_cmp(1, $val, "text");

the problem seems to be with return

$ perl -MApache::TestUtil -e 't_cmp(1,foo(),"text"); sub foo { return }'
# expected: 1
# received: text

$ perl -MApache::TestUtil -e 't_cmp(1,foo(),"text"); sub foo { return undef }'
# testing : text
# expected: 1
# received: undef

and 'return undef' is considered bad form, since it doesn't do the right
thing in a list context, so most people won't do it.  but it's the list
context that's tripping us up, as @_ that t_cmp() receives is now only 2
arguments wide:

$ perl -e '@a = (1, foo(), "text"); print scalar @a; sub foo { return }'
2

I don't think there is anything we can do about it, so just use the
workaround above.

--Geoff



Mime
View raw message