Commit | Line | Data |
acbb349e |
1 | #!./perl |
2 | |
3 | use VMS::Filespec; |
4 | |
5 | foreach (<DATA>) { |
6 | chomp; |
7 | s/\s*#.*//; |
8 | next if /^\s*$/; |
9 | push(@tests,$_); |
10 | } |
740ce14c |
11 | print '1..',scalar(@tests)+3,"\n"; |
acbb349e |
12 | |
13 | foreach $test (@tests) { |
14 | ($arg,$func,$expect) = split(/\t+/,$test); |
15 | $idx++; |
16 | $rslt = eval "$func('$arg')"; |
17 | if ($@) { print "not ok $idx : eval error: $@\n"; next; } |
18 | else { |
19 | if ($rslt ne $expect) { |
20 | print "not ok $idx : $func('$arg') expected |$expect|, got |$rslt|\n"; |
21 | } |
22 | else { print "ok $idx\n"; } |
23 | } |
24 | } |
25 | |
26 | print +(rmsexpand('[]') eq "\U$ENV{DEFAULT}" ? 'ok ' : 'not ok '),++$idx,"\n"; |
740ce14c |
27 | print +(rmsexpand('from.here') eq "\L$ENV{DEFAULT}from.here" ? |
28 | 'ok ' : 'not ok '),++$idx,"\n"; |
29 | print +(rmsexpand('from.here','cant:[get.there];2') eq |
30 | 'cant:[get.there]from.here;2' ? 'ok ' : 'not ok '),++$idx,"\n"; |
acbb349e |
31 | |
32 | __DATA__ |
33 | |
34 | # Basic VMS to Unix filespecs |
35 | some:[where.over]the.rainbow unixify /some/where/over/the.rainbow |
36 | [.some.where.over]the.rainbow unixify some/where/over/the.rainbow |
37 | [-.some.where.over]the.rainbow unixify ../some/where/over/the.rainbow |
38 | [.some.--.where.over]the.rainbow unixify some/../../where/over/the.rainbow |
f86702cc |
39 | [.some...where.over]the.rainbow unixify some/.../where/over/the.rainbow |
40 | [...some.where.over]the.rainbow unixify .../some/where/over/the.rainbow |
41 | [.some.where.over...]the.rainbow unixify some/where/over/.../the.rainbow |
42 | [.some.where.over...] unixify some/where/over/.../ |
43 | [.some.where.over.-] unixify some/where/over/../ |
acbb349e |
44 | [] unixify ./ |
45 | [-] unixify ../ |
46 | [--] unixify ../../ |
f86702cc |
47 | [...] unixify .../ |
acbb349e |
48 | |
49 | # and back again |
50 | /some/where/over/the.rainbow vmsify some:[where.over]the.rainbow |
51 | some/where/over/the.rainbow vmsify [.some.where.over]the.rainbow |
52 | ../some/where/over/the.rainbow vmsify [-.some.where.over]the.rainbow |
53 | some/../../where/over/the.rainbow vmsify [-.where.over]the.rainbow |
f86702cc |
54 | .../some/where/over/the.rainbow vmsify [...some.where.over]the.rainbow |
55 | some/.../where/over/the.rainbow vmsify [.some...where.over]the.rainbow |
56 | /some/.../where/over/the.rainbow vmsify some:[...where.over]the.rainbow |
57 | some/where/... vmsify [.some.where...] |
58 | /where/... vmsify where:[...] |
acbb349e |
59 | . vmsify [] |
60 | .. vmsify [-] |
61 | ../.. vmsify [--] |
f86702cc |
62 | .../ vmsify [...] |
acbb349e |
63 | |
64 | # Fileifying directory specs |
65 | down:[the.garden.path] fileify down:[the.garden]path.dir;1 |
66 | [.down.the.garden.path] fileify [.down.the.garden]path.dir;1 |
67 | /down/the/garden/path fileify /down/the/garden/path.dir;1 |
68 | /down/the/garden/path/ fileify /down/the/garden/path.dir;1 |
69 | down/the/garden/path fileify down/the/garden/path.dir;1 |
70 | down:[the.garden]path fileify down:[the.garden]path.dir;1 |
71 | down:[the.garden]path. fileify # N.B. trailing . ==> null type |
72 | down:[the]garden.path fileify |
73 | /down/the/garden/path. fileify # N.B. trailing . ==> null type |
74 | /down/the/garden.path fileify |
75 | |
76 | # and pathifying them |
77 | down:[the.garden]path.dir;1 pathify down:[the.garden.path] |
78 | [.down.the.garden]path.dir pathify [.down.the.garden.path] |
79 | /down/the/garden/path.dir pathify /down/the/garden/path/ |
80 | down/the/garden/path.dir pathify down/the/garden/path/ |
81 | down:[the.garden]path pathify down:[the.garden.path] |
82 | down:[the.garden]path. pathify # N.B. trailing . ==> null type |
83 | down:[the]garden.path pathify |
84 | /down/the/garden/path. pathify # N.B. trailing . ==> null type |
85 | /down/the/garden.path pathify |
86 | down:[the.garden]path.dir;2 pathify #N.B. ;2 |
87 | path pathify path/ |
f86702cc |
88 | /down/the/garden/. pathify /down/the/garden/./ |
89 | /down/the/garden/.. pathify /down/the/garden/../ |
90 | /down/the/garden/... pathify /down/the/garden/.../ |
acbb349e |
91 | path.notdir pathify |
92 | |
93 | # Both VMS/Unix and file/path conversions |
94 | down:[the.garden]path.dir;1 unixpath /down/the/garden/path/ |
95 | /down/the/garden/path vmspath down:[the.garden.path] |
96 | down:[the.garden.path] unixpath /down/the/garden/path/ |
f86702cc |
97 | down:[the.garden.path...] unixpath /down/the/garden/path/.../ |
acbb349e |
98 | /down/the/garden/path.dir vmspath down:[the.garden.path] |
99 | [.down.the.garden]path.dir unixpath down/the/garden/path/ |
100 | down/the/garden/path vmspath [.down.the.garden.path] |
101 | path vmspath [.path] |
102 | |
103 | # Redundant characters in Unix paths |
740ce14c |
104 | //some/where//over/../the.rainbow vmsify some:[where]the.rainbow |
acbb349e |
105 | /some/where//over/./the.rainbow vmsify some:[where.over]the.rainbow |
106 | ..//../ vmspath [--] |
107 | ./././ vmspath [] |
108 | ./../. vmsify [-] |
109 | |