X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=vms%2Fext%2Ffilespec.t;h=7123ffc51cec333f87988bc0e1ef36a37f5e3f28;hb=1506e54c80473c347acbbaa4273229d686e33f62;hp=bf0208d94bf0d7f230496264daffb4e7164ffb80;hpb=386b6dc5c980ee0f20a1e84d5228904e4038dcfd;p=p5sagit%2Fp5-mst-13.2.git diff --git a/vms/ext/filespec.t b/vms/ext/filespec.t index bf0208d..7123ffc 100644 --- a/vms/ext/filespec.t +++ b/vms/ext/filespec.t @@ -3,6 +3,7 @@ BEGIN { unshift(@INC,'../lib') if -d '../lib'; } use VMS::Filespec; +use File::Spec; foreach () { chomp; @@ -10,19 +11,16 @@ foreach () { next if /^\s*$/; push(@tests,$_); } -print '1..',scalar(@tests)+6,"\n"; + +require './test.pl'; +plan(tests => scalar(2*@tests)+6); foreach $test (@tests) { - ($arg,$func,$expect) = split(/\t+/,$test); - $idx++; + ($arg,$func,$expect) = split(/\s+/,$test); + $rslt = eval "$func('$arg')"; - if ($@) { print "not ok $idx : eval error: $@\n"; next; } - else { - if ($rslt ne $expect) { - print "not ok $idx : $func('$arg') expected |$expect|, got |$rslt|\n"; - } - else { print "ok $idx\n"; } - } + is($@, '', "eval func('$arg')"); + is($rslt, $expect, " result"); } $defwarn = <<'EOW'; @@ -32,66 +30,48 @@ $defwarn = <<'EOW'; # file specifications shwn above are in fact equivalent. EOW -if (rmsexpand('[]') eq "\U$ENV{DEFAULT}") { print 'ok ',++$idx,"\n"; } -else { - print 'not ok ', ++$idx, ": rmsexpand('[]') = |", rmsexpand('[]'), - "|, \$ENV{DEFAULT} = |\U$ENV{DEFAULT}|\n$defwarn"; -} -if (rmsexpand('from.here') eq "\L$ENV{DEFAULT}from.here") { - print 'ok ', ++$idx, "\n"; -} -else { - print 'not ok ', ++$idx, ": rmsexpand('from.here') = |", - rmsexpand('from.here'), - "|, \$ENV{DEFAULT}from.here = |\L$ENV{DEFAULT}from.here|\n$defwarn"; -} -if (rmsexpand('from') eq "\L$ENV{DEFAULT}from") { - print 'ok ', ++$idx, "\n"; -} -else { - print 'not ok ', ++$idx, ": rmsexpand('from') = |", - rmsexpand('from'), - "|, \$ENV{DEFAULT}from = |\L$ENV{DEFAULT}from|\n$defwarn"; -} -if (rmsexpand('from.here','cant:[get.there];2') eq - 'cant:[get.there]from.here;2') { print 'ok ',++$idx,"\n"; } -else { - print 'not ok ', ++$idx, ': expected |cant:[get.there]from.here;2|, got |', - rmsexpand('from.here','cant:[get.there];2'),"|\n"; -} +is(uc(rmsexpand('[]')), "\U$ENV{DEFAULT}", 'rmsexpand()') || print $defwarn; +is(rmsexpand('from.here'),"\L$ENV{DEFAULT}from.here") || print $defwarn; +is(rmsexpand('from'), "\L$ENV{DEFAULT}from") || print $defwarn; + +is(rmsexpand('from.here','cant:[get.there];2'), + 'cant:[get.there]from.here;2') || print $defwarn; + # Make sure we're using redirected mkdir, which strips trailing '/', since # the CRTL's mkdir can't handle this. -print +(mkdir('testdir/',0777) ? 'ok ' : 'not ok '),++$idx,"\n"; -print +(rmdir('testdir/') ? 'ok ' : 'not ok '),++$idx,"\n"; +ok(mkdir('testdir/',0777), 'using redirected mkdir()'); +ok(rmdir('testdir/'), ' rmdir()'); __DATA__ +# lots of underscores used to minimize collision with existing logical names + # Basic VMS to Unix filespecs -some:[where.over]the.rainbow unixify /some/where/over/the.rainbow -[.some.where.over]the.rainbow unixify some/where/over/the.rainbow -[-.some.where.over]the.rainbow unixify ../some/where/over/the.rainbow -[.some.--.where.over]the.rainbow unixify some/../../where/over/the.rainbow -[.some...where.over]the.rainbow unixify some/.../where/over/the.rainbow -[...some.where.over]the.rainbow unixify .../some/where/over/the.rainbow -[.some.where.over...]the.rainbow unixify some/where/over/.../the.rainbow -[.some.where.over...] unixify some/where/over/.../ -[.some.where.over.-] unixify some/where/over/../ +__some_:[__where_.__over_]__the_.__rainbow_ unixify /__some_/__where_/__over_/__the_.__rainbow_ +[.__some_.__where_.__over_]__the_.__rainbow_ unixify __some_/__where_/__over_/__the_.__rainbow_ +[-.__some_.__where_.__over_]__the_.__rainbow_ unixify ../__some_/__where_/__over_/__the_.__rainbow_ +[.__some_.--.__where_.__over_]__the_.__rainbow_ unixify __some_/../../__where_/__over_/__the_.__rainbow_ +[.__some_...__where_.__over_]__the_.__rainbow_ unixify __some_/.../__where_/__over_/__the_.__rainbow_ +[...__some_.__where_.__over_]__the_.__rainbow_ unixify .../__some_/__where_/__over_/__the_.__rainbow_ +[.__some_.__where_.__over_...]__the_.__rainbow_ unixify __some_/__where_/__over_/.../__the_.__rainbow_ +[.__some_.__where_.__over_...] unixify __some_/__where_/__over_/.../ +[.__some_.__where_.__over_.-] unixify __some_/__where_/__over_/../ [] unixify ./ [-] unixify ../ [--] unixify ../../ [...] unixify .../ # and back again -/some/where/over/the.rainbow vmsify some:[where.over]the.rainbow -some/where/over/the.rainbow vmsify [.some.where.over]the.rainbow -../some/where/over/the.rainbow vmsify [-.some.where.over]the.rainbow -some/../../where/over/the.rainbow vmsify [.some.--.where.over]the.rainbow -.../some/where/over/the.rainbow vmsify [...some.where.over]the.rainbow -some/.../where/over/the.rainbow vmsify [.some...where.over]the.rainbow -/some/.../where/over/the.rainbow vmsify some:[...where.over]the.rainbow -some/where/... vmsify [.some.where...] -/where/... vmsify where:[...] +/__some_/__where_/__over_/__the_.__rainbow_ vmsify __some_:[__where_.__over_]__the_.__rainbow_ +__some_/__where_/__over_/__the_.__rainbow_ vmsify [.__some_.__where_.__over_]__the_.__rainbow_ +../__some_/__where_/__over_/__the_.__rainbow_ vmsify [-.__some_.__where_.__over_]__the_.__rainbow_ +__some_/../../__where_/__over_/__the_.__rainbow_ vmsify [-.__where_.__over_]__the_.__rainbow_ +.../__some_/__where_/__over_/__the_.__rainbow_ vmsify [...__some_.__where_.__over_]__the_.__rainbow_ +__some_/.../__where_/__over_/__the_.__rainbow_ vmsify [.__some_...__where_.__over_]__the_.__rainbow_ +/__some_/.../__where_/__over_/__the_.__rainbow_ vmsify __some_:[...__where_.__over_]__the_.__rainbow_ +__some_/__where_/... vmsify [.__some_.__where_...] +/__where_/... vmsify __where_:[...] . vmsify [] .. vmsify [-] ../.. vmsify [--] @@ -99,49 +79,52 @@ some/where/... vmsify [.some.where...] / vmsify sys$disk:[000000] # Fileifying directory specs -down:[the.garden.path] fileify down:[the.garden]path.dir;1 -[.down.the.garden.path] fileify [.down.the.garden]path.dir;1 -/down/the/garden/path fileify /down/the/garden/path.dir;1 -/down/the/garden/path/ fileify /down/the/garden/path.dir;1 -down/the/garden/path fileify down/the/garden/path.dir;1 -down:[the.garden]path fileify down:[the.garden]path.dir;1 -down:[the.garden]path. fileify # N.B. trailing . ==> null type -down:[the]garden.path fileify -/down/the/garden/path. fileify # N.B. trailing . ==> null type -/down/the/garden.path fileify +__down_:[__the_.__garden_.__path_] fileify __down_:[__the_.__garden_]__path_.dir;1 +[.__down_.__the_.__garden_.__path_] fileify [.__down_.__the_.__garden_]__path_.dir;1 +/__down_/__the_/__garden_/__path_ fileify /__down_/__the_/__garden_/__path_.dir;1 +/__down_/__the_/__garden_/__path_/ fileify /__down_/__the_/__garden_/__path_.dir;1 +__down_/__the_/__garden_/__path_ fileify __down_/__the_/__garden_/__path_.dir;1 +__down_:[__the_.__garden_]__path_ fileify __down_:[__the_.__garden_]__path_.dir;1 +__down_:[__the_.__garden_]__path_. fileify # N.B. trailing . ==> null type +__down_:[__the_]__garden_.__path_ fileify +/__down_/__the_/__garden_/__path_. fileify # N.B. trailing . ==> null type +/__down_/__the_/__garden_.__path_ fileify # and pathifying them -down:[the.garden]path.dir;1 pathify down:[the.garden.path] -[.down.the.garden]path.dir pathify [.down.the.garden.path] -/down/the/garden/path.dir pathify /down/the/garden/path/ -down/the/garden/path.dir pathify down/the/garden/path/ -down:[the.garden]path pathify down:[the.garden.path] -down:[the.garden]path. pathify # N.B. trailing . ==> null type -down:[the]garden.path pathify -/down/the/garden/path. pathify # N.B. trailing . ==> null type -/down/the/garden.path pathify -down:[the.garden]path.dir;2 pathify #N.B. ;2 -path pathify path/ -/down/the/garden/. pathify /down/the/garden/./ -/down/the/garden/.. pathify /down/the/garden/../ -/down/the/garden/... pathify /down/the/garden/.../ -path.notdir pathify +__down_:[__the_.__garden_]__path_.dir;1 pathify __down_:[__the_.__garden_.__path_] +[.__down_.__the_.__garden_]__path_.dir pathify [.__down_.__the_.__garden_.__path_] +/__down_/__the_/__garden_/__path_.dir pathify /__down_/__the_/__garden_/__path_/ +__down_/__the_/__garden_/__path_.dir pathify __down_/__the_/__garden_/__path_/ +__down_:[__the_.__garden_]__path_ pathify __down_:[__the_.__garden_.__path_] +__down_:[__the_.__garden_]__path_. pathify # N.B. trailing . ==> null type +__down_:[__the_]__garden_.__path_ pathify +/__down_/__the_/__garden_/__path_. pathify # N.B. trailing . ==> null type +/__down_/__the_/__garden_.__path_ pathify +__down_:[__the_.__garden_]__path_.dir;2 pathify #N.B. ;2 +__path_ pathify __path_/ +/__down_/__the_/__garden_/. pathify /__down_/__the_/__garden_/./ +/__down_/__the_/__garden_/.. pathify /__down_/__the_/__garden_/../ +/__down_/__the_/__garden_/... pathify /__down_/__the_/__garden_/.../ +__path_.notdir pathify # Both VMS/Unix and file/path conversions -down:[the.garden]path.dir;1 unixpath /down/the/garden/path/ -/down/the/garden/path vmspath down:[the.garden.path] -down:[the.garden.path] unixpath /down/the/garden/path/ -down:[the.garden.path...] unixpath /down/the/garden/path/.../ -/down/the/garden/path.dir vmspath down:[the.garden.path] -[.down.the.garden]path.dir unixpath down/the/garden/path/ -down/the/garden/path vmspath [.down.the.garden.path] -path vmspath [.path] +__down_:[__the_.__garden_]__path_.dir;1 unixpath /__down_/__the_/__garden_/__path_/ +/__down_/__the_/__garden_/__path_ vmspath __down_:[__the_.__garden_.__path_] +__down_:[__the_.__garden_.__path_] unixpath /__down_/__the_/__garden_/__path_/ +__down_:[__the_.__garden_.__path_...] unixpath /__down_/__the_/__garden_/__path_/.../ +/__down_/__the_/__garden_/__path_.dir vmspath __down_:[__the_.__garden_.__path_] +[.__down_.__the_.__garden_]__path_.dir unixpath __down_/__the_/__garden_/__path_/ +__down_/__the_/__garden_/__path_ vmspath [.__down_.__the_.__garden_.__path_] +__path_ vmspath [.__path_] / vmspath sys$disk:[000000] # Redundant characters in Unix paths -//some/where//over/../the.rainbow vmsify some:[where]the.rainbow -/some/where//over/./the.rainbow vmsify some:[where.over]the.rainbow +//__some_/__where_//__over_/../__the_.__rainbow_ vmsify __some_:[__where_]__the_.__rainbow_ +/__some_/__where_//__over_/./__the_.__rainbow_ vmsify __some_:[__where_.__over_]__the_.__rainbow_ ..//../ vmspath [--] ./././ vmspath [] ./../. vmsify [-] +# Our override of File::Spec->canonpath can do some strange things +__dev:[__dir.000000]__foo File::Spec->canonpath __dev:[__dir]__foo +__dev:[__dir.][000000]__foo File::Spec->canonpath __dev:[__dir]__foo