#!perl -w -- -*- tab-width: 4; mode: perl -*-
my
$haveTestNoWarnings
=
eval
{
require
Test::NoWarnings;
import
Test::NoWarnings; 1; };
if
( !
$ENV
{HARNESS_ACTIVE} ) {
}
sub
add_test;
sub
test_num;
sub
do_tests;
$ENV
{nullglob} = 0;
add_test( [
qq{$0}
],
qw( )
);
add_test( [
qq{ $0}
],
qw( )
);
add_test( [
qq{$0 }
],
qw( )
);
add_test( [
qq{ $0 }
],
qw( )
);
add_test( [
qq{ a }
],
qw( )
);
add_test( [
qq{ a b c }
],
qw( )
);
add_test( [
qq{ a 'b' c }
],
qw( )
);
add_test( [
qq{$0 a '' }
], (
qq{a}
,
qq{}
) );
add_test( [
qq{$0 a b c}
],
qw( a b c )
);
add_test( [
qq{$0 "a b" c}
], (
"a b"
,
"c"
) );
add_test( [
qq{$0 'a b' c'' }
], (
"a b"
,
"c"
) );
add_test( [
qq{$0 "a b" c"" }
], (
"a b"
,
"c"
) );
add_test( [
qq{$0 "a b" c""d }
], (
"a b"
,
"cd"
) );
add_test( [
qq{$0 'a b" c'}
], (
qq{a b" c}
) );
add_test( [
qq{$0 'a bb" c'}
], (
qq{a bb" c}
) );
add_test( [
qq{$0 \$'test'}
], (
qq{test}
) );
add_test( [
qq{$0 \$'\\x34\\x34'}
], (
qq{44}
) );
add_test( [
qq{$0 '\\x34\\x34'}
], (
qq{\\x34\\x34}
) );
add_test( [
qq{$0 \*.t}
], (
q{*.t}
) );
add_test( [
qq{$0 a b c \*.t}
], (
qw{a b c}
,
q{*.t}
) );
add_test( [
qq{$0 a b c t/\*.t}
], (
qw{a b c}
,
glob
(
't/*.t'
) ) );
add_test( [
qq{$0 a t/\*.t b}
], (
"a"
,
glob
(
't/*.t'
),
"b"
) );
add_test( [
qq{$0 t/\"*".t}
], (
q{t/*.t}
) );
add_test( [
qq{$0 t/\'*'.t}
], (
q{t/*.t}
) );
add_test( [
qq{$0 t/{0}
\*.t} ], (
glob
(
't/{0}*.t'
) ) );
add_test( [
qq{$0 t/{0,}
\*.t} ], (
glob
(
't/{0,}*.t'
) ) );
add_test( [
qq{$0 t/{0,p}
\*.t}, {
'nullglob'
=> 1 } ], (
glob
(
't/{0,p}*.t'
) ) );
add_test( [
qq{$0 t/\{0,t,p\}
\*.t}, {
'nullglob'
=> 1 } ], (
glob
(
't/{0,t,p}*.t'
) ) );
add_test( [
qq{$0 t/\{t,p,0\}
\*.t}, {
'nullglob'
=> 1 } ], (
glob
(
't/{t,p,0}*.t'
) ) );
add_test( [
qq{$0 t/\*}
], (
glob
(
't/*'
) ) );
add_test( [
qq{$0 '\\\\'}
], (
'\\\\'
) );
add_test( [
qq{$0 'a\\a' '\\a\\x\\'}
], (
'a\\a'
,
'\\a\\x\\'
) );
add_test( [
qq{$0 '/a\a'}
], (
qq{/a\a}
) );
add_test( [
qq{$0 '//foo\\bar'}
], (
q{//foo\\bar}
) );
add_test( [
qq{$0 '/a\a' /foo\\\\bar}
], (
qq{/a\a}
,
q{/foo\\\\bar}
) );
add_test( [
qq{$0 1 't\\glob-file.tests'/*}
], ( 1,
glob
(
't/glob-file.tests/*'
) ) );
add_test( [
qq{$0 2 't\\glob-file.tests'\\*}
], ( 2,
glob
(
't/glob-file.tests/*'
) ) );
add_test( [
qq{$0 3 't\\glob-file.tests/'*}
], ( 3,
glob
(
't/glob-file.tests/*'
) ) );
add_test( [
qq{$0 4 't\\glob-file.tests\\'*}
], ( 4,
glob
(
't/glob-file.tests/*'
) ) );
add_test( [
qq{$0 5 't\\glob-file.tests\\*'}
], ( 5,
q{t\\glob-file.tests\\*}
) );
add_test( [
qq{$0 t ""}
], (
q{t}
,
q{}
) );
add_test( [
qq{$0 t 0}
], (
q{t}
,
q{0}
) );
add_test( [
qq{$0 t 0""}
], (
q{t}
,
q{0}
) );
add_test( [
qq{$0 't\\glob-file.tests\\'*x}
], (
q{t\\glob-file.tests\\*x}
) );
if
(
$ENV
{TEST_FRAGILE}) {
add_test( [
qq{$0 ~*}
], (
q{~*}
) );
add_test( [
qq{$0 ~}
], ( unixify(
$ENV
{USERPROFILE}) ) );
add_test( [
qq{$0 ~ ~$ENV{USERNAME}
} ], ( unixify(
$ENV
{USERPROFILE}), unixify(
$ENV
{USERPROFILE}) ) );
add_test( [
qq{$0 ~$ENV{USERNAME}
/} ], ( unixify(
$ENV
{USERPROFILE}.
q{/}
) ) );
add_test( [
qq{$0 x ~$ENV{USERNAME}
\\ x} ], (
'x'
, unixify(
$ENV
{USERPROFILE}.
q{/}
),
'x'
) );
}
add_test( [
qq{$0 1 foo\\bar}
], ( 1,
q{foo\\bar}
) );
add_test( [
qq{$0 2 \\foo/bar}
], ( 2,
q{\\foo/bar}
) );
add_test( [
qq{$0 1 't\\glob-file.tests\\'*}
], ( 1,
glob
(
't/glob-file.tests/*'
) ) );
add_test( [
qq{$0 foo\\bar}
], (
q{foo\\bar}
) );
add_test( [
qq{$0 foo\\bar}
, {
nullglob
=> 0 } ], (
q{foo\\bar}
) );
plan
tests
=> test_num() + (
$haveTestNoWarnings
? 1 : 0);
do_tests();
my
@tests
;
sub
add_test {
push
@tests
, [ (
caller
(0))[2],
@_
];
return
; }
sub
test_num {
return
scalar
(
@tests
); }
sub
do_tests {
foreach
my
$t
(
@tests
) {
my
$line
=
shift
@{
$t
};
my
@args
= @{
shift
@{
$t
}};
my
@exp
= @{
$t
};
my
@got
;
eval
{
@got
= Win32::CommandLine::_argv(
@args
); 1; } or (
@got
= ( $@ =~ /^(.*)\s+at.*$/ ) ); eq_or_diff \
@got
, \
@exp
,
"[line:$line] testing: `@args`"
; }
return
; }
sub
dosify{
return
Win32::CommandLine::_dosify(
@_
);
}
sub
unixify{
@_
=
@_
?
@_
:
$_
if
defined
wantarray
;
for
(
@_
?
@_
:
$_
)
{
s:\\:\/:g;
}
return
wantarray
?
@_
:
"@_"
;
}