Commit | Line | Data |
479d2113 |
1 | #!/usr/bin/perl -w |
2 | |
3 | BEGIN { |
b78fd716 |
4 | unshift @INC, 't/lib'; |
479d2113 |
5 | } |
6 | |
7 | chdir 't'; |
8 | |
9 | use MakeMaker::Test::Utils; |
10 | use Test::More tests => 6; |
11 | use File::Spec; |
12 | |
13 | my $TB = Test::More->builder; |
14 | |
15 | BEGIN { use_ok('ExtUtils::MM') } |
16 | |
17 | my $mm = bless { NAME => "Foo" }, 'MM'; |
18 | isa_ok($mm, 'ExtUtils::MakeMaker'); |
19 | isa_ok($mm, 'ExtUtils::MM_Any'); |
20 | |
21 | |
22 | sub try_oneliner { |
23 | my($code, $switches, $expect, $name) = @_; |
24 | my $cmd = $mm->oneliner($code, $switches); |
5dca256e |
25 | $cmd =~ s{\$\(ABSPERLRUN\)}{$^X}; |
479d2113 |
26 | |
27 | # VMS likes to put newlines at the end of commands if there isn't |
28 | # one already. |
29 | $expect =~ s/([^\n])\z/$1\n/ if $^O eq 'VMS'; |
30 | |
31 | $TB->is_eq(scalar `$cmd`, $expect, $name) || $TB->diag("oneliner:\n$cmd"); |
32 | } |
33 | |
34 | # Lets see how it deals with quotes. |
35 | try_oneliner(q{print "foo'o", ' bar"ar'}, [], q{foo'o bar"ar}, 'quotes'); |
36 | |
37 | # How about dollar signs? |
38 | try_oneliner(q{$PATH = 'foo'; print $PATH},[], q{foo}, 'dollar signs' ); |
39 | |
40 | # switches? |
41 | try_oneliner(q{print 'foo'}, ['-l'], "foo\n", 'switches' ); |
42 | |
43 | # XXX gotta rethink the newline test. The Makefile does newline |
44 | # escaping, then the shell. |
45 | |