xref: /netbsd-src/external/bsd/atf/dist/NEWS (revision 895f502b7b24c6827892959fc89e14ee5a5eb5c4)
1edebbb8eSjmmvMajor changes between releases                  Automated Testing Framework
2edebbb8eSjmmv===========================================================================
3e2207522Sjmmv
4e2207522Sjmmv
5*895f502bSjmmvChanges in version 0.11
6*895f502bSjmmv***********************
7*895f502bSjmmv
8*895f502bSjmmvExperimental version released on October 20th, 2010.
9*895f502bSjmmv
10*895f502bSjmmv* The ATF_CHECK* macros in atf-c++ were renamed to ATF_REQUIRE* to match
11*895f502bSjmmv  their counterparts in atf-c.
12*895f502bSjmmv
13*895f502bSjmmv* Clearly separated the modules in atf-c that are supposed to be public
14*895f502bSjmmv  from those that are implementation details.  The header files for the
15*895f502bSjmmv  internal modules are not installed any more.
16*895f502bSjmmv
17*895f502bSjmmv* Made the atf-check tool private.  It is only required by atf-sh and being
18*895f502bSjmmv  public has the danger of causing confusion.  Also, making it private
19*895f502bSjmmv  simplifies the public API of atf.
20*895f502bSjmmv
21*895f502bSjmmv* Changed atf-sh to enable per-command error checking (set -e) by default.
22*895f502bSjmmv  This catches many cases in which a test case is broken but it is not
23*895f502bSjmmv  reported as such because execution continues.
24*895f502bSjmmv
25*895f502bSjmmv* Fixed the XSTL and CSS stylesheets to support expected failures.
26*895f502bSjmmv
27*895f502bSjmmv
28edebbb8eSjmmvChanges in version 0.10
29edebbb8eSjmmv***********************
30e2207522Sjmmv
31edebbb8eSjmmvExperimental version released on July 2nd, 2010.
32e2207522Sjmmv
33edebbb8eSjmmvMiscellaneous features
3412aa0b5aSjmmv
35edebbb8eSjmmv* Added expected failures support to test cases and atf-run.  These
36edebbb8eSjmmv  include, for example, expected clean exits, expected reception of fatal
37edebbb8eSjmmv  signals, expected timeouts and expected errors in condition checks.
38edebbb8eSjmmv  These statuses can be used to denote test cases that are known to fail
39edebbb8eSjmmv  due to a bug in the code they are testing.  atf-report reports these
40edebbb8eSjmmv  tests separately but they do not count towards the failed test cases
41edebbb8eSjmmv  amount.
4212aa0b5aSjmmv
43edebbb8eSjmmv* Added the ATF_CHECK_ERRNO and ATF_REQUIRE_ERRNO to the C library to
44edebbb8eSjmmv  allow easy checking of call failures that update errno.
4512aa0b5aSjmmv
46edebbb8eSjmmv* Added the has.cleanup meta-data property to test caes that specifies
47edebbb8eSjmmv  whether the test case has a cleanup routine or not; its value is
48edebbb8eSjmmv  automatically set.  This property is read by atf-run to know if it has to
49edebbb8eSjmmv  run the cleanup routine; skipping this run for every test case
50edebbb8eSjmmv  significantly speeds up the run time of test suites.
5112aa0b5aSjmmv
52edebbb8eSjmmv* Reversed the order of the ATF_CHECK_THROW macro in the C++ binding to
53edebbb8eSjmmv  take the expected exception as the first argument and the statement to
54edebbb8eSjmmv  execute as the second argument.
5512aa0b5aSjmmv
56edebbb8eSjmmvChanges in atf-check
57407d7761Sjmmv
58edebbb8eSjmmv* Changed atf-check to support negating the status and output checks by
59edebbb8eSjmmv  prefixing them with not- and added support to specify multiple checkers
60edebbb8eSjmmv  for stdout and stderr, not only one.
619b3149ccSjmmv
62edebbb8eSjmmv* Added the match output checker to atf-check to look for regular
63edebbb8eSjmmv  expressions in the stdout and stderr of commands.
64edebbb8eSjmmv
65edebbb8eSjmmv* Modified the exit checks in atf-check to support checking for the
66edebbb8eSjmmv  reception of signals.
67edebbb8eSjmmv
68edebbb8eSjmmvCode simplifications and cleanups
69edebbb8eSjmmv
70edebbb8eSjmmv* Removed usage messages from test programs to simplify the
71edebbb8eSjmmv  implementation of every binding by a significant amount.  They just now
72edebbb8eSjmmv  refer the user to the appropriate manual page and do not attempt to wrap
73edebbb8eSjmmv  lines on terminal boundaries.  Test programs are not supposed to be run
74edebbb8eSjmmv  by users directly so this minor interface regression is not important.
75edebbb8eSjmmv
76edebbb8eSjmmv* Removed the atf-format internal utility, which is unused after the
77edebbb8eSjmmv  change documented above.
78edebbb8eSjmmv
79edebbb8eSjmmv* Removed the atf-cleanup internal utility.  It has been unused since the
80edebbb8eSjmmv  test case isolation was moved to atf-run in 0.8
81edebbb8eSjmmv
82edebbb8eSjmmv* Splitted the Makefile.am into smaller files for easier maintenance and
83edebbb8eSjmmv  dropped the use of M4.  Only affects users building from the repository
84edebbb8eSjmmv  sources.
85edebbb8eSjmmv
86edebbb8eSjmmv* Intermixed tests with the source files in the source tree to provide
87edebbb8eSjmmv  them more visibility and easier access.  The tests directory is gone from
88edebbb8eSjmmv  the source tree and tests are now suffixed by _test, not prefixed by t_.
89edebbb8eSjmmv
90edebbb8eSjmmv* Simplifications to the atf-c library: removed the io, tcr and ui
91edebbb8eSjmmv  modules as they had become unnecessary after all simplifications
92edebbb8eSjmmv  introduced since the 0.8 release.
93edebbb8eSjmmv
94edebbb8eSjmmv* Removed the application/X-atf-tcr format introduced in 0.8 release.
95edebbb8eSjmmv  Tests now print a much simplified format that is easy to parse and nicer
96edebbb8eSjmmv  to read by end users.  As a side effect, the default for test cases is
97edebbb8eSjmmv  now to print their results to stdout unless otherwise stated by providing
98edebbb8eSjmmv  the -r flag.
99edebbb8eSjmmv
100edebbb8eSjmmv* Removed XML distribution documents and replaced them with plain-text
101edebbb8eSjmmv  documents.  They provided little value and introduced a lot of complexity
102edebbb8eSjmmv  to the build system.
103edebbb8eSjmmv
104edebbb8eSjmmv* Simplified the output of atf-version by not attempting to print a
105edebbb8eSjmmv  revision number when building form a distfile.  Makes the build system
106edebbb8eSjmmv  easier to maintain.
107edebbb8eSjmmv
1089b3149ccSjmmv
1099b3149ccSjmmvChanges in version 0.9
110edebbb8eSjmmv**********************
1119b3149ccSjmmv
1129b3149ccSjmmvExperimental version released on June 3rd, 2010.
1139b3149ccSjmmv
1149b3149ccSjmmv* Added atf-sh, an interpreter to process test programs written using
115edebbb8eSjmmv  the shell API.  This is not really a shell interpreter by itself though:
116edebbb8eSjmmv  it is just a wrapper around the system shell that eases the loading of
117edebbb8eSjmmv  the necessary ATF libraries.
1189b3149ccSjmmv
1199b3149ccSjmmv* Removed atf-compile in favour of atf-sh.
1209b3149ccSjmmv
1219b3149ccSjmmv* Added the use.fs metadata property to test case, which is used to
1229b3149ccSjmmv  specify which test cases require file system access.  This is to
123edebbb8eSjmmv  highlight dependencies on external resources more clearly and to speed up
124edebbb8eSjmmv  the execution of test suites by skipping the creation of many unnecessary
125edebbb8eSjmmv  work directories.
1269b3149ccSjmmv
1279b3149ccSjmmv* Fixed test programs to get a sane default value for their source
1289b3149ccSjmmv  directory.  This means that it should not be necessary any more to pass
129edebbb8eSjmmv  -s when running test programs that do not live in the current directory.
1309b3149ccSjmmv
1319b3149ccSjmmv* Defining test case headers became optional.  This is trivial to achieve
1329b3149ccSjmmv  in shell-based tests but a bit ugly in C and C++.  In C, use the new
1339b3149ccSjmmv  ATF_TC_WITHOUT_HEAD macro to define the test case, and in C++ use
1349b3149ccSjmmv  ATF_TEST_CASE_WITHOUT_HEAD.
135407d7761Sjmmv
136edebbb8eSjmmv
137407d7761SjmmvChanges in version 0.8
138edebbb8eSjmmv**********************
139407d7761Sjmmv
140407d7761SjmmvExperimental version released on May 7th, 2010.
141407d7761Sjmmv
142407d7761Sjmmv* Test programs no longer run several test cases in a row.  The execution
143407d7761Sjmmv  of a test program now requires a test case name, and that single test
144edebbb8eSjmmv  case is executed.  To execute several test cases, use the atf-run utility
145edebbb8eSjmmv  as usual.
146407d7761Sjmmv
147407d7761Sjmmv* Test programs no longer fork a subprocess to isolate the execution of
148407d7761Sjmmv  test cases.  They run the test case code in-process, and a crash of the
149407d7761Sjmmv  test case will result in a crash of the test program.  This is to ease
150407d7761Sjmmv  debugging of faulty test cases.
151407d7761Sjmmv
152407d7761Sjmmv* Test programs no longer isolate their test cases.  This means that they
153407d7761Sjmmv  will not create temporary directories nor sanitize the environment any
154edebbb8eSjmmv  more.  Yes: running a test case that depends on system state by hand will
155edebbb8eSjmmv  most likely yield different results depending on where (machine,
156407d7761Sjmmv  directory, user environment, etc.) it is run.  Isolation has been moved
157407d7761Sjmmv  to atf-run.
158407d7761Sjmmv
159407d7761Sjmmv* Test programs no longer print a cryptic format (application/X-atf-tcs)
160edebbb8eSjmmv  on a special file channel.  They can now print whatever they want on the
161edebbb8eSjmmv  screen.  Because test programs can now only run one test case every time,
162edebbb8eSjmmv  providing controlled output is not necessary any more.
163407d7761Sjmmv
164407d7761Sjmmv* Test programs no longer write their status into a special file
165edebbb8eSjmmv  descriptor.  Instead, they create a file with the results, which is later
166edebbb8eSjmmv  parsed by atf-run.  This changes the semantics of the -r flag.
167407d7761Sjmmv
168407d7761Sjmmv* atf-run has been adjusted to perform the test case isolation.  As a
169407d7761Sjmmv  result, there is now a single canonical place that implements the
170407d7761Sjmmv  isolation of test caes.  In previous releases, the three language
171edebbb8eSjmmv  bindings (C, C++ and shell) had to be kept in sync with each other (read:
172edebbb8eSjmmv  not a nice thing to do at all).  As a side effect of this change, writing
173edebbb8eSjmmv  bindings for other languages will be much, much easier from now on.
174407d7761Sjmmv
175407d7761Sjmmv* atf-run forks test programs on a test case basis, instead of on a test
176407d7761Sjmmv  program basis as it did before.  This is to provide the test case
177407d7761Sjmmv  isolation that was before implemented by the test programs themselves.
178407d7761Sjmmv
179407d7761Sjmmv* Removed the atf-exec tool.  This was used to implement test case
180407d7761Sjmmv  isolation in atf-sh, but it is now unnecessary.
181407d7761Sjmmv
182407d7761Sjmmv* It is now optional to define the descr meta-data property.  It has been
183edebbb8eSjmmv  proven to be mostly useless, because test cases often carry a descriptive
184edebbb8eSjmmv  name of their own.
185edebbb8eSjmmv
18612aa0b5aSjmmv
18712aa0b5aSjmmvChanges in version 0.7
188edebbb8eSjmmv**********************
18912aa0b5aSjmmv
19012aa0b5aSjmmvExperimental version released on December 22nd, 2009.
19112aa0b5aSjmmv
19212aa0b5aSjmmv* Added build-time checks to atf-c and atf-c++.  A binding for atf-sh
19312aa0b5aSjmmv  will come later.
19412aa0b5aSjmmv
19512aa0b5aSjmmv* Migrated all build-time checks for header files to proper ATF tests.
19612aa0b5aSjmmv  This demonstrates the use of the new feature described above.
19712aa0b5aSjmmv
19812aa0b5aSjmmv* Added an internal API for child process management.
19912aa0b5aSjmmv
20012aa0b5aSjmmv* Converted all plain-text distribution documents to a Docbook canonical
20112aa0b5aSjmmv  version, and include pre-generated plain text and HTML copies in the
20212aa0b5aSjmmv  distribution file.
20312aa0b5aSjmmv
20412aa0b5aSjmmv* Simplified the contents of the Makefile.am by regenerating it from a
20512aa0b5aSjmmv  canonical Makefile.am.m4 source.  As a side-effect, some dependency
20612aa0b5aSjmmv  specifications were fixed.
20712aa0b5aSjmmv
20812aa0b5aSjmmv* Migrated all checks from the check target to installcheck, as these
20912aa0b5aSjmmv  require ATF to be installed.
21012aa0b5aSjmmv
21112aa0b5aSjmmv* Fixed sign comparison mismatches triggered by the now-enabled
21212aa0b5aSjmmv  -Wsign-compare.
21312aa0b5aSjmmv
21412aa0b5aSjmmv* Fixed many memory and object leaks.
21512aa0b5aSjmmv
216edebbb8eSjmmv
21712aa0b5aSjmmvChanges in version 0.6
218edebbb8eSjmmv**********************
21912aa0b5aSjmmv
22012aa0b5aSjmmvExperimental version released on January 18th, 2009.
22112aa0b5aSjmmv
22212aa0b5aSjmmv* Make atf-exec be able to kill its child process after a certain period
22312aa0b5aSjmmv  of time; this is controlled through the new -t option.
224e2207522Sjmmv
225e2207522Sjmmv* Change atf-sh to use atf-exec's -t option to control the test case's
226e2207522Sjmmv  timeouts, instead of doing it internally.  Same behavior as before, but
227e2207522Sjmmv  noticeably faster.
228e2207522Sjmmv
22912aa0b5aSjmmv* atf-exec's -g option and atf-killpg are gone due to the previous
23012aa0b5aSjmmv  change.
231e2207522Sjmmv
23212aa0b5aSjmmv* Added the atf-check(1) tool, a program that executes a given command
233edebbb8eSjmmv  and checks its exit code against a known value and allows the management
234edebbb8eSjmmv  of stdout and stderr in multiple ways.  This replaces the previous
235edebbb8eSjmmv  atf_check function in the atf-sh library and exposes this functionality
236edebbb8eSjmmv  to both atf-c and atf-c++.
237e2207522Sjmmv
238e2207522Sjmmv* Added the ATF_REQUIRE family of macros to the C interface.  These help
239e2207522Sjmmv  in checking for fatal test conditions.  The old ATF_CHECK macros now
240e2207522Sjmmv  perform non-fatal checks only.  I.e. by using ATF_CHECK, the test case
241e2207522Sjmmv  can now continue its execution and the failures will not be reported
242e2207522Sjmmv  until the end of the whole run.
243e2207522Sjmmv
24412aa0b5aSjmmv* Extended the amount of ATF_CHECK_* C macros with new ones to provide
24512aa0b5aSjmmv  more features to the developer.  These also have their corresponding
246e2207522Sjmmv  counterparts in the ATF_REQUIRE_* family.  The new macros (listing the
247e2207522Sjmmv  suffixes only) are: _EQ (replaces _EQUAL), _EQ_MSG, _STREQ and
248e2207522Sjmmv  _STREQ_MSG.
249e2207522Sjmmv
250edebbb8eSjmmv
25112aa0b5aSjmmvChanges in version 0.5
252edebbb8eSjmmv**********************
253e2207522Sjmmv
25412aa0b5aSjmmvExperimental version released on May 1st, 2008.
255e2207522Sjmmv
256e2207522Sjmmv* Clauses 3 and 4 of the BSD license used by the project were dropped.
257edebbb8eSjmmv  All the code is now under a 2-clause BSD license compatible with the GNU
258edebbb8eSjmmv  General Public License (GPL).
259e2207522Sjmmv
260e2207522Sjmmv* Added a C-only binding so that binary test programs do not need to be
261e2207522Sjmmv  tied to C++ at all.  This binding is now known as the atf-c library.
262e2207522Sjmmv
263e2207522Sjmmv* Renamed the C++ binding to atf-c++ for consistency with the new atf-c.
264e2207522Sjmmv
265e2207522Sjmmv* Renamed the POSIX shell binding to atf-sh for consistency with the new
266e2207522Sjmmv  atf-c and atf-c++.
267e2207522Sjmmv
26812aa0b5aSjmmv* Added a -w flag to test programs through which it is possible to
26912aa0b5aSjmmv  specify the work directory to be used.  This was possible in prior
270edebbb8eSjmmv  releases by defining the workdir configuration variable (-v workdir=...),
271edebbb8eSjmmv  but was a conceptually incorrect mechanism.
272e2207522Sjmmv
273e2207522Sjmmv* Test programs now preserve the execution order of test cases when they
274e2207522Sjmmv  are given in the command line.  Even those mentioned more than once are
275e2207522Sjmmv  executed multiple times to comply with the user's requests.
276e2207522Sjmmv
277edebbb8eSjmmv
27812aa0b5aSjmmvChanges in version 0.4
279edebbb8eSjmmv**********************
280e2207522Sjmmv
28112aa0b5aSjmmvExperimental version released on February 4th, 2008.
282e2207522Sjmmv
283e2207522Sjmmv* Added two new manual pages, atf-c++-api and atf-sh-api, describing the
284e2207522Sjmmv  C++ and POSIX shell interfaces used to write test programs.
285e2207522Sjmmv
286e2207522Sjmmv* Added a pkg-config file, useful to get the flags to build against the
287e2207522Sjmmv  C++ library or to easily detect the presence of ATF.
288e2207522Sjmmv
289e2207522Sjmmv* Added a way for test cases to require a specific architecture and/or
290e2207522Sjmmv  machine type through the new 'require.arch' and 'require.machine'
291e2207522Sjmmv  meta-data properties, respectively.
292e2207522Sjmmv
29312aa0b5aSjmmv* Added the 'timeout' property to test cases, useful to set an
29412aa0b5aSjmmv  upper-bound limit for the test's run time and thus prevent global test
29512aa0b5aSjmmv  program stalls due to the test case's misbehavior.
296e2207522Sjmmv
29712aa0b5aSjmmv* Added the atf-exec(1) internal utility, used to execute a command
29812aa0b5aSjmmv  after changing the process group it belongs to.
299e2207522Sjmmv
300e2207522Sjmmv* Added the atf-killpg(1) internal utility, used to kill process groups.
301e2207522Sjmmv
30212aa0b5aSjmmv* Multiple portability fixes.  Of special interest, full support for
303edebbb8eSjmmv  SunOS (Solaris Express Developer Edition 2007/09) using the Sun Studio 12
304edebbb8eSjmmv  C++ compiler.
305e2207522Sjmmv
30612aa0b5aSjmmv* Fixed a serious bug that prevented atf-run(1) from working at all
30712aa0b5aSjmmv  under Fedora 8 x86_64.  Due to the nature of the bug, other platforms
30812aa0b5aSjmmv  were likely affected too.
309e2207522Sjmmv
310edebbb8eSjmmv
31112aa0b5aSjmmvChanges in version 0.3
312edebbb8eSjmmv**********************
313e2207522Sjmmv
31412aa0b5aSjmmvExperimental version released on November 11th, 2007.
315e2207522Sjmmv
31612aa0b5aSjmmv* Added XML output support to atf-report.  This is accompanied by a DTD
317edebbb8eSjmmv  for the format's structure and sample XSLT/CSS files to post-process this
318edebbb8eSjmmv  output and convert it to a plain HTML report.
319e2207522Sjmmv
320e2207522Sjmmv* Changed atf-run to add system information to the report it generates.
321e2207522Sjmmv  This is currently used by atf-report's XML output only, and is later
322edebbb8eSjmmv  printed in the HTML reports in a nice and useful summary table.  The user
323edebbb8eSjmmv  and system administrator are allowed to tune this feature by means of
324edebbb8eSjmmv  hooks.
325e2207522Sjmmv
32612aa0b5aSjmmv* Removed the test cases' 'isolated' property.  This was intended to
327edebbb8eSjmmv  avoid touching the file system at all when running the related test case,
328edebbb8eSjmmv  but this has not been true for a long while: some control files are
329edebbb8eSjmmv  unconditionally required for several purposes, and we cannot easily get
330edebbb8eSjmmv  rid of them.  This way we remove several critical and delicate pieces of
331edebbb8eSjmmv  code.
332e2207522Sjmmv
333e2207522Sjmmv* Improved atf-report's CSV output format to include information about
334e2207522Sjmmv  test programs too.
335e2207522Sjmmv
336e2207522Sjmmv* Fixed the tests that used atf-compile to not require this tool as a
337e2207522Sjmmv  helper.  Avoids systems without build-time utilities to skip many tests
338e2207522Sjmmv  that could otherwise be run.  (E.g. NetBSD without the comp.tgz set
339e2207522Sjmmv  installed.)
340e2207522Sjmmv
341e2207522Sjmmv* Many general cleanups: Fixed many pieces of code marked as ugly and/or
342e2207522Sjmmv  incomplete.
343e2207522Sjmmv
344edebbb8eSjmmv
34512aa0b5aSjmmvChanges in version 0.2
346edebbb8eSjmmv**********************
347e2207522Sjmmv
34812aa0b5aSjmmvExperimental version released on September 20th, 2007.
349e2207522Sjmmv
350e2207522Sjmmv* Test cases now get a known umask on entry.
351e2207522Sjmmv
352edebbb8eSjmmv* atf-run now detects many unexpected failures caused by test programs and
353edebbb8eSjmmv  reports them as bogus tests.  atf-report is able to handle these new
354edebbb8eSjmmv  errors and nicely reports them to the user.
355e2207522Sjmmv
35612aa0b5aSjmmv* All the data formats read and written by the tools have been
357edebbb8eSjmmv  documented and cleaned up.  These include those grammars that define how
358edebbb8eSjmmv  the different components communicate with each other as well as the
359edebbb8eSjmmv  format of files written by the developers and users: the Atffiles and the
360edebbb8eSjmmv  configuration files.
361e2207522Sjmmv
36212aa0b5aSjmmv* Added the atf-version tool, a utility that displays information about
36312aa0b5aSjmmv  the currently installed version of ATF.
364e2207522Sjmmv
365e2207522Sjmmv* Test cases can now define an optional cleanup routine to undo their
366e2207522Sjmmv  actions regardless of their exit status.
367e2207522Sjmmv
36812aa0b5aSjmmv* atf-report now summarizes the list of failed (bogus) test programs
36912aa0b5aSjmmv  when using the ticker output format.
370e2207522Sjmmv
371e2207522Sjmmv* Test programs now capture some termination signals and clean up any
372e2207522Sjmmv  temporary files before exiting the program.
373e2207522Sjmmv
374e2207522Sjmmv* Multiple bug fixes and improvements all around.
375e2207522Sjmmv
376edebbb8eSjmmv
37712aa0b5aSjmmvChanges in version 0.1
378edebbb8eSjmmv**********************
379e2207522Sjmmv
38012aa0b5aSjmmvExperimental version released on August 20th, 2007.
381e2207522Sjmmv
382e2207522Sjmmv* First public version.  This was released coinciding with the end of the
383e2207522Sjmmv  Google Summer of Code 2007 program.
384edebbb8eSjmmv
385edebbb8eSjmmv
386edebbb8eSjmmv===========================================================================
387edebbb8eSjmmvvim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2
388