You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.4 KiB
79 lines
2.4 KiB
7 years ago
|
From 93b819a6723f096a2157325f437e1ae0c72a0a2c Mon Sep 17 00:00:00 2001
|
||
|
From: Kent Fredric <kentnl@gentoo.org>
|
||
|
Date: Wed, 14 Mar 2018 19:38:19 +1300
|
||
|
Subject: Use file for input data instead of STDIN ( non-interactive testing )
|
||
|
|
||
|
test.pl as-is is useless because it executes no readline code when in
|
||
|
automated testing conditions.
|
||
|
|
||
|
Additionally, attempting to use the built-in file redirection
|
||
|
mechanisms is useless, as there's no way to set those parts from
|
||
|
|
||
|
make test
|
||
|
|
||
|
And 'preput' support causes readline to barf when the input stream
|
||
|
is not a real TTY.
|
||
|
|
||
|
Subsequently, the pre-inserted "exit" also has to be removed.
|
||
|
|
||
|
Bug: https://bugs.gentoo.org/492212
|
||
|
---
|
||
|
t/input.txt | 2 ++
|
||
|
test.pl | 23 +++--------------------
|
||
|
2 files changed, 5 insertions(+), 20 deletions(-)
|
||
|
create mode 100644 t/input.txt
|
||
|
|
||
|
diff --git a/t/input.txt b/t/input.txt
|
||
|
new file mode 100644
|
||
|
index 0000000..6077553
|
||
|
--- /dev/null
|
||
|
+++ b/t/input.txt
|
||
|
@@ -0,0 +1,2 @@
|
||
|
+printf "input ok: sqrt(42)^2 == %20.20f", sqrt(42) * sqrt(42);
|
||
|
+exit 0
|
||
|
diff --git a/test.pl b/test.pl
|
||
|
index 7fcda2a..b2f7847 100755
|
||
|
--- a/test.pl
|
||
|
+++ b/test.pl
|
||
|
@@ -9,26 +9,9 @@ use Term::ReadLine;
|
||
|
use Carp;
|
||
|
$SIG{__WARN__} = sub { warn Carp::longmess(@_) };
|
||
|
|
||
|
-my $ev;
|
||
|
-if ($ENV{$ev = 'AUTOMATED_TESTING'} or $ENV{$ev = 'PERL_MM_NONINTERACTIVE'}) {
|
||
|
- print "1..0 # skip: \$ENV{$ev} is TRUE\n";
|
||
|
- exit;
|
||
|
-}
|
||
|
+open (IN, '<','./t/input.txt') or die "Can't open input.txt, $@, $!";
|
||
|
+$term = Term::ReadLine->new('Simple Perl calc', \*IN, \*STDOUT);
|
||
|
|
||
|
-if (!@ARGV) {
|
||
|
- $term = new Term::ReadLine 'Simple Perl calc';
|
||
|
-} elsif (@ARGV == 2) {
|
||
|
- open(IN,"<$ARGV[0]");
|
||
|
- open(OUT,">$ARGV[1]");
|
||
|
- $term = new Term::ReadLine 'Simple Perl calc', \*IN, \*OUT;
|
||
|
-} elsif ($ARGV[0] =~ m|^/dev|) {
|
||
|
- open(IN,"<$ARGV[0]");
|
||
|
- open(OUT,">$ARGV[0]");
|
||
|
- $term = new Term::ReadLine 'Simple Perl calc', \*IN, \*OUT;
|
||
|
-} else {
|
||
|
- $term = new Term::ReadLine 'Simple Perl calc', \*STDIN, \*STDOUT;
|
||
|
- $no_print = $ARGV[0] eq '--no-print';
|
||
|
-}
|
||
|
$prompt = "Enter arithmetic or Perl expression: ";
|
||
|
if ((my $l = $ENV{PERL_RL_TEST_PROMPT_MINLEN} | 0) > length $prompt) {
|
||
|
$prompt =~ s/(?=:)/ ' ' x ($l - length $prompt)/e;
|
||
|
@@ -51,7 +34,7 @@ print $OUT <<EOP;
|
||
|
this word should be already entered.)
|
||
|
|
||
|
EOP
|
||
|
-while ( defined ($_ = $term->readline($prompt, "exit")) ) {
|
||
|
+while ( defined ($_ = $term->readline($prompt)) ) {
|
||
|
$res = eval($_);
|
||
|
warn $@ if $@;
|
||
|
print $OUT $res, "\n" unless $@ or $no_print;
|
||
|
--
|
||
|
2.16.2
|
||
|
|