diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2014-03-07 12:27:19 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2014-03-07 12:27:19 +0000 |
commit | 13016fa7011fc3084536c7b3181d75acb43d3aae (patch) | |
tree | 243c375747ca181bea20c8e05e01e00e449d128c /t/split_like_shell.t | |
download | ExtUtils-Helpers-tarball-13016fa7011fc3084536c7b3181d75acb43d3aae.tar.gz |
ExtUtils-Helpers-0.022HEADExtUtils-Helpers-0.022master
Diffstat (limited to 't/split_like_shell.t')
-rw-r--r-- | t/split_like_shell.t | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/t/split_like_shell.t b/t/split_like_shell.t new file mode 100644 index 0000000..df2d2bc --- /dev/null +++ b/t/split_like_shell.t @@ -0,0 +1,83 @@ +#!/usr/bin/perl + +use strict; +use warnings FATAL => 'all'; +use Test::More; +use ExtUtils::Helpers qw/split_like_shell/; + +my @unix_splits = + ( + { q{one t'wo th'ree f"o\"ur " "five" } => [ 'one', 'two three', 'fo"ur ', 'five' ] }, + { q{ foo bar } => [ 'foo', 'bar' ] }, + { q{ D\'oh f\{g\'h\"i\]\* } => [ "D'oh", "f{g'h\"i]*" ] }, + { q{ D\$foo } => [ 'D$foo' ] }, + { qq{one\\\ntwo} => [ "one\ntwo" ] }, # TODO + ); + +my @win_splits = + ( + { 'a" "b\\c" "d' => [ 'a b\c d' ] }, + { '"a b\\c d"' => [ 'a b\c d' ] }, + { '"a b"\\"c d"' => [ 'a b"c', 'd' ] }, + { '"a b"\\\\"c d"' => [ 'a b\c d' ] }, + { '"a"\\"b" "a\\"b"' => [ 'a"b a"b' ] }, + { '"a"\\\\"b" "a\\\\"b"' => [ 'a\b', 'a\b' ] }, + { '"a"\\"b a\\"b"' => [ 'a"b', 'a"b' ] }, + { 'a"\\"b" "a\\"b' => [ 'a"b', 'a"b' ] }, + { 'a"\\"b" "a\\"b' => [ 'a"b', 'a"b' ] }, + { 'a b' => [ 'a', 'b' ] }, + { "a\nb" => [ 'a', 'b' ] }, + { 'a"\\"b a\\"b' => [ 'a"b a"b' ] }, + { '"a""b" "a"b"' => [ 'a"b ab' ] }, + { '\\"a\\"' => [ '"a"' ] }, + { '"a"" "b"' => [ 'a"', 'b' ] }, + { 'a"b' => [ 'ab' ] }, + { 'a""b' => [ 'ab' ] }, + { 'a"""b' => [ 'a"b' ] }, + { 'a""""b' => [ 'a"b' ] }, + { 'a"""""b' => [ 'a"b' ] }, + { 'a""""""b' => [ 'a""b' ] }, + { '"a"b"' => [ 'ab' ] }, + { '"a""b"' => [ 'a"b' ] }, + { '"a"""b"' => [ 'a"b' ] }, + { '"a""""b"' => [ 'a"b' ] }, + { '"a"""""b"' => [ 'a""b' ] }, + { '"a""""""b"' => [ 'a""b' ] }, + { '' => [ ] }, + { ' ' => [ ] }, + { '""' => [ '' ] }, + { '" "' => [ ' ' ] }, + { '""a' => [ 'a' ] }, + { '""a b' => [ 'a', 'b' ] }, + { 'a""' => [ 'a' ] }, + { 'a"" b' => [ 'a', 'b' ] }, + { '"" a' => [ '', 'a' ] }, + { 'a ""' => [ 'a', '' ] }, + { 'a "" b' => [ 'a', '', 'b' ] }, + { 'a " " b' => [ 'a', ' ', 'b' ] }, + { 'a " b " c' => [ 'a', ' b ', 'c' ] }, +); + +if ($^O eq 'MSWin32') { + plan tests => 2 * @win_splits; + foreach my $test (@win_splits) { + do_split_tests($test); + } +} +else { + plan tests => 2 * @unix_splits; + foreach my $test (@unix_splits) { + do_split_tests($test); + } +} + +sub do_split_tests { + my ($test) = @_; + + my ($string, $expected) = %$test; + my @result = split_like_shell($string); + $string =~ s/\n/\\n/g; + is(grep( !defined(), @result ), 0, "\"$string\" result all defined"); + is_deeply(\@result, $expected) or + diag("split_like_shell error \n>$string< is not splitting as >" . join("|", @$expected) . '<'); +} |