3 BEGIN { unshift(@INC,'../lib') if -d '../lib'; }
13 print '1..',scalar(@tests)+6,"\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"; }
29 # Note: This failure may have occurred because your default device
30 # was set using a non-concealed logical name. If this is the case,
31 # you will need to determine by inspection that the two resultant
32 # file specifications shwn above are in fact equivalent.
35 if (rmsexpand('[]') eq "\U$ENV{DEFAULT}") { print 'ok ',++$idx,"\n"; }
37 print 'not ok ', ++$idx, ": rmsexpand('[]') = |", rmsexpand('[]'),
38 "|, \$ENV{DEFAULT} = |\U$ENV{DEFAULT}|\n$defwarn";
40 if (rmsexpand('from.here') eq "\L$ENV{DEFAULT}from.here") {
41 print 'ok ', ++$idx, "\n";
44 print 'not ok ', ++$idx, ": rmsexpand('from.here') = |",
45 rmsexpand('from.here'),
46 "|, \$ENV{DEFAULT}from.here = |\L$ENV{DEFAULT}from.here|\n$defwarn";
48 if (rmsexpand('from') eq "\L$ENV{DEFAULT}from") {
49 print 'ok ', ++$idx, "\n";
52 print 'not ok ', ++$idx, ": rmsexpand('from') = |",
54 "|, \$ENV{DEFAULT}from = |\L$ENV{DEFAULT}from|\n$defwarn";
56 if (rmsexpand('from.here','cant:[get.there];2') eq
57 'cant:[get.there]from.here;2') { print 'ok ',++$idx,"\n"; }
59 print 'not ok ', ++$idx, ': expected |cant:[get.there]from.here;2|, got |',
60 rmsexpand('from.here','cant:[get.there];2'),"|\n";
63 # Make sure we're using redirected mkdir, which strips trailing '/', since
64 # the CRTL's mkdir can't handle this.
65 print +(mkdir('testdir/',0777) ? 'ok ' : 'not ok '),++$idx,"\n";
66 print +(rmdir('testdir/') ? 'ok ' : 'not ok '),++$idx,"\n";
70 # Basic VMS to Unix filespecs
71 some_logical_name_not_likely:[where.over]the.rainbow unixify /some_logical_name_not_likely/where/over/the.rainbow
72 [.some_logical_name_not_likely.where.over]the.rainbow unixify some_logical_name_not_likely/where/over/the.rainbow
73 [-.some_logical_name_not_likely.where.over]the.rainbow unixify ../some_logical_name_not_likely/where/over/the.rainbow
74 [.some_logical_name_not_likely.--.where.over]the.rainbow unixify some_logical_name_not_likely/../../where/over/the.rainbow
75 [.some_logical_name_not_likely...where.over]the.rainbow unixify some_logical_name_not_likely/.../where/over/the.rainbow
76 [...some_logical_name_not_likely.where.over]the.rainbow unixify .../some_logical_name_not_likely/where/over/the.rainbow
77 [.some_logical_name_not_likely.where.over...]the.rainbow unixify some_logical_name_not_likely/where/over/.../the.rainbow
78 [.some_logical_name_not_likely.where.over...] unixify some_logical_name_not_likely/where/over/.../
79 [.some_logical_name_not_likely.where.over.-] unixify some_logical_name_not_likely/where/over/../
86 /some_logical_name_not_likely/where/over/the.rainbow vmsify some_logical_name_not_likely:[where.over]the.rainbow
87 some_logical_name_not_likely/where/over/the.rainbow vmsify [.some_logical_name_not_likely.where.over]the.rainbow
88 ../some_logical_name_not_likely/where/over/the.rainbow vmsify [-.some_logical_name_not_likely.where.over]the.rainbow
89 some_logical_name_not_likely/../../where/over/the.rainbow vmsify [-.where.over]the.rainbow
90 .../some_logical_name_not_likely/where/over/the.rainbow vmsify [...some_logical_name_not_likely.where.over]the.rainbow
91 some_logical_name_not_likely/.../where/over/the.rainbow vmsify [.some_logical_name_not_likely...where.over]the.rainbow
92 /some_logical_name_not_likely/.../where/over/the.rainbow vmsify some_logical_name_not_likely:[...where.over]the.rainbow
93 some_logical_name_not_likely/where/... vmsify [.some_logical_name_not_likely.where...]
94 /where/... vmsify where:[...]
99 / vmsify sys$disk:[000000]
101 # Fileifying directory specs
102 down_logical_name_not_likely:[the.garden.path] fileify down_logical_name_not_likely:[the.garden]path.dir;1
103 [.down_logical_name_not_likely.the.garden.path] fileify [.down_logical_name_not_likely.the.garden]path.dir;1
104 /down_logical_name_not_likely/the/garden/path fileify /down_logical_name_not_likely/the/garden/path.dir;1
105 /down_logical_name_not_likely/the/garden/path/ fileify /down_logical_name_not_likely/the/garden/path.dir;1
106 down_logical_name_not_likely/the/garden/path fileify down_logical_name_not_likely/the/garden/path.dir;1
107 down_logical_name_not_likely:[the.garden]path fileify down_logical_name_not_likely:[the.garden]path.dir;1
108 down_logical_name_not_likely:[the.garden]path. fileify # N.B. trailing . ==> null type
109 down_logical_name_not_likely:[the]garden.path fileify
110 /down_logical_name_not_likely/the/garden/path. fileify # N.B. trailing . ==> null type
111 /down_logical_name_not_likely/the/garden.path fileify
113 # and pathifying them
114 down_logical_name_not_likely:[the.garden]path.dir;1 pathify down_logical_name_not_likely:[the.garden.path]
115 [.down_logical_name_not_likely.the.garden]path.dir pathify [.down_logical_name_not_likely.the.garden.path]
116 /down_logical_name_not_likely/the/garden/path.dir pathify /down_logical_name_not_likely/the/garden/path/
117 down_logical_name_not_likely/the/garden/path.dir pathify down_logical_name_not_likely/the/garden/path/
118 down_logical_name_not_likely:[the.garden]path pathify down_logical_name_not_likely:[the.garden.path]
119 down_logical_name_not_likely:[the.garden]path. pathify # N.B. trailing . ==> null type
120 down_logical_name_not_likely:[the]garden.path pathify
121 /down_logical_name_not_likely/the/garden/path. pathify # N.B. trailing . ==> null type
122 /down_logical_name_not_likely/the/garden.path pathify
123 down_logical_name_not_likely:[the.garden]path.dir;2 pathify #N.B. ;2
125 /down_logical_name_not_likely/the/garden/. pathify /down_logical_name_not_likely/the/garden/./
126 /down_logical_name_not_likely/the/garden/.. pathify /down_logical_name_not_likely/the/garden/../
127 /down_logical_name_not_likely/the/garden/... pathify /down_logical_name_not_likely/the/garden/.../
130 # Both VMS/Unix and file/path conversions
131 down_logical_name_not_likely:[the.garden]path.dir;1 unixpath /down_logical_name_not_likely/the/garden/path/
132 /down_logical_name_not_likely/the/garden/path vmspath down_logical_name_not_likely:[the.garden.path]
133 down_logical_name_not_likely:[the.garden.path] unixpath /down_logical_name_not_likely/the/garden/path/
134 down_logical_name_not_likely:[the.garden.path...] unixpath /down_logical_name_not_likely/the/garden/path/.../
135 /down_logical_name_not_likely/the/garden/path.dir vmspath down_logical_name_not_likely:[the.garden.path]
136 [.down_logical_name_not_likely.the.garden]path.dir unixpath down_logical_name_not_likely/the/garden/path/
137 down_logical_name_not_likely/the/garden/path vmspath [.down_logical_name_not_likely.the.garden.path]
139 / vmspath sys$disk:[000000]
141 # Redundant characters in Unix paths
142 //some_logical_name_not_likely/where//over/../the.rainbow vmsify some_logical_name_not_likely:[where]the.rainbow
143 /some_logical_name_not_likely/where//over/./the.rainbow vmsify some_logical_name_not_likely:[where.over]the.rainbow