summaryrefslogtreecommitdiff
path: root/ext/ExtUtils-MakeMaker/t/oneliner.t
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ExtUtils-MakeMaker/t/oneliner.t')
-rw-r--r--ext/ExtUtils-MakeMaker/t/oneliner.t45
1 files changed, 45 insertions, 0 deletions
diff --git a/ext/ExtUtils-MakeMaker/t/oneliner.t b/ext/ExtUtils-MakeMaker/t/oneliner.t
new file mode 100644
index 0000000000..b040872011
--- /dev/null
+++ b/ext/ExtUtils-MakeMaker/t/oneliner.t
@@ -0,0 +1,45 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+ unshift @INC, 't/lib';
+}
+
+chdir 't';
+
+use MakeMaker::Test::Utils;
+use Test::More tests => 6;
+use File::Spec;
+
+my $TB = Test::More->builder;
+
+BEGIN { use_ok('ExtUtils::MM') }
+
+my $mm = bless { NAME => "Foo" }, 'MM';
+isa_ok($mm, 'ExtUtils::MakeMaker');
+isa_ok($mm, 'ExtUtils::MM_Any');
+
+
+sub try_oneliner {
+ my($code, $switches, $expect, $name) = @_;
+ my $cmd = $mm->oneliner($code, $switches);
+ $cmd =~ s{\$\(ABSPERLRUN\)}{$^X};
+
+ # VMS likes to put newlines at the end of commands if there isn't
+ # one already.
+ $expect =~ s/([^\n])\z/$1\n/ if $^O eq 'VMS';
+
+ $TB->is_eq(scalar `$cmd`, $expect, $name) || $TB->diag("oneliner:\n$cmd");
+}
+
+# Lets see how it deals with quotes.
+try_oneliner(q{print "foo'o", ' bar"ar'}, [], q{foo'o bar"ar}, 'quotes');
+
+# How about dollar signs?
+try_oneliner(q{$PATH = 'foo'; print $PATH},[], q{foo}, 'dollar signs' );
+
+# switches?
+try_oneliner(q{print 'foo'}, ['-l'], "foo\n", 'switches' );
+
+# XXX gotta rethink the newline test. The Makefile does newline
+# escaping, then the shell.
+