1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
From ec0b1fd3853df6cb577a99382cbcfd7ecc85d372 Mon Sep 17 00:00:00 2001
From: Kent Fredric <kentnl@gentoo.org>
Date: Wed, 28 Feb 2018 09:50:13 +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/624044
---
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 fe99e2f..1f87749 100644
--- a/test.pl
+++ b/test.pl
@@ -10,26 +10,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;
@@ -60,7 +43,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.15.1
|