Blob Blame History Raw
#!/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
  );

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) . '<');
}