3 BEGIN { unshift(@INC,'../lib') if -d '../lib'; }
13 print '1..',scalar(@tests)+5,"\n";
15 foreach $test (@tests) {
16 ($arg,$func,$expect) = split(/\t+/,$test);
18 $rslt = eval "$func('$arg')";
19 if ($@) { print "not ok $idx : eval error: $@\n"; next; }
21 if ($rslt ne $expect) {
22 print "not ok $idx : $func('$arg') expected |$expect|, got |$rslt|\n";
24 else { print "ok $idx\n"; }
28 if (rmsexpand('[]') eq "\U$ENV{DEFAULT}") { print 'ok ',++$idx,"\n"; }
30 print 'not ok ', ++$idx, ": rmsexpand('[]') = |", rmsexpand('[]'),
31 "|, \$ENV{DEFAULT} = |\U$ENV{DEFAULT}|\n";
32 print "# Note: This failure may have occurred because your default device\n";
33 print "# was set using a non-concealed logical name. If this is the case,\n";
34 print "# you will need to determine by inspection that the two resultant\n";
35 print "# file specifications shwn above are in fact equivalent.\n";
37 if (rmsexpand('from.here') eq "\L$ENV{DEFAULT}from.here") {
38 print 'ok ', ++$idx, "\n";
41 print 'not ok ', ++$idx, ": rmsexpand('from.here') = |",
42 rmsexpand('from.here'),
43 "|, \$ENV{DEFAULT}from.here = |\L$ENV{DEFAULT}from.here|\n";
44 print "# Note: This failure may have occurred because your default device\n";
45 print "# was set using a non-concealed logical name. If this is the case,\n";
46 print "# you will need to determine by inspection that the two resultant\n";
47 print "# file specifications shwn above are in fact equivalent.\n";
49 if (rmsexpand('from.here','cant:[get.there];2') eq
50 'cant:[get.there]from.here;2') { print 'ok ',++$idx,"\n"; }
52 print 'not ok ', ++$idx, ': expected |cant:[get.there]from.here;2|, got |',
53 rmsexpand('from.here','cant:[get.there];2'),"|\n";
56 # Make sure we're using redirected mkdir, which strips trailing '/', since
57 # the CRTL's mkdir can't handle this.
58 print +(mkdir('testdir/',0777) ? 'ok ' : 'not ok '),++$idx,"\n";
59 print +(rmdir('testdir/') ? 'ok ' : 'not ok '),++$idx,"\n";
63 # Basic VMS to Unix filespecs
64 some:[where.over]the.rainbow unixify /some/where/over/the.rainbow
65 [.some.where.over]the.rainbow unixify some/where/over/the.rainbow
66 [-.some.where.over]the.rainbow unixify ../some/where/over/the.rainbow
67 [.some.--.where.over]the.rainbow unixify some/../../where/over/the.rainbow
68 [.some...where.over]the.rainbow unixify some/.../where/over/the.rainbow
69 [...some.where.over]the.rainbow unixify .../some/where/over/the.rainbow
70 [.some.where.over...]the.rainbow unixify some/where/over/.../the.rainbow
71 [.some.where.over...] unixify some/where/over/.../
72 [.some.where.over.-] unixify some/where/over/../
79 /some/where/over/the.rainbow vmsify some:[where.over]the.rainbow
80 some/where/over/the.rainbow vmsify [.some.where.over]the.rainbow
81 ../some/where/over/the.rainbow vmsify [-.some.where.over]the.rainbow
82 some/../../where/over/the.rainbow vmsify [-.where.over]the.rainbow
83 .../some/where/over/the.rainbow vmsify [...some.where.over]the.rainbow
84 some/.../where/over/the.rainbow vmsify [.some...where.over]the.rainbow
85 /some/.../where/over/the.rainbow vmsify some:[...where.over]the.rainbow
86 some/where/... vmsify [.some.where...]
87 /where/... vmsify where:[...]
93 # Fileifying directory specs
94 down:[the.garden.path] fileify down:[the.garden]path.dir;1
95 [.down.the.garden.path] fileify [.down.the.garden]path.dir;1
96 /down/the/garden/path fileify /down/the/garden/path.dir;1
97 /down/the/garden/path/ fileify /down/the/garden/path.dir;1
98 down/the/garden/path fileify down/the/garden/path.dir;1
99 down:[the.garden]path fileify down:[the.garden]path.dir;1
100 down:[the.garden]path. fileify # N.B. trailing . ==> null type
101 down:[the]garden.path fileify
102 /down/the/garden/path. fileify # N.B. trailing . ==> null type
103 /down/the/garden.path fileify
105 # and pathifying them
106 down:[the.garden]path.dir;1 pathify down:[the.garden.path]
107 [.down.the.garden]path.dir pathify [.down.the.garden.path]
108 /down/the/garden/path.dir pathify /down/the/garden/path/
109 down/the/garden/path.dir pathify down/the/garden/path/
110 down:[the.garden]path pathify down:[the.garden.path]
111 down:[the.garden]path. pathify # N.B. trailing . ==> null type
112 down:[the]garden.path pathify
113 /down/the/garden/path. pathify # N.B. trailing . ==> null type
114 /down/the/garden.path pathify
115 down:[the.garden]path.dir;2 pathify #N.B. ;2
117 /down/the/garden/. pathify /down/the/garden/./
118 /down/the/garden/.. pathify /down/the/garden/../
119 /down/the/garden/... pathify /down/the/garden/.../
122 # Both VMS/Unix and file/path conversions
123 down:[the.garden]path.dir;1 unixpath /down/the/garden/path/
124 /down/the/garden/path vmspath down:[the.garden.path]
125 down:[the.garden.path] unixpath /down/the/garden/path/
126 down:[the.garden.path...] unixpath /down/the/garden/path/.../
127 /down/the/garden/path.dir vmspath down:[the.garden.path]
128 [.down.the.garden]path.dir unixpath down/the/garden/path/
129 down/the/garden/path vmspath [.down.the.garden.path]
132 # Redundant characters in Unix paths
133 //some/where//over/../the.rainbow vmsify some:[where]the.rainbow
134 /some/where//over/./the.rainbow vmsify some:[where.over]the.rainbow