TT is not a terminal in lots of situations.
Craig A. Berry [Thu, 31 Dec 2009 03:43:43 +0000 (21:43 -0600)]
d1585ceaf66a98c6f5f3520ecf3dec4ccc98a1d6 didn't go far enough.  TT may
be a mailbox when we're in a subprocess, for example.  So skip on VMS
unless TT translates to one of the more common terminal device names.

t/op/filetest_t.t

index d907157..3508564 100755 (executable)
@@ -17,12 +17,15 @@ my($dev_tty, $dev_null) = qw(/dev/tty /dev/null);
 SKIP: {
     open(my $tty, "<", $dev_tty)
        or skip("Can't open terminal '$dev_tty': $!");
-    skip("Probably batch mode since TT is _NLA0:") 
-        if $^O eq 'VMS' && lc(VMS::Filespec::vmspath('TT')) eq '_nla0:';
-    ok(-t $tty);
+    if ($^O eq 'VMS') {
+        # TT might be a mailbox or other non-terminal device
+        my $tt_dev = VMS::Filespec::vmspath('TT');
+        skip("'$tt_dev' is probably not a terminal") if $tt_dev !~ m/^_(tt|ft|rt)/i;
+    }
+    ok(-t $tty, "'$dev_tty' is a TTY");
 }
 SKIP: {
     open(my $null, "<", $dev_null)
        or skip("Can't open null device '$dev_null': $!");
-    ok(!-t $null);
+    ok(!-t $null, "'$dev_null' is not a TTY");
 }