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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
#!/bin/sh
# Test runner for old 'eval' test
# Copyright (C) 2017-2023 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
. "${srcdir=.}/testsuite/init.sh"; path_prepend_ ./sed
print_ver_ sed
cat << \EOF > eval-in || framework_failure_
17380: 2 2 5 11 79
abcd
cpu
abcd
cpu
EOF
# create a copy of the input file.
# Keep the name 'eval.in2' - it is used in the 'eval' commands in the
# sed program below.
cp eval-in eval.in2 || framework_failure_
# The sed program - containing multiple 'e' (eval) commands.
# NOTE: the program executes 'sed' using 'e' commands - and
# assumes GNU sed is in the $PATH (which is the case here).
cat << \EOF > eval.sed || framework_failure_
1d
#Try eval command
/cpu/!b2
esed 1q eval.in2
:2
p
i---
h
#Try eval option
s,.* *cpu *,sed 1q eval.in2; echo "&",e
:3
p
g
i---
h
#Try eval option with print
s,.* *cpu.*,sed 1q eval.in2,ep
g
:4
p
i---
$!d
#Do some more tests
s/.*/Doing some more tests -----------------------/p
s,.*,sed 1q eval.in2,ep
i---
s,.*,sed 1q eval.in2,pe
i---
s,.*,sed 1q eval.in2,
h
e
p
g
i---
s/^/echo /ep
i---
s/^fubar$/echo wozthis/e
EOF
# The expected output file
cat << \EOF > eval-exp || framework_failure_
abcd
---
abcd
---
abcd
---
17380: 2 2 5 11 79
cpu
---
17380: 2 2 5 11 79
cpu
---
17380: 2 2 5 11 79
cpu
---
abcd
---
abcd
---
abcd
---
17380: 2 2 5 11 79
cpu
---
17380: 2 2 5 11 79
cpu
---
17380: 2 2 5 11 79
cpu
---
Doing some more tests -----------------------
17380: 2 2 5 11 79
---
sed 1q eval.in2
---
17380: 2 2 5 11 79
---
sed 1q eval.in2
---
sed 1q eval.in2
EOF
sed -f eval.sed eval-in > eval-out || fail=1
remove_cr_inplace eval-out
compare eval-exp eval-out || fail=1
Exit $fail
|