summaryrefslogtreecommitdiff
path: root/ext/ExtUtils-MakeMaker/t/prompt.t
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ExtUtils-MakeMaker/t/prompt.t')
-rw-r--r--ext/ExtUtils-MakeMaker/t/prompt.t50
1 files changed, 50 insertions, 0 deletions
diff --git a/ext/ExtUtils-MakeMaker/t/prompt.t b/ext/ExtUtils-MakeMaker/t/prompt.t
new file mode 100644
index 0000000000..d428aa835e
--- /dev/null
+++ b/ext/ExtUtils-MakeMaker/t/prompt.t
@@ -0,0 +1,50 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+ unshift @INC, 't/lib';
+}
+
+use strict;
+use Test::More tests => 11;
+use ExtUtils::MakeMaker;
+use TieOut;
+use TieIn;
+
+eval q{
+ prompt();
+};
+like( $@, qr/^Not enough arguments for ExtUtils::MakeMaker::prompt/,
+ 'no args' );
+
+eval {
+ prompt(undef);
+};
+like( $@, qr/^prompt function called without an argument/,
+ 'undef message' );
+
+my $stdout = tie *STDOUT, 'TieOut' or die;
+
+
+$ENV{PERL_MM_USE_DEFAULT} = 1;
+is( prompt("Foo?"), '', 'no default' );
+like( $stdout->read, qr/^Foo\?\s*\n$/, ' question' );
+
+is( prompt("Foo?", undef), '', 'undef default' );
+like( $stdout->read, qr/^Foo\?\s*\n$/, ' question' );
+
+is( prompt("Foo?", 'Bar!'), 'Bar!', 'default' );
+like( $stdout->read, qr/^Foo\? \[Bar!\]\s+Bar!\n$/, ' question' );
+
+
+SKIP: {
+ skip "eof() doesn't honor ties in 5.5.3", 3 if $] < 5.006;
+
+ $ENV{PERL_MM_USE_DEFAULT} = 0;
+ close STDIN;
+ my $stdin = tie *STDIN, 'TieIn' or die;
+ $stdin->write("From STDIN");
+ ok( !-t STDIN, 'STDIN not a tty' );
+
+ is( prompt("Foo?", 'Bar!'), 'From STDIN', 'from STDIN' );
+ like( $stdout->read, qr/^Foo\? \[Bar!\]\s*$/, ' question' );
+}