Commit Graph

106 Commits

Author SHA1 Message Date
Yaroslav Tykhiy
f6703c9c0a Change the semantics of -i (in-place editing) so that it treats
each file independently from other files.  The new semantics are
desired in the most of practical cases, e.g.: delete lines 5-9
from each file.

Keep the previous semantics of -i under a new option, -I, which
uses a single continuous address space covering all files to edit
in-place -- they are too cool to just drop them.

Add regression tests for -i and -I.

Approved by:	dds
Compared with:	GNU sed
Discussed on:	-hackers
MFC after:	2 weeks
2007-04-21 01:21:36 +00:00
Yaroslav Tykhiy
78e7d37750 Logically separate the complex hanoi' and math' tests from basic tests. 2007-04-02 08:20:43 +00:00
Yaroslav Tykhiy
e9a0eed451 Don't forget to close the range if we branched over its end
and had no chance to match it by the 2nd address precisely.
Otherwise the unclosed range would bogusly extend to the end
of stream.

Add a basic regression test for the bug fixed.  (This change
also fixes the more complex case 5.3 from `multitest.t'.)

Compared with:	SUN and GNU seds
Tested by:	regression tests
MFC after:	1 week
2007-04-02 08:14:46 +00:00
Yaroslav Tykhiy
d7cfea0e1a Today SUN and GNU seds fully agree on test 5.3 and behave
in a more reasonable way than BSD sed does: they properly
close the range even if we branched over its end.  No doubt,
the range `1,5' should not match lines from 9 through 14.
2007-04-02 07:50:10 +00:00
Yaroslav Tykhiy
6b8ef68111 This trivial change should fix at least 3 similar bugs. All of
them are related to the `c' function's need to know if we are at
the actual end of the address range.  (It must print the text not
earlier than the whole pattern space was deleted.)  It appears the
only sed function with this requirement.

There is `lastaddr' set by applies(), which is to notify the `c'
function, but it can't always help because it's false when we are
hitting the end of file early.  There is also a bug in applies()
due to which `lastaddr' isn't set to true on degenerate ranges such
as `$,$' or `N,$' if N appears the last line number.

Handling early EOF condition in applies() could look more logical,
but it would effectively revert sed to the unreasonable behaviour
rev. 1.26 of main.c fought against, as it would require lastline()
be called for each line within each address range.  So it's better
to call lastline() only if needed by the `c' function.

Together with this change to sed go regression tests for the bugs
fixed (c1-c3).  A basic test of `c' (c0) is also added as it helped
me to spot my own error.

Discussed with:		dds
Tested by:		the regression tests
MFC after:		1 week
2007-04-01 13:25:03 +00:00
Diomidis Spinellis
6dabf85649 Rename sed.test to multitest.t to comply with the naming scheme of
the regression suite.
2007-03-14 18:58:59 +00:00
Diomidis Spinellis
0a6ffa2714 Reinstate error-testing regression tests. 2007-03-14 13:38:23 +00:00
Diomidis Spinellis
ab6386e42d Integrate the tests I wrote in 1992 with our current regression
testing framework and protocol.
2007-03-14 13:05:45 +00:00
Diomidis Spinellis
83f7d3636c Reference results for sed.test (to be renamed into multitest.t).
I have verified these with GNU sed 4.1.5 (and in some cases with Solaris
sed) and they are identical, with the following exceptions:
5.3: The result is unspecified and BSD sed behaves differently.
6.3: GNU sed gets it wrong
7.1: GNU sed gets it wrong
7.8: BSD sed gets it wrong
2007-03-14 12:46:22 +00:00
Diomidis Spinellis
ac451395ea - Uncomment tests that were commented out
- Update platform-conditional tests to reflect current reality
- Fix conditional for test 7.8: it is the fault of BSD sed
2007-03-14 11:03:00 +00:00
Diomidis Spinellis
4c1ccdfd94 - It looks like BSD and GNU sed can nowadays pass two more tests.
- Test 7.8 fails for GNU sed not BSD.
2007-03-14 10:10:10 +00:00
Diomidis Spinellis
0bc4fe6eaa Use another non-printing test; address 0 now has a special meaning in GNU sed. 2007-03-14 09:47:00 +00:00
Diomidis Spinellis
7fdac324d9 Update tests to reflect the state of the art of sed in HEAD and
GNU sed 4.1.5.
Almost all of the tests that were skipped for BSD or GNU sed
now appear to work.
2007-03-14 09:05:41 +00:00
Diomidis Spinellis
412e5edfa8 Add sed math regression test. 2007-03-14 07:55:05 +00:00
Diomidis Spinellis
32ad3fd6da Add Towers of Hanoi regression test. 2007-03-14 07:52:38 +00:00
Diomidis Spinellis
c29e1340e9 Add missing newline to correct failure of the regression test.
According to IEEE Std 1003.1, 2004 "Whenever the pattern space is
written to standard output or a named file, sed shall immediately
follow it with a <newline>."

An attempt at the same correction might have been made with r1.3,
which is however identical with r1.2.
2007-03-14 07:01:49 +00:00
Diomidis Spinellis
894407d359 New test cases demonstrating fixed bugs, and the reason why
fmtcheck can't be used.
2006-12-03 19:18:41 +00:00
Yaroslav Tykhiy
a6afe5ada8 Fix and extend the -j option to pkill/pgrep WRT the jail
wildcard specifications.  Earlier the only wildcard syntax
was "-j 0" for "any jail".  There were at least
two shortcomings in it:  First, jail ID 0 was abused; it
meant "no jail" in other utils, e.g., ps(1).  Second, it
was impossible to match processed not in jail, which could
be useful to rc.d developers.  Therefore a new syntax is
introduced: "-j any" means any jail while "-j none" means
out of jail.  The old syntax is preserved for compatibility,
but now it's deprecated because it's limited and confusing.

Update the respective regression tests.  While I'm here,
make the tests more complex but sensitive:  Start several
processes, some in jail and some out of jail, so we can
detect that only the right processes are killed by pkill
or matched by pgrep.

Reviewed by:	gad, pjd
MFC after:	1 week
2006-11-23 11:55:17 +00:00
Diomidis Spinellis
0dc97cf078 Add the examples from the manual page. 2006-11-06 15:05:03 +00:00
Diomidis Spinellis
3b5adecb00 Updated results for bin/68981
PR:		bin/68981
2006-11-06 15:00:37 +00:00
Diomidis Spinellis
44d251df7a Regress.out is now regress.x.out. 2006-11-06 08:49:43 +00:00
Diomidis Spinellis
2c75d9c7ba Test the handling of supplied and default parameters. 2006-11-06 08:39:52 +00:00
Pawel Jakub Dawidek
d56da50ae8 Add tests for -t option with short tty name - pkill(1) should accept both
(eg. "ttyv0" and "v0").
2005-11-07 16:56:16 +00:00
Hartmut Brandt
8cc2581b3d Add first tests for semicolon handling. The first test fails. This is
probably a bug in the parser.
2005-10-18 07:28:09 +00:00
Hartmut Brandt
70ebfd0e40 Add more tests for escaped newline handling and fix a test that currently
should fail because of a bug in the parser (test 2).
2005-10-18 07:20:14 +00:00
Pawel Jakub Dawidek
b94557c2aa Add regression tests for '-L' option. 2005-08-25 20:13:58 +00:00
Pawel Jakub Dawidek
02a76f3fd7 '-F' option behaviour was reverted, so revert previous commit. 2005-08-25 20:11:39 +00:00
Pawel Jakub Dawidek
dfe47d36df '-F' option now needs locked pidfile. Modify regression tests respectively. 2005-08-24 19:39:29 +00:00
Garance A Drosehn
e9651b673d Correct one regression test (which was expected an incorrect answer), and
add a few more tests.  This matches bug fixes recently committed to 'env'.
2005-07-15 02:31:15 +00:00
Garance A Drosehn
2c87a19e7a Upgrade these regression tests to track recent changes to `env'.
Approved by:	re (blanket `env')
2005-06-21 21:43:38 +00:00
Garance A Drosehn
6cc00fe24c Add a suite of regression tests for all the recent changes to `env',
using my own script to handle it.  I wrote my own partially because
of all the quoting-issues involved with testing what I wanted to test,
and partially because this lets me commit one script and one data file,
instead of one-file-per-regression-test.

This suite was good enough for my initial testing (and it did help me
find a few bugs that would have otherwise been missed).  I'm not sure
how well it will work in general use, but I figured I might as well
commit it.  It won't *hurt* to have it available.  At the worst, people
can just ignore it.

Approved by:	re (blanket `env')
2005-06-20 04:17:12 +00:00
Hartmut Brandt
5878452aa9 Add a test for escaped newline handling. 2005-06-01 11:26:47 +00:00
Hartmut Brandt
6772dd14cb Add support for TODO tests. These are tests that are supposed to fail,
because of a make bug that should be fixed.
2005-06-01 11:25:38 +00:00
Hartmut Brandt
d9ea463fbf Change the test infrastructure so that tests are easier to maintain and
so that make(1) will run in an almost clean environment and enhance the
description of the test infrastructure.

Add the ability to have multiple tests carried out per test script.

Give some tests more meaningful names.

Fix the usage message from the test scripts.

Make it possible to pass several commands to the test scripts like:
'sh test.t setup run compare clean'.
2005-05-31 14:13:07 +00:00
Hartmut Brandt
cfc967e66a Add a test to check whether in compat mode make detectes builtins
on the command line and really executes the shell instead of directly
executing the command.
2005-05-20 15:25:04 +00:00
Hartmut Brandt
ac8946e3d3 Add a test to ensure that in compat mode when a line contains no
shell meta characters it is not passed to the shell, but the command
is executed directly (given that the line is not a shell builtin) and
that the line with a meta character is passed to the shell.
2005-05-20 15:06:27 +00:00
Hartmut Brandt
c9302692e6 Add a test that test whether we can replace the shell to use by
make with another shell and set all its parameters (meta and builtins
not tested here).
2005-05-20 14:50:30 +00:00
Hartmut Brandt
56f5aba2ca Some test cases for .SHELL target: builtin shell selection and
changing the path of a builtin shell.
2005-05-19 11:23:01 +00:00
Marcel Moolenaar
e108c3d726 o -n option added.
o  -x option added.
2005-05-15 07:35:34 +00:00
Hartmut Brandt
1b26a92962 Add an initial regression test suite for make(1).
Submitted by:	Max Okumoto <okumotu@ucsd.edu> (partly, initial version)
2005-04-28 13:20:48 +00:00
Stefan Farfeleder
a87ba6e923 Also test \0 in the format string. 2005-04-14 18:33:14 +00:00
Stefan Farfeleder
91e3aee000 Add a few regression tests for printf(1). 2005-04-13 20:08:17 +00:00
Pawel Jakub Dawidek
1897c44125 Add regression tests for pkill/pgrep.
MFC after:	3 days
2005-03-20 12:38:08 +00:00
Hartmut Brandt
012a8b3f81 Repo-copy tools/regression/usr.bin/make to tools/build/make_check
and adjust the path in the Makefile for the upgrade_checks target.
These checks are really feature upgrade checks that should be fast
and just find out whether we need to build a new make before
proceeding with other targets like buildworld. This makes the
place free for a real regression test suite in the old place.
2005-03-02 12:33:23 +00:00
Hartmut Brandt
89f087e8dd Fix builds with a read-only directory and a make upgrade. This is done
by forcing the creation of an object directory for the make regression
tests. Let make handle the tracking of the dependency and installation
of test_shell script.

Submitted by:	ru
2004-12-07 14:41:16 +00:00
Ruslan Ermilov
d29cf9e2f3 Make this work under debugging, e.g., "make -dl". 2004-12-06 08:51:30 +00:00
Hartmut Brandt
9c1f3ca3cf Make the tests runnable on a read-only src. To do this you must make sure
that you create one of the object directories make knows (see make(1)).
This uses the -C flag, so add a test that checks that make actually accepts
-C. Also fix the test that selects csh via the .SHELL target to work for
tcsh users too.

This commit renames shell_test to shell_test.sh. There is no history
to preserve so go without a repo-copy.

Reviewed by:	ru
2004-12-02 17:00:58 +00:00
Hartmut Brandt
60f801ee87 Chmod the shell testscript to be executable if it isn't already. According
to the CVS-Meisters x-mode just happens to work, but is not guaranteed to
do so. Try to be on the safe side.
2004-11-30 15:33:18 +00:00
Hartmut Brandt
7b54cdda4e Add some regression tests for the .SHELL target. I'm not sure that the
output of shell_2j is actually correct - it just tests what make currently
does. Make should switch on echoing for the second line, shouldn't it?
2004-11-25 10:03:29 +00:00
Nik Clayton
00e13b1d67 Switch over to a different, more flexible test output protocol that's
understood by Perl's Test::Harness module and prove(1) commands.

Update README to describe the new protocol.  The work's broken down into
two main sets of changes.

First, update the existing test programs (shell scripts and C programs)
to produce output in the ok/not ok format, and to, where possible, also
produce a header describing the number of tests that are expected to be
run.

Second, provide the .t files that actually run the tests.  In some cases
these are copies of, or very similar too, scripts that already existed.
I've kept the old scripts around so that it's possible to verify that
behaviour under this new system (in terms of whether or not a test fails)
is identical to the behaviour under the old system.

Add a TODO file.
2004-11-11 19:47:55 +00:00