Migrate most of tools/regression/usr.bin/ to the new tests layout.

I'm starting with the easy cases.  The leftovers need to be looked at a
bit more closely.

Note that this change _does_ modify the code of the old tests.  This is
required in order to allow the code to locate the data files in the
source directory instead of the current directory, because Kyua
automatically changes the latter to a temporary directory.

Also note that at least one test is known to be broken here.  Actually,
the test is not really broken: it's marked as a TODO but unfortunately
Kyua's TAP parser currently does not understand that.  Will have to be
fixed separately.
This commit is contained in:
Julio Merino
2014-03-16 08:04:06 +00:00
parent d14afb2adc
commit 3a92d97ff0
587 changed files with 1048 additions and 350 deletions
+6
View File
@@ -1,9 +1,15 @@
# @(#)Makefile 8.1 (Berkeley) 6/6/93
# $FreeBSD$
.include <bsd.own.mk>
PROG= sed
SRCS= compile.c main.c misc.c process.c
WARNS?= 2
.if ${MK_TESTS} != "no"
SUBDIR+= tests
.endif
.include <bsd.prog.mk>
+38
View File
@@ -0,0 +1,38 @@
# $FreeBSD$
TESTSDIR= ${TESTSBASE}/usr.bin/sed
TAP_TESTS_SH= legacy_test
TAP_TESTS_SH+= multi_test
TAP_TESTS_SH+= inplace_race_test
FILESDIR= ${TESTSDIR}
FILES= hanoi.sed
FILES+= math.sed
FILES+= regress.G.out
FILES+= regress.P.out
FILES+= regress.b2a.out
FILES+= regress.bcb.out
FILES+= regress.c0.out
FILES+= regress.c1.out
FILES+= regress.c2.out
FILES+= regress.c3.out
FILES+= regress.hanoi.out
FILES+= regress.icase1.out
FILES+= regress.icase2.out
FILES+= regress.icase3.out
FILES+= regress.icase4.out
FILES+= regress.in
FILES+= regress.math.out
FILES+= regress.not.out
FILES+= regress.psl.out
FILES+= regress.s3.out
FILES+= regress.s4.out
FILES+= regress.s5.out
FILES+= regress.sg.out
FILES+= regress.sh
FILES+= regress.y.out
SUBDIR= regress.multitest.out
.include <bsd.test.mk>
+103
View File
@@ -0,0 +1,103 @@
# Towers of Hanoi in sed.
#
# @(#)hanoi.sed 8.1 (Berkeley) 6/6/93
# $FreeBSD$
#
#
# Ex:
# Run "sed -f hanoi.sed", and enter:
#
# :abcd: : :<CR>
#
# note -- TWO carriage returns were once required, this will output the
# sequence of states involved in moving 4 rings, the largest called "a" and
# the smallest called "d", from the first to the second of three towers, so
# that the rings on any tower at any time are in descending order of size.
# You can start with a different arrangement and a different number of rings,
# say :ce:b:ax: and it will give the shortest procedure for moving them all
# to the middle tower. The rules are: the names of the rings must all be
# lower-case letters, they must be input within 3 fields (representing the
# towers) and delimited by 4 colons, such that the letters within each field
# are in alphabetical order (i.e. rings are in descending order of size).
#
# For the benefit of anyone who wants to figure out the script, an "internal"
# line of the form
# b:0abx:1a2b3 :2 :3x2
# has the following meaning: the material after the three markers :1, :2,
# and :3 represents the three towers; in this case the current set-up is
# ":ab : :x :". The numbers after a, b and x in these fields indicate
# that the next time it gets a chance, it will move a to tower 2, move b
# to tower 3, and move x to tower 2. The string after :0 just keeps track
# of the alphabetical order of the names of the rings. The b at the
# beginning means that it is now dealing with ring b (either about to move
# it, or re-evaluating where it should next be moved to).
#
# Although this version is "limited" to 26 rings because of the size of the
# alphabet, one could write a script using the same idea in which the rings
# were represented by arbitrary [strings][within][brackets], and in place of
# the built-in line of the script giving the order of the letters of the
# alphabet, it would accept from the user a line giving the ordering to be
# assumed, e.g. [ucbvax][decvax][hplabs][foo][bar].
#
# George Bergman
# Math, UC Berkeley 94720 USA
# cleaning, diagnostics
s/ *//g
/^$/d
/[^a-z:]/{a\
Illegal characters: use only a-z and ":". Try again.
d
}
/^:[a-z]*:[a-z]*:[a-z]*:$/!{a\
Incorrect format: use\
\ : string1 : string2 : string3 :<CR>\
Try again.
d
}
/\([a-z]\).*\1/{a\
Repeated letters not allowed. Try again.
d
}
# initial formatting
h
s/[a-z]/ /g
G
s/^:\( *\):\( *\):\( *\):\n:\([a-z]*\):\([a-z]*\):\([a-z]*\):$/:1\4\2\3:2\5\1\3:3\6\1\2:0/
s/[a-z]/&2/g
s/^/abcdefghijklmnopqrstuvwxyz/
:a
s/^\(.\).*\1.*/&\1/
s/.//
/^[^:]/ba
s/\([^0]*\)\(:0.*\)/\2\1:/
s/^[^0]*0\(.\)/\1&/
:b
# outputting current state without markers
h
s/.*:1/:/
s/[123]//gp
g
:c
# establishing destinations
/^\(.\).*\1:1/td
/^\(.\).*:1[^:]*\11/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\31/
/^\(.\).*:1[^:]*\12/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\33/
/^\(.\).*:1[^:]*\13/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\32/
/^\(.\).*:2[^:]*\11/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\33/
/^\(.\).*:2[^:]*\12/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\32/
/^\(.\).*:2[^:]*\13/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\31/
/^\(.\).*:3[^:]*\11/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\32/
/^\(.\).*:3[^:]*\12/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\31/
/^\(.\).*:3[^:]*\13/s/^\(.\)\(.*\1\([a-z]\).*\)\3./\3\2\33/
bc
# iterate back to find smallest out-of-place ring
:d
s/^\(.\)\(:0[^:]*\([^:]\)\1.*:\([123]\)[^:]*\1\)\4/\3\2\4/
td
# move said ring (right, resp. left)
s/^\(.\)\(.*\)\1\([23]\)\(.*:\3[^ ]*\) /\1\2 \4\1\3/
s/^\(.\)\(.*:\([12]\)[^ ]*\) \(.*\)\1\3/\1\2\1\3\4 /
tb
s/.*/Done! Try another, or end with ^D./p
d
+79
View File
@@ -0,0 +1,79 @@
#!/bin/sh
#-
# Copyright (c) 2011 Jilles Tjoelker
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
: "${SED=sed}"
# This test really needs an SMP system. On an UP system, it will
# usually pass even if the race condition exists.
if command -v cpuset >/dev/null; then
case `cpuset -g -p $$` in
*,*) ;;
*)
echo '1..0 # Skipped: not an SMP system'
exit 0 ;;
esac
fi
echo "1..1"
data=abababab
data=$data$data$data$data
data=$data$data$data$data
data=$data$data$data$data
data=$data$data$data$data
data="BEGIN
$data
END"
for i in 0 1 2 3 4 5 6 7 8 9; do
echo "$data" >file$i
done
len=${#data}
i=0
while [ $i -lt 100 ]; do
${SED} -i.prev "s/$i/ab/" file[0-9]
i=$((i+1))
done &
sedproc=$!
while :; do
set -- file[0-9]
if [ $# -ne 10 ]; then
echo "not ok 1 inplace_race"
exit 3
fi
done &
checkproc=$!
wait $sedproc
kill $checkproc 2>/dev/null
wait $checkproc >/dev/null 2>&1
if [ $? -ne 3 ]; then
echo "ok 1 inplace_race"
fi
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
# $FreeBSD$
SRCDIR="$(dirname "${0}")"; export SRCDIR
m4 "${SRCDIR}/../regress.m4" "${SRCDIR}/regress.sh" | sh
+439
View File
@@ -0,0 +1,439 @@
# This is ksb's infamous sed calculator. (ksb@sa.fedex.com)
#
# $FreeBSD$
#
# $Id: math.sed,v 2.5 1998/08/02 13:23:34 ksb Exp ksb $
# expr ::= (expr) | expr! |
# expr ^ expr |
# -expr | expr * expr | expr / expr | expr % expr |
# expr + expr | expr - expr |
# [0-9][0-9]* ;
# Bugs: some sign combinations don't work, and I got sick of added cases
# for unary +. Don't depend on signed math working all the time. -- ksb
#
# $Compile: echo "4+7*3+2^7/3" | sed -f %f
# make sure the expression is well formed
s/[ ]//g
/[*\/^%+-]$/{
a\
poorly formed expression, dyadic operator on the end
q
}
/^[*\/^%]/{
a\
poorly formed expression, leading dyadic operator
q
}
# fill hold space with done token
x
s/^.*/done/
x
# main loop, process operators ((), !, *, /, %, +, and -)
: loop
# uncomment the print below to follow the "logic" -- ksb
#p
/^[+]/{
s///
b loop
}
/^--/{
s///
b loop
}
# eval parenthesised sub expressions first
/^\(.*\)(\([^)]*\))\(.*\)$/{
H
s//\2/
x
s/^\(.*\)\n\(.*\)(\([^()]*\))\(.*\)$/()\2@\4@\1/
x
b loop
}
# reduce a^b^c -> a^(b^c)
/\([0-9][0-9]*^\)\([0-9][0-9]*^[0-9][0-9^]*\)/{
s//\1(\2)/
b loop
}
# pull any buried exponents
/^\(.*[^0-9]\)\([0-9][0-9]*^[0-9][0-9]*\)$/{
s//\1(\2)/
b loop
}
/^\(.*[^0-9]\)\([0-9][0-9]*^[0-9][0-9]*\)\([^0-9].*\)$/{
s//\1(\2)\3/
b loop
}
/^\([0-9][0-9]*^[0-9][0-9]*\)\([^0-9].*\)$/{
s//(\1)\2/
b loop
}
/^\([-]*[0-9]*\)^0*$/{
s//1/
b loop
}
/^\([-]*[0-9]*\)^0*1$/{
s//\1/
b loop
}
/^\([-]*[0-9]*\)^-[0-9]*$/{
s//0/
b loop
}
/^\([-]*\)\([0-9]*\)^\([0-9][0-9]*[13579]\)$/{
s//\1\2*((\2*\2)^(\3\/2))/
b loop
}
/^[-]*\([0-9]*\)^\([0-9][0-9]*[02468]\)$/{
s//(\1*\1)^(\2\/2)/
b loop
}
# single digit powers (2 3,9 4,6,8 5,7
/^[-]*\([0-9]*\)^0*2$/{
s//(\1*\1)/
b loop
}
/^\([-]*\)\([0-9]*\)^0*\([39]\)$/{
s//\1(\2*(\2*\2))^(\3\/3)/
b loop
}
/^[-]*\([0-9]*\)^0*\([468]\)$/{
s//(\1*\1)^(\2\/2)/
b loop
}
# 5 7
/^\([-]*[0-9]*\)^\([0-9]*\)$/{
s//\1*(\1^(\2-1))/
b loop
}
# reduce all number factorials
/^0*[01]!/{
s//1/
b loop
}
/\([*+-/%^]\))0*[01]!/{
s//\11/
b loop
}
/\([0-9]*\)!/{
s//(\1-1)!*\11/
b loop
}
# sign simplifications
/^-\([0-9]*\)\([*/%]\)-\([0-9]*\)$/{
s//\1\2\3/
b loop
}
/^\([0-9]*\)\([*/%]\)-\([0-9]*\)$/{
s//-\1\2\3/
b loop
}
/^-\([0-9][0-9]*\)[+]*-\([0-9][0-9]*\)$/{
s//\1+\2/
x
s/\(.*\)/()-@@\1/
x
b loop
}
/^-\([0-9]*\)[+]\([0-9]\)*$/{
s//\2-\1/
b loop
}
/^-.*[-+*/%].*/{
H
s/^-//
x
s/^\(.*\)\n-.*$/()-@@\1/
x
b loop
}
# can we simplify multiplications
/^\([0-9]*\)\([*][0-9]*[1-9]\))00*$/{
H
s//\1\2/
x
s/^\(.*\)\n[0-9]*[*][0-9]*[1-9]\(00*\)$/()@\22@\1/
x
b loop
}
/^\([0-9][1-9]*\)00*\([*][0-9]*\)$/{
H
s//\1\2/
x
s/^\(.*\)\n[0-9][1-9]*\(00*\)[*][0-9]*$/()@\2@\1/
x
b loop
}
# can we simplify division (20/30 -> 2/3)
/^\([0-9][0-9]*\)0\([/%]\))\([0-9][0-9]*\)0$/{
s//\1\2\3/
b loop
}
# n/1 -> n
/^0*\([0-9][0-9]*\)0[/]0*1$/{
s//\1/
b loop
}
# n%2 -> last_digit(n)%2 (same for 1, BTW) N.B. NO LOOP
/^[0-9]*\([0-9]\)%0*\([12]\)$/{
s//\1%\2/
}
# move any mul/divs to the front via parans
/^\([0-9+]*\)\([-+]\)\([0-9]*[*/][0-9*/]*\)/{
s//\1\2(\3)/
b loop
}
# can we div or mul
/^[0-9]*[*][0-9]*$/{
b mul
}
/^[0-9]*[/%]0*$/{
i\
divide by zero
d
}
/^[0-9]*[/%][0-9]*$/{
H
s/\([0-9]\).*[/%]/\11-/
x
s/^\(.*\)\n\([0-9]\)\([0-9]*\)\([/%]\)\([0-9]*\).*$/.\4\3q0r\2-\5@\1/
x
b loop
}
/^\([0-9]*[*/%][0-9]*\)\(.*\)/{
H
s//\1/
x
s/^\(.*\)\n\([0-9]*[*/][0-9]*\)\(.*\)$/()@\3@\1/
x
b loop
}
# can we add or subtract -- note subtract hold expression for underflow
/^[0-9]*[+][0-9]*$/{
s/$/=/
b add
}
/^[0-9][0-9]*-[0-9]*$/{
H
s/$/=/
b sub
}
/^\([0-9][0-9]*[-+][0-9]*\)\(.*\)/{
H
s//\1/
x
s/^\(.*\)\n\([0-9]*[-+][0-9]*\)\(.*\)$/()@\3@\1/
x
b loop
}
# look in hold space for stack to reduce
x
/^done$/{
x
s/^0*\([0-9][0-9]*\)/\1/
p
d
}
# .[/%] numerator q quotient r remainder-divisor @stack
/^\./{
x
/^[^-]/{
H
x
s/.\(.\)\([0-9]*\)q\([^r]*\)r\([0-9]*\)-\([0-9]*\)@\(.*\)\n\(.*\)/.\1\2q\3+1r\7-\5@\6/
h
s/..[0-9]*q[^r]*r\([0-9]*-[0-9]*\)@.*/\1/
b loop
}
/^-/{
g
/.\(.\)\([0-9]\)\([0-9]*\)q\([^r]*\)r0*\([0-9]*\)-\([^@]*\)@.*/{
s//\5\2-\6/
x
s/.\(.\)\([0-9]\)\([0-9]*\)q\([^r]*\)r0*\([0-9]*\)-\([0-9]*\)@\(.*\)/.\1\3q(\4)*10r\5\2-\6@\7/
x
b loop
}
# no digits to shift on
s/^\.[/]q\([^r]*\)r[^@]*@.*/\11/
s/^\.[%]q[^r]*r0*\([0-9][0-9]*\)-[^@]*@.*/\1/
/^\./{
i\
divide error
q
}
x
s/^\.[/%]q[^r]*r[^@]*@\(.*\)/\1/
x
b loop
}
}
/^()/{
s///
x
G
s/\(.*\)\n\([^@]*\)@\([^@]*\)@\(.*\)/\2\1\3/
x
s/[^@]*@[^@]*@\(.*\)/\1/
x
b loop
}
i\
help, stack problem - the hold space
p
x
i\
and the pat space
p
i\
quit
q
# turn mul into add until 1*x -> x, 0*x -> 0
: mul
/^00*\*.*/{
s//0/
b loop
}
/^0*1\*/{
s///
: leading
s/^0*\([0-9][0-9]*\)/\1/
b loop
}
s/^\([0-9]*\)0\*\([0-9]*\)/\1*\20/
s/^\([0-9]*\)1\*\([0-9]*\)/\1*\20+\2/
s/^\([0-9]*\)2\*\([0-9]*\)/\1*\20+(\2+\2)/
s/^\([0-9]*\)3\*\([0-9]*\)/\1*\20+(\2+\2+\2)/
s/^\([0-9]*\)4\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2)/
s/^\([0-9]*\)5\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2)/
s/^\([0-9]*\)6\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2+\2)/
s/^\([0-9]*\)7\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2+\2+\2)/
s/^\([0-9]*\)8\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2+\2+\2+\2)/
s/^\([0-9]*\)9\*\([0-9]*\)/\1*\20+(\2+\2+\2+\2+\2+\2+\2+\2+\2)/
/^0*\*[0-9]*[+]*\(.*\)/{
s//\1/
b loop
}
b mul
# get rid of a plus term until 0+x -> x
: add
/^[+]\([0-9+*]*\)=/{
s//\1/
b leading
}
/^\([0-9*]*\)[+]=/{
s//\1/
b loop
}
/^\([0-9]*\)0[+]\([0-9]*\)\([0-9]\)=/{
s//\1+\2=\3/
b add
}
/^\([0-9]*\)\([0-9]\)[+]\([0-9]*\)0=/{
s//\1+\3=\2/
b add
}
s/^\([0-9]*\)1[+]/\10+/
s/^\([0-9]*\)2[+]/\11+/
s/^\([0-9]*\)3[+]/\12+/
s/^\([0-9]*\)4[+]/\13+/
s/^\([0-9]*\)5[+]/\14+/
s/^\([0-9]*\)6[+]/\15+/
s/^\([0-9]*\)7[+]/\16+/
s/^\([0-9]*\)8[+]/\17+/
s/^\([0-9]*\)9[+]/\18+/
s/9=\([0-9]*\)$/_=\1/
s/8=\([0-9]*\)$/9=\1/
s/7=\([0-9]*\)$/8=\1/
s/6=\([0-9]*\)$/7=\1/
s/5=\([0-9]*\)$/6=\1/
s/4=\([0-9]*\)$/5=\1/
s/3=\([0-9]*\)$/4=\1/
s/2=\([0-9]*\)$/3=\1/
s/1=\([0-9]*\)$/2=\1/
/_/{
s//_0/
: inc
s/9_/_0/
s/8_/9/
s/7_/8/
s/6_/7/
s/5_/6/
s/4_/5/
s/3_/4/
s/2_/3/
s/1_/2/
s/0_/1/
s/[+]_/+1/
/_/b inc
}
b add
# get rid of a sub term until /-0*=/ or underflow
: sub
/^\([0-9]*\)-0*=/{
s//\1/
x
s/\(.*\)\n.*$/\1/
x
b leading
}
/^-\([0-9].*\)=/{
: under
g
s/.*\n\([0-9]*\)-\([0-9]*\).*/-(\2-\1)/
x
s/\(.*\)\n.*/\1/
x
b loop
}
/^\([0-9]*\)\([0-9]\)-\([0-9]*\)0=/{
s//\1-\3=\2/
b sub
}
s/1=/0=/
s/2=/1=/
s/3=/2=/
s/4=/3=/
s/5=/4=/
s/6=/5=/
s/7=/6=/
s/8=/7=/
s/9=/8=/
s/^\([0-9]*\)1-/\1_-/
s/^\([0-9]*\)2-/\11-/
s/^\([0-9]*\)3-/\12-/
s/^\([0-9]*\)4-/\13-/
s/^\([0-9]*\)5-/\14-/
s/^\([0-9]*\)6-/\15-/
s/^\([0-9]*\)7-/\16-/
s/^\([0-9]*\)8-/\17-/
s/^\([0-9]*\)9-/\18-/
s/^\([0-9]*\)0-/\1'9-/
s/_/0/
: scarry
/0'/{
s//'9/
b scarry
}
/^'/{
b under
}
s/1'/0/
s/2'/1/
s/3'/2/
s/4'/3/
s/5'/4/
s/6'/5/
s/7'/6/
s/8'/7/
s/9'/8/
b sub
+494
View File
@@ -0,0 +1,494 @@
#!/bin/sh -
#
# Copyright (c) 1992 Diomidis Spinellis.
# Copyright (c) 1992, 1993
# The Regents of the University of California. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 4. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# @(#)sed.test 8.1 (Berkeley) 6/6/93
#
# $FreeBSD$
#
# sed Regression Tests
#
# The directory regress.test.out contains the expected test results
#
# These are the regression tests mostly created during the development
# of the BSD sed. Each test should have a unique mark name, which is
# used for naming the corresponding file in regress.multitest.out.
SRCDIR=$(dirname $0)
main()
{
REGRESS=${SRCDIR}/regress.multitest.out
DICT=/usr/share/dict/words
awk 'END { for (i = 1; i < 15; i++) print "l1_" i}' </dev/null >lines1
awk 'END { for (i = 1; i < 10; i++) print "l2_" i}' </dev/null >lines2
echo "1..129"
exec 4>&1 5>&2
tests
exec 1>&4 2>&5
# Remove temporary files
rm -f current.out lines[1-4] script[1-2]
}
tests()
{
SED=sed
MARK=0
test_args
test_addr
test_group
test_acid
test_branch
test_pattern
test_print
test_subst
test_error
# Handle the result of the last test
result
}
# Display a test's result
result()
{
if [ "$TODO" = '1' ] ; then
TODO='TODO '
else
TODO=''
fi
if ! [ -r $REGRESS/${TESTNAME} ] ; then
echo "Seeding $REGRESS/${TESTNAME} with current result" 1>&2
cp current.out $REGRESS/${TESTNAME}
fi
if diff -c $REGRESS/${TESTNAME} current.out ; then
echo "ok $MARK $TESTNAME # $TODO$COMMENT"
else
echo "not ok $MARK $TESTNAME # $TODO$COMMENT"
fi 1>&4 2>&5
}
# Mark the beginning of each test
mark()
{
[ $MARK -gt 0 ] && result
MARK=`expr $MARK + 1`
TESTNAME=$1
exec 1>&4 2>&5
exec >"current.out"
}
test_args()
{
COMMENT='Argument parsing - first type'
mark '1.1'
$SED 's/^/e1_/p' lines1
mark '1.2' ; $SED -n 's/^/e1_/p' lines1
mark '1.3'
$SED 's/^/e1_/p' <lines1
mark '1.4' ; $SED -n 's/^/e1_/p' <lines1
COMMENT='Argument parsing - second type'
mark '1.4.1'
$SED -e '' <lines1
echo 's/^/s1_/p' >script1
echo 's/^/s2_/p' >script2
mark '1.5'
$SED -f script1 lines1
mark '1.6'
$SED -f script1 <lines1
mark '1.7'
$SED -e 's/^/e1_/p' lines1
mark '1.8'
$SED -e 's/^/e1_/p' <lines1
mark '1.9' ; $SED -n -f script1 lines1
mark '1.10' ; $SED -n -f script1 <lines1
mark '1.11' ; $SED -n -e 's/^/e1_/p' lines1
mark '1.12'
$SED -n -e 's/^/e1_/p' <lines1
mark '1.13'
$SED -e 's/^/e1_/p' -e 's/^/e2_/p' lines1
mark '1.14'
$SED -f script1 -f script2 lines1
mark '1.15'
$SED -e 's/^/e1_/p' -f script1 lines1
mark '1.16'
$SED -e 's/^/e1_/p' lines1 lines1
# POSIX D11.2:11251
mark '1.17' ; $SED p <lines1 lines1
cat >script1 <<EOF
#n
# A comment
p
EOF
mark '1.18' ; $SED -f script1 <lines1 lines1
}
test_addr()
{
COMMENT='Address ranges'
mark '2.1' ; $SED -n -e '4p' lines1
mark '2.2' ; $SED -n -e '20p' lines1 lines2
mark '2.3' ; $SED -n -e '$p' lines1
mark '2.4' ; $SED -n -e '$p' lines1 lines2
mark '2.5' ; $SED -n -e '$a\
hello' /dev/null
mark '2.6' ; $SED -n -e '$p' lines1 /dev/null lines2
# Should not print anything
mark '2.7' ; $SED -n -e '20p' lines1
mark '2.8' ; $SED -n -e '/NOTFOUND/p' lines1
mark '2.9' ; $SED -n '/l1_7/p' lines1
mark '2.10' ; $SED -n ' /l1_7/ p' lines1
mark '2.11' ; $SED -n '\_l1\_7_p' lines1
mark '2.12' ; $SED -n '1,4p' lines1
mark '2.13' ; $SED -n '1,$p' lines1 lines2
mark '2.14' ; $SED -n '1,/l2_9/p' lines1 lines2
mark '2.15' ; $SED -n '/4/,$p' lines1 lines2
mark '2.16' ; $SED -n '/4/,20p' lines1 lines2
mark '2.17' ; $SED -n '/4/,/10/p' lines1 lines2
mark '2.18' ; $SED -n '/l2_3/,/l1_8/p' lines1 lines2
mark '2.19' ; $SED -n '12,3p' lines1 lines2
mark '2.20' ; $SED -n '/l1_7/,3p' lines1 lines2
mark '2.21' ; $SED -n '13,+4p' lines1 lines2
mark '2.22' ; $SED -n '/l1_6/,+2p' lines1 lines2
}
test_group()
{
COMMENT='Brace and other grouping'
mark '3.1' ; $SED -e '
4,12 {
s/^/^/
s/$/$/
s/_/T/
}' lines1
mark '3.2' ; $SED -e '
4,12 {
s/^/^/
/6/,/10/ {
s/$/$/
/8/ s/_/T/
}
}' lines1
mark '3.3' ; $SED -e '
4,12 !{
s/^/^/
/6/,/10/ !{
s/$/$/
/8/ !s/_/T/
}
}' lines1
mark '3.4' ; $SED -e '4,12!s/^/^/' lines1
}
test_acid()
{
COMMENT='Commands a c d and i'
mark '4.1' ; $SED -n -e '
s/^/before_i/p
20i\
inserted
s/^/after_i/p
' lines1 lines2
mark '4.2' ; $SED -n -e '
5,12s/^/5-12/
s/^/before_a/p
/5-12/a\
appended
s/^/after_a/p
' lines1 lines2
mark '4.3'
$SED -n -e '
s/^/^/p
/l1_/a\
appended
8,10N
s/$/$/p
' lines1 lines2
mark '4.4' ; $SED -n -e '
c\
hello
' lines1
mark '4.5' ; $SED -n -e '
8c\
hello
' lines1
mark '4.6' ; $SED -n -e '
3,14c\
hello
' lines1
# SunOS and GNU sed behave differently. We follow POSIX
mark '4.7' ; $SED -n -e '
8,3c\
hello
' lines1
mark '4.8' ; $SED d <lines1
}
test_branch()
{
COMMENT='Labels and branching'
mark '5.1' ; $SED -n -e '
b label4
:label3
s/^/label3_/p
b end
:label4
2,12b label1
b label2
:label1
s/^/label1_/p
b
:label2
s/^/label2_/p
b label3
:end
' lines1
mark '5.2'
$SED -n -e '
s/l1_/l2_/
t ok
b
:ok
s/^/tested /p
' lines1 lines2
# SunOS and GNU sed behave as follows: lines 9-$ aren't printed at all
mark '5.3' ; $SED -n -e '
5,8b inside
1,5 {
s/^/^/p
:inside
s/$/$/p
}
' lines1
# Check that t clears the substitution done flag
mark '5.4' ; $SED -n -e '
1,8s/^/^/
t l1
:l1
t l2
s/$/$/p
b
:l2
s/^/ERROR/
' lines1
# Check that reading a line clears the substitution done flag
mark '5.5'
$SED -n -e '
t l2
1,8s/^/^/p
2,7N
b
:l2
s/^/ERROR/p
' lines1
mark '5.6' ; $SED 5q lines1
mark '5.7' ; $SED -e '
5i\
hello
5q' lines1
# Branch across block boundary
mark '5.8' ; $SED -e '
{
:b
}
s/l/m/
tb' lines1
}
test_pattern()
{
COMMENT='Pattern space commands'
# Check that the pattern space is deleted
mark '6.1' ; $SED -n -e '
c\
changed
p
' lines1
mark '6.2' ; $SED -n -e '
4d
p
' lines1
mark '6.3'
$SED -e 'N;N;N;D' lines1
mark '6.4' ; $SED -e '
2h
3H
4g
5G
6x
6p
6x
6p
' lines1
mark '6.5' ; $SED -e '4n' lines1
mark '6.6' ; $SED -n -e '4n' lines1
}
test_print()
{
COMMENT='Print and file routines'
awk 'END {for (i = 1; i < 256; i++) printf("%c", i);print "\n"}' \
</dev/null >lines3
# GNU and SunOS sed behave differently here
mark '7.1'
$SED -n l lines3
mark '7.2' ; $SED -e '/l2_/=' lines1 lines2
rm -f lines4
mark '7.3' ; $SED -e '3,12w lines4' lines1
COMMENT='w results'
cat lines4
mark '7.4' ; $SED -e '4r lines2' lines1
mark '7.5' ; $SED -e '5r /dev/dds' lines1
mark '7.6' ; $SED -e '6r /dev/null' lines1
mark '7.7'
sed '200q' $DICT | sed 's$.*$s/^/&/w tmpdir/&$' >script1
rm -rf tmpdir
mkdir tmpdir
$SED -f script1 lines1
cat tmpdir/*
rm -rf tmpdir
mark '7.8'
echo line1 > lines3
echo "" >> lines3
TODO=1
$SED -n -e '$p' lines3 /dev/null
}
test_subst()
{
COMMENT='Substitution commands'
mark '8.1' ; $SED -e 's/./X/g' lines1
mark '8.2' ; $SED -e 's,.,X,g' lines1
# SunOS sed thinks we are escaping . as wildcard, not as separator
mark '8.3'
$SED -e 's.\..X.g' lines1
mark '8.4' ; $SED -e 's/[\/]/Q/' lines1
mark '8.5' ; $SED -e 's_\__X_' lines1
mark '8.6' ; $SED -e 's/./(&)/g' lines1
mark '8.7' ; $SED -e 's/./(\&)/g' lines1
mark '8.8' ; $SED -e 's/\(.\)\(.\)\(.\)/x\3x\2x\1/g' lines1
mark '8.9' ; $SED -e 's/_/u0\
u1\
u2/g' lines1
mark '8.10'
$SED -e 's/./X/4' lines1
rm -f lines4
mark '8.11' ; $SED -e 's/1/X/w lines4' lines1
COMMENT='s wfile results'
cat lines4
mark '8.12' ; $SED -e 's/[123]/X/g' lines1
mark '8.13' ; $SED -e 'y/0123456789/9876543210/' lines1
mark '8.14' ;
$SED -e 'y10\123456789198765432\101' lines1
mark '8.15' ; $SED -e '1N;2y/\n/X/' lines1
mark '8.16'
echo 'eeefff' | $SED -e '
p
s/e/X/p
:x
s//Y/p
# Establish limit counter in the hold space
# GNU sed version 3.02 enters into an infinite loop here
x
/.\{10\}/ {
s/.*/ERROR/
b
}
s/.*/&./
x
/f/bx
'
# POSIX does not say that this should work,
# but it does for GNU, BSD, and SunOS
mark '8.17' ; $SED -e 's/[/]/Q/' lines1
COMMENT='[ as an s delimiter and its escapes'
mark '8.18' ; $SED -e 's[_[X[' lines1
# This is a matter of interpretation
# POSIX 1003.1, 2004 says "Within the BRE and the replacement,
# the BRE delimiter itself can be used as a *literal* character
# if it is preceded by a backslash"
# SunOS 5.1 /usr/bin/sed and Mac OS X follow the literal POSIX
# interpretation.
# GNU sed version 4.1.5 treats \[ as the beginning of a character
# set specification (both with --posix and without).
mark '8.19' ; sed 's/l/[/' lines1 | $SED -e 's[\[.[X['
mark '8.20' ; sed 's/l/[/' lines1 | $SED -e 's[\[.[X\[['
COMMENT='\ in y command'
mark '8.21'
echo 'a\b(c' |
$SED 'y%ABCDEFGHIJKLMNOPQRSTUVWXYZ, /\\()"%abcdefghijklmnopqrstuvwxyz,------%'
COMMENT='\n in a character class and a BRE'
mark '8.22' ; (echo 1; echo 2) | $SED -n '1{;N;s/[\n]/X/;p;}'
mark '8.23' ; (echo 1; echo 2) | $SED -n '1{;N;s/\n/X/;p;}'
}
test_error()
{
COMMENT='Error cases'
mark '9.1' ; $SED -x 2>/dev/null ; echo $?
mark '9.2' ; $SED -f 2>/dev/null ; echo $?
mark '9.3' ; $SED -e 2>/dev/null ; echo $?
mark '9.4' ; $SED -f /dev/xyzzyxyzy 2>/dev/null ; echo $?
mark '9.5' ; $SED p /dev/xyzzyxyzy 2>/dev/null ; echo $?
mark '9.6' ; $SED -f /bin/sh 2>/dev/null ; echo $?
mark '9.7' ; $SED '{' 2>/dev/null ; echo $?
mark '9.8' ; $SED '{' 2>/dev/null ; echo $?
mark '9.9' ; $SED '/hello/' 2>/dev/null ; echo $?
mark '9.10' ; $SED '1,/hello/' 2>/dev/null ; echo $?
mark '9.11' ; $SED -e '-5p' 2>/dev/null ; echo $?
mark '9.12' ; $SED '/jj' 2>/dev/null ; echo $?
mark '9.13' ; $SED 'a hello' 2>/dev/null ; echo $?
mark '9.14' ; $SED 'a \ hello' 2>/dev/null ; echo $?
mark '9.15' ; $SED 'b foo' 2>/dev/null ; echo $?
mark '9.16' ; $SED 'd hello' 2>/dev/null ; echo $?
mark '9.17' ; $SED 's/aa' 2>/dev/null ; echo $?
mark '9.18' ; $SED 's/aa/' 2>/dev/null ; echo $?
mark '9.19' ; $SED 's/a/b' 2>/dev/null ; echo $?
mark '9.20' ; $SED 's/a/b/c/d' 2>/dev/null ; echo $?
mark '9.21' ; $SED 's/a/b/ 1 2' 2>/dev/null ; echo $?
mark '9.22' ; $SED 's/a/b/ 1 g' 2>/dev/null ; echo $?
mark '9.23' ; $SED 's/a/b/w' 2>/dev/null ; echo $?
mark '9.24' ; $SED 'y/aa' 2>/dev/null ; echo $?
mark '9.25' ; $SED 'y/aa/b/' 2>/dev/null ; echo $?
mark '9.26' ; $SED 'y/aa/' 2>/dev/null ; echo $?
mark '9.27' ; $SED 'y/a/b' 2>/dev/null ; echo $?
mark '9.28' ; $SED 'y/a/b/c/d' 2>/dev/null ; echo $?
mark '9.29' ; $SED '!' 2>/dev/null ; echo $?
mark '9.30' ; $SED supercalifrangolisticexprialidociussupercalifrangolisticexcius 2>/dev/null ; echo $?
mark '9.31' ; $SED '' /dev/null 2>/dev/null ; echo $?
}
main
+8
View File
@@ -0,0 +1,8 @@
input
data
for validation
of sed(1)
+8
View File
@@ -0,0 +1,8 @@
input
input
data
data
for validation
for validation
of sed(1)
of sed(1)
+3
View File
@@ -0,0 +1,3 @@
data
for validation
of sed(1)
+4
View File
@@ -0,0 +1,4 @@
input
data
for validation
of sed(1)
+4
View File
@@ -0,0 +1,4 @@
foo
foo
foo
foo
+4
View File
@@ -0,0 +1,4 @@
input
data
for validation
foo
+3
View File
@@ -0,0 +1,3 @@
input
data
foo
+3
View File
@@ -0,0 +1,3 @@
input
data
foo
+17
View File
@@ -0,0 +1,17 @@
:abcd: : :
:abc : :d :
:ab :c :d :
:ab :cd : :
:a :cd :b :
:ad :c :b :
:ad : :bc :
:a : :bcd :
: :a :bcd :
: :ad :bc :
:c :ad :b :
:cd :a :b :
:cd :ab : :
:c :ab :d :
: :abc :d :
: :abcd: :
Done! Try another, or end with ^D.
+3
View File
@@ -0,0 +1,3 @@
input
data
for validation
+4
View File
@@ -0,0 +1,4 @@
input
data
for validation
of Foo(1)
+4
View File
@@ -0,0 +1,4 @@
input
data
for validation
of sed(1)
+4
View File
@@ -0,0 +1,4 @@
input
data
for validation
of Foo(1)
+4
View File
@@ -0,0 +1,4 @@
input
data
for validation
of sed(1)
+1
View File
@@ -0,0 +1 @@
67
@@ -0,0 +1,28 @@
e1_l1_1
e1_l1_1
e1_l1_2
e1_l1_2
e1_l1_3
e1_l1_3
e1_l1_4
e1_l1_4
e1_l1_5
e1_l1_5
e1_l1_6
e1_l1_6
e1_l1_7
e1_l1_7
e1_l1_8
e1_l1_8
e1_l1_9
e1_l1_9
e1_l1_10
e1_l1_10
e1_l1_11
e1_l1_11
e1_l1_12
e1_l1_12
e1_l1_13
e1_l1_13
e1_l1_14
e1_l1_14
@@ -0,0 +1,14 @@
s1_l1_1
s1_l1_2
s1_l1_3
s1_l1_4
s1_l1_5
s1_l1_6
s1_l1_7
s1_l1_8
s1_l1_9
s1_l1_10
s1_l1_11
s1_l1_12
s1_l1_13
s1_l1_14
@@ -0,0 +1,14 @@
e1_l1_1
e1_l1_2
e1_l1_3
e1_l1_4
e1_l1_5
e1_l1_6
e1_l1_7
e1_l1_8
e1_l1_9
e1_l1_10
e1_l1_11
e1_l1_12
e1_l1_13
e1_l1_14
@@ -0,0 +1,14 @@
e1_l1_1
e1_l1_2
e1_l1_3
e1_l1_4
e1_l1_5
e1_l1_6
e1_l1_7
e1_l1_8
e1_l1_9
e1_l1_10
e1_l1_11
e1_l1_12
e1_l1_13
e1_l1_14
@@ -0,0 +1,42 @@
e1_l1_1
e2_e1_l1_1
e2_e1_l1_1
e1_l1_2
e2_e1_l1_2
e2_e1_l1_2
e1_l1_3
e2_e1_l1_3
e2_e1_l1_3
e1_l1_4
e2_e1_l1_4
e2_e1_l1_4
e1_l1_5
e2_e1_l1_5
e2_e1_l1_5
e1_l1_6
e2_e1_l1_6
e2_e1_l1_6
e1_l1_7
e2_e1_l1_7
e2_e1_l1_7
e1_l1_8
e2_e1_l1_8
e2_e1_l1_8
e1_l1_9
e2_e1_l1_9
e2_e1_l1_9
e1_l1_10
e2_e1_l1_10
e2_e1_l1_10
e1_l1_11
e2_e1_l1_11
e2_e1_l1_11
e1_l1_12
e2_e1_l1_12
e2_e1_l1_12
e1_l1_13
e2_e1_l1_13
e2_e1_l1_13
e1_l1_14
e2_e1_l1_14
e2_e1_l1_14
@@ -0,0 +1,42 @@
s1_l1_1
s2_s1_l1_1
s2_s1_l1_1
s1_l1_2
s2_s1_l1_2
s2_s1_l1_2
s1_l1_3
s2_s1_l1_3
s2_s1_l1_3
s1_l1_4
s2_s1_l1_4
s2_s1_l1_4
s1_l1_5
s2_s1_l1_5
s2_s1_l1_5
s1_l1_6
s2_s1_l1_6
s2_s1_l1_6
s1_l1_7
s2_s1_l1_7
s2_s1_l1_7
s1_l1_8
s2_s1_l1_8
s2_s1_l1_8
s1_l1_9
s2_s1_l1_9
s2_s1_l1_9
s1_l1_10
s2_s1_l1_10
s2_s1_l1_10
s1_l1_11
s2_s1_l1_11
s2_s1_l1_11
s1_l1_12
s2_s1_l1_12
s2_s1_l1_12
s1_l1_13
s2_s1_l1_13
s2_s1_l1_13
s1_l1_14
s2_s1_l1_14
s2_s1_l1_14
@@ -0,0 +1,42 @@
e1_l1_1
s1_e1_l1_1
s1_e1_l1_1
e1_l1_2
s1_e1_l1_2
s1_e1_l1_2
e1_l1_3
s1_e1_l1_3
s1_e1_l1_3
e1_l1_4
s1_e1_l1_4
s1_e1_l1_4
e1_l1_5
s1_e1_l1_5
s1_e1_l1_5
e1_l1_6
s1_e1_l1_6
s1_e1_l1_6
e1_l1_7
s1_e1_l1_7
s1_e1_l1_7
e1_l1_8
s1_e1_l1_8
s1_e1_l1_8
e1_l1_9
s1_e1_l1_9
s1_e1_l1_9
e1_l1_10
s1_e1_l1_10
s1_e1_l1_10
e1_l1_11
s1_e1_l1_11
s1_e1_l1_11
e1_l1_12
s1_e1_l1_12
s1_e1_l1_12
e1_l1_13
s1_e1_l1_13
s1_e1_l1_13
e1_l1_14
s1_e1_l1_14
s1_e1_l1_14
@@ -0,0 +1,56 @@
e1_l1_1
e1_l1_1
e1_l1_2
e1_l1_2
e1_l1_3
e1_l1_3
e1_l1_4
e1_l1_4
e1_l1_5
e1_l1_5
e1_l1_6
e1_l1_6
e1_l1_7
e1_l1_7
e1_l1_8
e1_l1_8
e1_l1_9
e1_l1_9
e1_l1_10
e1_l1_10
e1_l1_11
e1_l1_11
e1_l1_12
e1_l1_12
e1_l1_13
e1_l1_13
e1_l1_14
e1_l1_14
e1_l1_1
e1_l1_1
e1_l1_2
e1_l1_2
e1_l1_3
e1_l1_3
e1_l1_4
e1_l1_4
e1_l1_5
e1_l1_5
e1_l1_6
e1_l1_6
e1_l1_7
e1_l1_7
e1_l1_8
e1_l1_8
e1_l1_9
e1_l1_9
e1_l1_10
e1_l1_10
e1_l1_11
e1_l1_11
e1_l1_12
e1_l1_12
e1_l1_13
e1_l1_13
e1_l1_14
e1_l1_14
@@ -0,0 +1,28 @@
l1_1
l1_1
l1_2
l1_2
l1_3
l1_3
l1_4
l1_4
l1_5
l1_5
l1_6
l1_6
l1_7
l1_7
l1_8
l1_8
l1_9
l1_9
l1_10
l1_10
l1_11
l1_11
l1_12
l1_12
l1_13
l1_13
l1_14
l1_14
@@ -0,0 +1,14 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
@@ -0,0 +1,14 @@
e1_l1_1
e1_l1_2
e1_l1_3
e1_l1_4
e1_l1_5
e1_l1_6
e1_l1_7
e1_l1_8
e1_l1_9
e1_l1_10
e1_l1_11
e1_l1_12
e1_l1_13
e1_l1_14
@@ -0,0 +1,28 @@
e1_l1_1
e1_l1_1
e1_l1_2
e1_l1_2
e1_l1_3
e1_l1_3
e1_l1_4
e1_l1_4
e1_l1_5
e1_l1_5
e1_l1_6
e1_l1_6
e1_l1_7
e1_l1_7
e1_l1_8
e1_l1_8
e1_l1_9
e1_l1_9
e1_l1_10
e1_l1_10
e1_l1_11
e1_l1_11
e1_l1_12
e1_l1_12
e1_l1_13
e1_l1_13
e1_l1_14
e1_l1_14
@@ -0,0 +1,14 @@
e1_l1_1
e1_l1_2
e1_l1_3
e1_l1_4
e1_l1_5
e1_l1_6
e1_l1_7
e1_l1_8
e1_l1_9
e1_l1_10
e1_l1_11
e1_l1_12
e1_l1_13
e1_l1_14
@@ -0,0 +1,14 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
@@ -0,0 +1,28 @@
s1_l1_1
s1_l1_1
s1_l1_2
s1_l1_2
s1_l1_3
s1_l1_3
s1_l1_4
s1_l1_4
s1_l1_5
s1_l1_5
s1_l1_6
s1_l1_6
s1_l1_7
s1_l1_7
s1_l1_8
s1_l1_8
s1_l1_9
s1_l1_9
s1_l1_10
s1_l1_10
s1_l1_11
s1_l1_11
s1_l1_12
s1_l1_12
s1_l1_13
s1_l1_13
s1_l1_14
s1_l1_14
@@ -0,0 +1,28 @@
s1_l1_1
s1_l1_1
s1_l1_2
s1_l1_2
s1_l1_3
s1_l1_3
s1_l1_4
s1_l1_4
s1_l1_5
s1_l1_5
s1_l1_6
s1_l1_6
s1_l1_7
s1_l1_7
s1_l1_8
s1_l1_8
s1_l1_9
s1_l1_9
s1_l1_10
s1_l1_10
s1_l1_11
s1_l1_11
s1_l1_12
s1_l1_12
s1_l1_13
s1_l1_13
s1_l1_14
s1_l1_14
@@ -0,0 +1,28 @@
e1_l1_1
e1_l1_1
e1_l1_2
e1_l1_2
e1_l1_3
e1_l1_3
e1_l1_4
e1_l1_4
e1_l1_5
e1_l1_5
e1_l1_6
e1_l1_6
e1_l1_7
e1_l1_7
e1_l1_8
e1_l1_8
e1_l1_9
e1_l1_9
e1_l1_10
e1_l1_10
e1_l1_11
e1_l1_11
e1_l1_12
e1_l1_12
e1_l1_13
e1_l1_13
e1_l1_14
e1_l1_14
@@ -0,0 +1,28 @@
e1_l1_1
e1_l1_1
e1_l1_2
e1_l1_2
e1_l1_3
e1_l1_3
e1_l1_4
e1_l1_4
e1_l1_5
e1_l1_5
e1_l1_6
e1_l1_6
e1_l1_7
e1_l1_7
e1_l1_8
e1_l1_8
e1_l1_9
e1_l1_9
e1_l1_10
e1_l1_10
e1_l1_11
e1_l1_11
e1_l1_12
e1_l1_12
e1_l1_13
e1_l1_13
e1_l1_14
e1_l1_14
@@ -0,0 +1,14 @@
s1_l1_1
s1_l1_2
s1_l1_3
s1_l1_4
s1_l1_5
s1_l1_6
s1_l1_7
s1_l1_8
s1_l1_9
s1_l1_10
s1_l1_11
s1_l1_12
s1_l1_13
s1_l1_14
@@ -0,0 +1 @@
l1_4
@@ -0,0 +1 @@
l1_7
@@ -0,0 +1 @@
l1_7
@@ -0,0 +1,4 @@
l1_1
l1_2
l1_3
l1_4
@@ -0,0 +1,23 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
l2_1
l2_2
l2_3
l2_4
l2_5
l2_6
l2_7
l2_8
l2_9
@@ -0,0 +1,23 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
l2_1
l2_2
l2_3
l2_4
l2_5
l2_6
l2_7
l2_8
l2_9
@@ -0,0 +1,20 @@
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
l2_1
l2_2
l2_3
l2_4
l2_5
l2_6
l2_7
l2_8
l2_9
@@ -0,0 +1,17 @@
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
l2_1
l2_2
l2_3
l2_4
l2_5
l2_6
@@ -0,0 +1,17 @@
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_14
l2_1
l2_2
l2_3
l2_4
l2_5
l2_6
l2_7
l2_8
l2_9
@@ -0,0 +1,7 @@
l2_3
l2_4
l2_5
l2_6
l2_7
l2_8
l2_9
@@ -0,0 +1 @@
l1_12
@@ -0,0 +1 @@
l2_6
@@ -0,0 +1 @@
l1_7
@@ -0,0 +1,5 @@
l1_13
l1_14
l2_1
l2_2
l2_3
@@ -0,0 +1,3 @@
l1_6
l1_7
l1_8
@@ -0,0 +1 @@
l1_14
@@ -0,0 +1 @@
l2_9
@@ -0,0 +1 @@
l2_9
@@ -0,0 +1 @@
l1_7
@@ -0,0 +1,14 @@
l1_1
l1_2
l1_3
^l1T4$
^l1T5$
^l1T6$
^l1T7$
^l1T8$
^l1T9$
^l1T10$
^l1T11$
^l1T12$
l1_13
l1_14
@@ -0,0 +1,14 @@
l1_1
l1_2
l1_3
^l1_4
^l1_5
^l1_6$
^l1_7$
^l1T8$
^l1_9$
^l1_10$
^l1_11
^l1_12
l1_13
l1_14
@@ -0,0 +1,14 @@
^l1T1$
^l1T2$
^l1T3$
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
^l1T13$
^l1T14$
@@ -0,0 +1,14 @@
^l1_1
^l1_2
^l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
^l1_13
^l1_14
@@ -0,0 +1,47 @@
before_il1_1
after_ibefore_il1_1
before_il1_2
after_ibefore_il1_2
before_il1_3
after_ibefore_il1_3
before_il1_4
after_ibefore_il1_4
before_il1_5
after_ibefore_il1_5
before_il1_6
after_ibefore_il1_6
before_il1_7
after_ibefore_il1_7
before_il1_8
after_ibefore_il1_8
before_il1_9
after_ibefore_il1_9
before_il1_10
after_ibefore_il1_10
before_il1_11
after_ibefore_il1_11
before_il1_12
after_ibefore_il1_12
before_il1_13
after_ibefore_il1_13
before_il1_14
after_ibefore_il1_14
before_il2_1
after_ibefore_il2_1
before_il2_2
after_ibefore_il2_2
before_il2_3
after_ibefore_il2_3
before_il2_4
after_ibefore_il2_4
before_il2_5
after_ibefore_il2_5
before_il2_6
inserted
after_ibefore_il2_6
before_il2_7
after_ibefore_il2_7
before_il2_8
after_ibefore_il2_8
before_il2_9
after_ibefore_il2_9
@@ -0,0 +1,54 @@
before_al1_1
after_abefore_al1_1
before_al1_2
after_abefore_al1_2
before_al1_3
after_abefore_al1_3
before_al1_4
after_abefore_al1_4
before_a5-12l1_5
after_abefore_a5-12l1_5
appended
before_a5-12l1_6
after_abefore_a5-12l1_6
appended
before_a5-12l1_7
after_abefore_a5-12l1_7
appended
before_a5-12l1_8
after_abefore_a5-12l1_8
appended
before_a5-12l1_9
after_abefore_a5-12l1_9
appended
before_a5-12l1_10
after_abefore_a5-12l1_10
appended
before_a5-12l1_11
after_abefore_a5-12l1_11
appended
before_a5-12l1_12
after_abefore_a5-12l1_12
appended
before_al1_13
after_abefore_al1_13
before_al1_14
after_abefore_al1_14
before_al2_1
after_abefore_al2_1
before_al2_2
after_abefore_al2_2
before_al2_3
after_abefore_al2_3
before_al2_4
after_abefore_al2_4
before_al2_5
after_abefore_al2_5
before_al2_6
after_abefore_al2_6
before_al2_7
after_abefore_al2_7
before_al2_8
after_abefore_al2_8
before_al2_9
after_abefore_al2_9
@@ -0,0 +1,56 @@
^l1_1
^l1_1$
appended
^l1_2
^l1_2$
appended
^l1_3
^l1_3$
appended
^l1_4
^l1_4$
appended
^l1_5
^l1_5$
appended
^l1_6
^l1_6$
appended
^l1_7
^l1_7$
appended
^l1_8
appended
^l1_8
l1_9$
^l1_10
appended
^l1_10
l1_11$
^l1_12
^l1_12$
appended
^l1_13
^l1_13$
appended
^l1_14
^l1_14$
appended
^l2_1
^l2_1$
^l2_2
^l2_2$
^l2_3
^l2_3$
^l2_4
^l2_4$
^l2_5
^l2_5$
^l2_6
^l2_6$
^l2_7
^l2_7$
^l2_8
^l2_8$
^l2_9
^l2_9$
@@ -0,0 +1,14 @@
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
@@ -0,0 +1 @@
hello
@@ -0,0 +1 @@
hello
@@ -0,0 +1 @@
hello
@@ -0,0 +1,17 @@
label2_l1_1
label3_label2_l1_1
label1_l1_2
label1_l1_3
label1_l1_4
label1_l1_5
label1_l1_6
label1_l1_7
label1_l1_8
label1_l1_9
label1_l1_10
label1_l1_11
label1_l1_12
label2_l1_13
label3_label2_l1_13
label2_l1_14
label3_label2_l1_14
@@ -0,0 +1,14 @@
tested l2_1
tested l2_2
tested l2_3
tested l2_4
tested l2_5
tested l2_6
tested l2_7
tested l2_8
tested l2_9
tested l2_10
tested l2_11
tested l2_12
tested l2_13
tested l2_14
@@ -0,0 +1,12 @@
^l1_1
^l1_1$
^l1_2
^l1_2$
^l1_3
^l1_3$
^l1_4
^l1_4$
l1_5$
l1_6$
l1_7$
l1_8$
@@ -0,0 +1,14 @@
^l1_1$
^l1_2$
^l1_3$
^l1_4$
^l1_5$
^l1_6$
^l1_7$
^l1_8$
l1_9$
l1_10$
l1_11$
l1_12$
l1_13$
l1_14$
@@ -0,0 +1,5 @@
^l1_1
^l1_2
^l1_4
^l1_6
^l1_8
@@ -0,0 +1,5 @@
l1_1
l1_2
l1_3
l1_4
l1_5
@@ -0,0 +1,6 @@
l1_1
l1_2
l1_3
l1_4
hello
l1_5
@@ -0,0 +1,14 @@
m1_1
m1_2
m1_3
m1_4
m1_5
m1_6
m1_7
m1_8
m1_9
m1_10
m1_11
m1_12
m1_13
m1_14
@@ -0,0 +1,14 @@
changed
changed
changed
changed
changed
changed
changed
changed
changed
changed
changed
changed
changed
changed
@@ -0,0 +1,13 @@
l1_1
l1_2
l1_3
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
@@ -0,0 +1,20 @@
l1_1
l1_2
l1_3
l1_2
l1_3
l1_5
l1_2
l1_3
l1_2
l1_3
l1_6
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
@@ -0,0 +1,14 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
@@ -0,0 +1,15 @@
\001\002\003\004\005\006\a\b\t$
\v\f\r\016\017\020\021\022\023\024\025\026\027\030\031\032\
\033\034\035\036\037 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF\
GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\
\177\200\201\202\203\204\205\206\207\210\211\212\213\214\
\215\216\217\220\221\222\223\224\225\226\227\230\231\232\
\233\234\235\236\237\240\241\242\243\244\245\246\247\250\
\251\252\253\254\255\256\257\260\261\262\263\264\265\266\
\267\270\271\272\273\274\275\276\277\300\301\302\303\304\
\305\306\307\310\311\312\313\314\315\316\317\320\321\322\
\323\324\325\326\327\330\331\332\333\334\335\336\337\340\
\341\342\343\344\345\346\347\350\351\352\353\354\355\356\
\357\360\361\362\363\364\365\366\367\370\371\372\373\374\
\375\376\377$
$
@@ -0,0 +1,32 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
15
l2_1
16
l2_2
17
l2_3
18
l2_4
19
l2_5
20
l2_6
21
l2_7
22
l2_8
23
l2_9
@@ -0,0 +1,24 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
@@ -0,0 +1,23 @@
l1_1
l1_2
l1_3
l1_4
l2_1
l2_2
l2_3
l2_4
l2_5
l2_6
l2_7
l2_8
l2_9
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
@@ -0,0 +1,14 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
@@ -0,0 +1,14 @@
l1_1
l1_2
l1_3
l1_4
l1_5
l1_6
l1_7
l1_8
l1_9
l1_10
l1_11
l1_12
l1_13
l1_14
File diff suppressed because it is too large Load Diff
@@ -0,0 +1 @@
@@ -0,0 +1,14 @@
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
@@ -0,0 +1,14 @@
l1_X
l1_X
l1_X
l1_X
l1_X
l1_X
l1_X
l1_X
l1_X
l1_X0
l1_X1
l1_X2
l1_X3
l1_X4
@@ -0,0 +1,28 @@
lX_1
lX_2
lX_3
lX_4
lX_5
lX_6
lX_7
lX_8
lX_9
lX_10
lX_11
lX_12
lX_13
lX_14
lX_1
lX_2
lX_3
lX_4
lX_5
lX_6
lX_7
lX_8
lX_9
lX_10
lX_11
lX_12
lX_13
lX_14

Some files were not shown because too many files have changed in this diff Show More