This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Handle undef values in magic.t on VMS.
authorCraig A. Berry <craigberry@mac.com>
Sat, 23 Feb 2013 18:45:11 +0000 (12:45 -0600)
committerCraig A. Berry <craigberry@mac.com>
Sat, 23 Feb 2013 18:45:11 +0000 (12:45 -0600)
888a67f6b95603701 added a new test that failed on VMS because it
expected the value of an undefined element in %ENV to be an empty
string, whereas on VMS it's actually a one-byte string containing
a null.  This is made possible by the fact that the logical name
API uses strings of known lengths, and made necessary by the fact
that a zero-length value (equivalence name in VMS parlance) is
not allowed.

So patch up the test implementation to handle this special case.

t/op/magic.t

index d06fcaa..26b5b04 100644 (file)
@@ -76,7 +76,11 @@ sub env_is {
        Win32::SetConsoleOutputCP($cp);
         like $set, qr/^(?:\Q$key\E=)?\Q$val\E$/, $desc;
     } elsif ($Is_VMS) {
-        is `write sys\$output f\$trnlnm("\Q$key\E")`, "$val\n", $desc;
+        my $eqv = `write sys\$output f\$trnlnm("\Q$key\E")`;
+        # A single null byte in the equivalence string means
+        # an undef value for Perl, so mimic that here.
+        $eqv = "\n" if length($eqv) == 2 and $eqv eq "\000\n";
+        is $eqv, "$val\n", $desc;
     } else {
         is `echo \$\Q$key\E`, "$val\n", $desc;
     }
@@ -87,6 +91,7 @@ END {
     if ($Is_VMS) {
         delete $ENV{'FOO'};
         delete $ENV{'__NoNeSuCh'};
+        delete $ENV{'__NoNeSuCh2'};
     }
 }