| #!/usr/bin/perl -w |
| |
| use strict; |
| use lib 't/lib'; |
| |
| use TAP::Parser::Utils qw( split_shell ); |
| use Test::More; |
| |
| my @schedule = ( |
| { name => 'Bare words', |
| in => 'bare words are here', |
| out => [ 'bare', 'words', 'are', 'here' ], |
| }, |
| { name => 'Single quotes', |
| in => "'bare' 'words' 'are' 'here'", |
| out => [ 'bare', 'words', 'are', 'here' ], |
| }, |
| { name => 'Double quotes', |
| in => '"bare" "words" "are" "here"', |
| out => [ 'bare', 'words', 'are', 'here' ], |
| }, |
| { name => 'Escapes', |
| in => '\ "ba\"re" \'wo\\\'rds\' \\\\"are" "here"', |
| out => [ ' ', 'ba"re', "wo'rds", '\\are', 'here' ], |
| }, |
| { name => 'Flag', |
| in => '-e "system(shift)"', |
| out => [ '-e', 'system(shift)' ], |
| }, |
| { name => 'Nada', |
| in => undef, |
| out => [], |
| }, |
| { name => 'Nada II', |
| in => '', |
| out => [], |
| }, |
| { name => 'Zero', |
| in => 0, |
| out => ['0'], |
| }, |
| { name => 'Empty', |
| in => '""', |
| out => [''], |
| }, |
| { name => 'Empty II', |
| in => "''", |
| out => [''], |
| }, |
| ); |
| |
| plan tests => 1 * @schedule; |
| |
| for my $test (@schedule) { |
| my $name = $test->{name}; |
| my @got = split_shell( $test->{in} ); |
| unless ( is_deeply \@got, $test->{out}, "$name: parse OK" ) { |
| use Data::Dumper; |
| diag( Dumper( { want => $test->{out}, got => \@got } ) ); |
| } |
| } |