NEWS revision 1.1.1.6 1 1.1.1.5 jmmv Major changes between releases Automated Testing Framework
2 1.1.1.5 jmmv ===========================================================================
3 1.1 jmmv
4 1.1 jmmv
5 1.1.1.6 jmmv Changes in version 0.11
6 1.1.1.6 jmmv ***********************
7 1.1.1.6 jmmv
8 1.1.1.6 jmmv Experimental version released on October 20th, 2010.
9 1.1.1.6 jmmv
10 1.1.1.6 jmmv * The ATF_CHECK* macros in atf-c++ were renamed to ATF_REQUIRE* to match
11 1.1.1.6 jmmv their counterparts in atf-c.
12 1.1.1.6 jmmv
13 1.1.1.6 jmmv * Clearly separated the modules in atf-c that are supposed to be public
14 1.1.1.6 jmmv from those that are implementation details. The header files for the
15 1.1.1.6 jmmv internal modules are not installed any more.
16 1.1.1.6 jmmv
17 1.1.1.6 jmmv * Made the atf-check tool private. It is only required by atf-sh and being
18 1.1.1.6 jmmv public has the danger of causing confusion. Also, making it private
19 1.1.1.6 jmmv simplifies the public API of atf.
20 1.1.1.6 jmmv
21 1.1.1.6 jmmv * Changed atf-sh to enable per-command error checking (set -e) by default.
22 1.1.1.6 jmmv This catches many cases in which a test case is broken but it is not
23 1.1.1.6 jmmv reported as such because execution continues.
24 1.1.1.6 jmmv
25 1.1.1.6 jmmv * Fixed the XSTL and CSS stylesheets to support expected failures.
26 1.1.1.6 jmmv
27 1.1.1.6 jmmv
28 1.1.1.5 jmmv Changes in version 0.10
29 1.1.1.5 jmmv ***********************
30 1.1 jmmv
31 1.1.1.5 jmmv Experimental version released on July 2nd, 2010.
32 1.1 jmmv
33 1.1.1.5 jmmv Miscellaneous features
34 1.1 jmmv
35 1.1.1.5 jmmv * Added expected failures support to test cases and atf-run. These
36 1.1.1.5 jmmv include, for example, expected clean exits, expected reception of fatal
37 1.1.1.5 jmmv signals, expected timeouts and expected errors in condition checks.
38 1.1.1.5 jmmv These statuses can be used to denote test cases that are known to fail
39 1.1.1.5 jmmv due to a bug in the code they are testing. atf-report reports these
40 1.1.1.5 jmmv tests separately but they do not count towards the failed test cases
41 1.1.1.5 jmmv amount.
42 1.1 jmmv
43 1.1.1.5 jmmv * Added the ATF_CHECK_ERRNO and ATF_REQUIRE_ERRNO to the C library to
44 1.1.1.5 jmmv allow easy checking of call failures that update errno.
45 1.1 jmmv
46 1.1.1.5 jmmv * Added the has.cleanup meta-data property to test caes that specifies
47 1.1.1.5 jmmv whether the test case has a cleanup routine or not; its value is
48 1.1.1.5 jmmv automatically set. This property is read by atf-run to know if it has to
49 1.1.1.5 jmmv run the cleanup routine; skipping this run for every test case
50 1.1.1.5 jmmv significantly speeds up the run time of test suites.
51 1.1 jmmv
52 1.1.1.5 jmmv * Reversed the order of the ATF_CHECK_THROW macro in the C++ binding to
53 1.1.1.5 jmmv take the expected exception as the first argument and the statement to
54 1.1.1.5 jmmv execute as the second argument.
55 1.1 jmmv
56 1.1.1.5 jmmv Changes in atf-check
57 1.1.1.3 jmmv
58 1.1.1.5 jmmv * Changed atf-check to support negating the status and output checks by
59 1.1.1.5 jmmv prefixing them with not- and added support to specify multiple checkers
60 1.1.1.5 jmmv for stdout and stderr, not only one.
61 1.1.1.4 jmmv
62 1.1.1.5 jmmv * Added the match output checker to atf-check to look for regular
63 1.1.1.5 jmmv expressions in the stdout and stderr of commands.
64 1.1.1.4 jmmv
65 1.1.1.5 jmmv * Modified the exit checks in atf-check to support checking for the
66 1.1.1.5 jmmv reception of signals.
67 1.1.1.4 jmmv
68 1.1.1.5 jmmv Code simplifications and cleanups
69 1.1.1.4 jmmv
70 1.1.1.5 jmmv * Removed usage messages from test programs to simplify the
71 1.1.1.5 jmmv implementation of every binding by a significant amount. They just now
72 1.1.1.5 jmmv refer the user to the appropriate manual page and do not attempt to wrap
73 1.1.1.5 jmmv lines on terminal boundaries. Test programs are not supposed to be run
74 1.1.1.5 jmmv by users directly so this minor interface regression is not important.
75 1.1.1.4 jmmv
76 1.1.1.5 jmmv * Removed the atf-format internal utility, which is unused after the
77 1.1.1.5 jmmv change documented above.
78 1.1.1.4 jmmv
79 1.1.1.5 jmmv * Removed the atf-cleanup internal utility. It has been unused since the
80 1.1.1.5 jmmv test case isolation was moved to atf-run in 0.8
81 1.1.1.4 jmmv
82 1.1.1.5 jmmv * Splitted the Makefile.am into smaller files for easier maintenance and
83 1.1.1.5 jmmv dropped the use of M4. Only affects users building from the repository
84 1.1.1.5 jmmv sources.
85 1.1.1.4 jmmv
86 1.1.1.5 jmmv * Intermixed tests with the source files in the source tree to provide
87 1.1.1.5 jmmv them more visibility and easier access. The tests directory is gone from
88 1.1.1.5 jmmv the source tree and tests are now suffixed by _test, not prefixed by t_.
89 1.1.1.3 jmmv
90 1.1.1.5 jmmv * Simplifications to the atf-c library: removed the io, tcr and ui
91 1.1.1.5 jmmv modules as they had become unnecessary after all simplifications
92 1.1.1.5 jmmv introduced since the 0.8 release.
93 1.1.1.3 jmmv
94 1.1.1.5 jmmv * Removed the application/X-atf-tcr format introduced in 0.8 release.
95 1.1.1.5 jmmv Tests now print a much simplified format that is easy to parse and nicer
96 1.1.1.5 jmmv to read by end users. As a side effect, the default for test cases is
97 1.1.1.5 jmmv now to print their results to stdout unless otherwise stated by providing
98 1.1.1.5 jmmv the -r flag.
99 1.1.1.3 jmmv
100 1.1.1.5 jmmv * Removed XML distribution documents and replaced them with plain-text
101 1.1.1.5 jmmv documents. They provided little value and introduced a lot of complexity
102 1.1.1.5 jmmv to the build system.
103 1.1.1.3 jmmv
104 1.1.1.5 jmmv * Simplified the output of atf-version by not attempting to print a
105 1.1.1.5 jmmv revision number when building form a distfile. Makes the build system
106 1.1.1.5 jmmv easier to maintain.
107 1.1.1.3 jmmv
108 1.1.1.3 jmmv
109 1.1.1.5 jmmv Changes in version 0.9
110 1.1.1.5 jmmv **********************
111 1.1.1.3 jmmv
112 1.1.1.5 jmmv Experimental version released on June 3rd, 2010.
113 1.1.1.3 jmmv
114 1.1.1.5 jmmv * Added atf-sh, an interpreter to process test programs written using
115 1.1.1.5 jmmv the shell API. This is not really a shell interpreter by itself though:
116 1.1.1.5 jmmv it is just a wrapper around the system shell that eases the loading of
117 1.1.1.5 jmmv the necessary ATF libraries.
118 1.1.1.3 jmmv
119 1.1.1.5 jmmv * Removed atf-compile in favour of atf-sh.
120 1.1.1.3 jmmv
121 1.1.1.5 jmmv * Added the use.fs metadata property to test case, which is used to
122 1.1.1.5 jmmv specify which test cases require file system access. This is to
123 1.1.1.5 jmmv highlight dependencies on external resources more clearly and to speed up
124 1.1.1.5 jmmv the execution of test suites by skipping the creation of many unnecessary
125 1.1.1.5 jmmv work directories.
126 1.1.1.3 jmmv
127 1.1.1.5 jmmv * Fixed test programs to get a sane default value for their source
128 1.1.1.5 jmmv directory. This means that it should not be necessary any more to pass
129 1.1.1.5 jmmv -s when running test programs that do not live in the current directory.
130 1.1 jmmv
131 1.1.1.5 jmmv * Defining test case headers became optional. This is trivial to achieve
132 1.1.1.5 jmmv in shell-based tests but a bit ugly in C and C++. In C, use the new
133 1.1.1.5 jmmv ATF_TC_WITHOUT_HEAD macro to define the test case, and in C++ use
134 1.1.1.5 jmmv ATF_TEST_CASE_WITHOUT_HEAD.
135 1.1 jmmv
136 1.1 jmmv
137 1.1.1.5 jmmv Changes in version 0.8
138 1.1.1.5 jmmv **********************
139 1.1 jmmv
140 1.1.1.5 jmmv Experimental version released on May 7th, 2010.
141 1.1 jmmv
142 1.1.1.5 jmmv * Test programs no longer run several test cases in a row. The execution
143 1.1.1.5 jmmv of a test program now requires a test case name, and that single test
144 1.1.1.5 jmmv case is executed. To execute several test cases, use the atf-run utility
145 1.1.1.5 jmmv as usual.
146 1.1 jmmv
147 1.1.1.5 jmmv * Test programs no longer fork a subprocess to isolate the execution of
148 1.1.1.5 jmmv test cases. They run the test case code in-process, and a crash of the
149 1.1.1.5 jmmv test case will result in a crash of the test program. This is to ease
150 1.1.1.5 jmmv debugging of faulty test cases.
151 1.1 jmmv
152 1.1.1.5 jmmv * Test programs no longer isolate their test cases. This means that they
153 1.1.1.5 jmmv will not create temporary directories nor sanitize the environment any
154 1.1.1.5 jmmv more. Yes: running a test case that depends on system state by hand will
155 1.1.1.5 jmmv most likely yield different results depending on where (machine,
156 1.1.1.5 jmmv directory, user environment, etc.) it is run. Isolation has been moved
157 1.1.1.5 jmmv to atf-run.
158 1.1 jmmv
159 1.1.1.5 jmmv * Test programs no longer print a cryptic format (application/X-atf-tcs)
160 1.1.1.5 jmmv on a special file channel. They can now print whatever they want on the
161 1.1.1.5 jmmv screen. Because test programs can now only run one test case every time,
162 1.1.1.5 jmmv providing controlled output is not necessary any more.
163 1.1 jmmv
164 1.1.1.5 jmmv * Test programs no longer write their status into a special file
165 1.1.1.5 jmmv descriptor. Instead, they create a file with the results, which is later
166 1.1.1.5 jmmv parsed by atf-run. This changes the semantics of the -r flag.
167 1.1 jmmv
168 1.1.1.5 jmmv * atf-run has been adjusted to perform the test case isolation. As a
169 1.1.1.5 jmmv result, there is now a single canonical place that implements the
170 1.1.1.5 jmmv isolation of test caes. In previous releases, the three language
171 1.1.1.5 jmmv bindings (C, C++ and shell) had to be kept in sync with each other (read:
172 1.1.1.5 jmmv not a nice thing to do at all). As a side effect of this change, writing
173 1.1.1.5 jmmv bindings for other languages will be much, much easier from now on.
174 1.1 jmmv
175 1.1.1.5 jmmv * atf-run forks test programs on a test case basis, instead of on a test
176 1.1.1.5 jmmv program basis as it did before. This is to provide the test case
177 1.1.1.5 jmmv isolation that was before implemented by the test programs themselves.
178 1.1 jmmv
179 1.1.1.5 jmmv * Removed the atf-exec tool. This was used to implement test case
180 1.1.1.5 jmmv isolation in atf-sh, but it is now unnecessary.
181 1.1 jmmv
182 1.1.1.5 jmmv * It is now optional to define the descr meta-data property. It has been
183 1.1.1.5 jmmv proven to be mostly useless, because test cases often carry a descriptive
184 1.1.1.5 jmmv name of their own.
185 1.1 jmmv
186 1.1 jmmv
187 1.1.1.5 jmmv Changes in version 0.7
188 1.1.1.5 jmmv **********************
189 1.1 jmmv
190 1.1.1.5 jmmv Experimental version released on December 22nd, 2009.
191 1.1 jmmv
192 1.1.1.5 jmmv * Added build-time checks to atf-c and atf-c++. A binding for atf-sh
193 1.1.1.5 jmmv will come later.
194 1.1 jmmv
195 1.1.1.5 jmmv * Migrated all build-time checks for header files to proper ATF tests.
196 1.1.1.5 jmmv This demonstrates the use of the new feature described above.
197 1.1 jmmv
198 1.1.1.5 jmmv * Added an internal API for child process management.
199 1.1 jmmv
200 1.1.1.5 jmmv * Converted all plain-text distribution documents to a Docbook canonical
201 1.1.1.5 jmmv version, and include pre-generated plain text and HTML copies in the
202 1.1.1.5 jmmv distribution file.
203 1.1 jmmv
204 1.1.1.5 jmmv * Simplified the contents of the Makefile.am by regenerating it from a
205 1.1.1.5 jmmv canonical Makefile.am.m4 source. As a side-effect, some dependency
206 1.1.1.5 jmmv specifications were fixed.
207 1.1 jmmv
208 1.1.1.5 jmmv * Migrated all checks from the check target to installcheck, as these
209 1.1.1.5 jmmv require ATF to be installed.
210 1.1 jmmv
211 1.1.1.5 jmmv * Fixed sign comparison mismatches triggered by the now-enabled
212 1.1.1.5 jmmv -Wsign-compare.
213 1.1 jmmv
214 1.1.1.5 jmmv * Fixed many memory and object leaks.
215 1.1 jmmv
216 1.1 jmmv
217 1.1.1.5 jmmv Changes in version 0.6
218 1.1.1.5 jmmv **********************
219 1.1 jmmv
220 1.1.1.5 jmmv Experimental version released on January 18th, 2009.
221 1.1 jmmv
222 1.1.1.5 jmmv * Make atf-exec be able to kill its child process after a certain period
223 1.1.1.5 jmmv of time; this is controlled through the new -t option.
224 1.1 jmmv
225 1.1.1.5 jmmv * Change atf-sh to use atf-exec's -t option to control the test case's
226 1.1.1.5 jmmv timeouts, instead of doing it internally. Same behavior as before, but
227 1.1.1.5 jmmv noticeably faster.
228 1.1 jmmv
229 1.1.1.5 jmmv * atf-exec's -g option and atf-killpg are gone due to the previous
230 1.1.1.5 jmmv change.
231 1.1 jmmv
232 1.1.1.5 jmmv * Added the atf-check(1) tool, a program that executes a given command
233 1.1.1.5 jmmv and checks its exit code against a known value and allows the management
234 1.1.1.5 jmmv of stdout and stderr in multiple ways. This replaces the previous
235 1.1.1.5 jmmv atf_check function in the atf-sh library and exposes this functionality
236 1.1.1.5 jmmv to both atf-c and atf-c++.
237 1.1 jmmv
238 1.1.1.5 jmmv * Added the ATF_REQUIRE family of macros to the C interface. These help
239 1.1.1.5 jmmv in checking for fatal test conditions. The old ATF_CHECK macros now
240 1.1.1.5 jmmv perform non-fatal checks only. I.e. by using ATF_CHECK, the test case
241 1.1.1.5 jmmv can now continue its execution and the failures will not be reported
242 1.1.1.5 jmmv until the end of the whole run.
243 1.1 jmmv
244 1.1.1.5 jmmv * Extended the amount of ATF_CHECK_* C macros with new ones to provide
245 1.1.1.5 jmmv more features to the developer. These also have their corresponding
246 1.1.1.5 jmmv counterparts in the ATF_REQUIRE_* family. The new macros (listing the
247 1.1.1.5 jmmv suffixes only) are: _EQ (replaces _EQUAL), _EQ_MSG, _STREQ and
248 1.1.1.5 jmmv _STREQ_MSG.
249 1.1 jmmv
250 1.1 jmmv
251 1.1.1.5 jmmv Changes in version 0.5
252 1.1.1.5 jmmv **********************
253 1.1 jmmv
254 1.1.1.5 jmmv Experimental version released on May 1st, 2008.
255 1.1 jmmv
256 1.1.1.5 jmmv * Clauses 3 and 4 of the BSD license used by the project were dropped.
257 1.1.1.5 jmmv All the code is now under a 2-clause BSD license compatible with the GNU
258 1.1.1.5 jmmv General Public License (GPL).
259 1.1 jmmv
260 1.1.1.5 jmmv * Added a C-only binding so that binary test programs do not need to be
261 1.1.1.5 jmmv tied to C++ at all. This binding is now known as the atf-c library.
262 1.1 jmmv
263 1.1.1.5 jmmv * Renamed the C++ binding to atf-c++ for consistency with the new atf-c.
264 1.1 jmmv
265 1.1.1.5 jmmv * Renamed the POSIX shell binding to atf-sh for consistency with the new
266 1.1.1.5 jmmv atf-c and atf-c++.
267 1.1 jmmv
268 1.1.1.5 jmmv * Added a -w flag to test programs through which it is possible to
269 1.1.1.5 jmmv specify the work directory to be used. This was possible in prior
270 1.1.1.5 jmmv releases by defining the workdir configuration variable (-v workdir=...),
271 1.1.1.5 jmmv but was a conceptually incorrect mechanism.
272 1.1 jmmv
273 1.1.1.5 jmmv * Test programs now preserve the execution order of test cases when they
274 1.1.1.5 jmmv are given in the command line. Even those mentioned more than once are
275 1.1.1.5 jmmv executed multiple times to comply with the user's requests.
276 1.1 jmmv
277 1.1 jmmv
278 1.1.1.5 jmmv Changes in version 0.4
279 1.1.1.5 jmmv **********************
280 1.1 jmmv
281 1.1.1.5 jmmv Experimental version released on February 4th, 2008.
282 1.1 jmmv
283 1.1.1.5 jmmv * Added two new manual pages, atf-c++-api and atf-sh-api, describing the
284 1.1.1.5 jmmv C++ and POSIX shell interfaces used to write test programs.
285 1.1 jmmv
286 1.1.1.5 jmmv * Added a pkg-config file, useful to get the flags to build against the
287 1.1.1.5 jmmv C++ library or to easily detect the presence of ATF.
288 1.1 jmmv
289 1.1.1.5 jmmv * Added a way for test cases to require a specific architecture and/or
290 1.1.1.5 jmmv machine type through the new 'require.arch' and 'require.machine'
291 1.1.1.5 jmmv meta-data properties, respectively.
292 1.1 jmmv
293 1.1.1.5 jmmv * Added the 'timeout' property to test cases, useful to set an
294 1.1.1.5 jmmv upper-bound limit for the test's run time and thus prevent global test
295 1.1.1.5 jmmv program stalls due to the test case's misbehavior.
296 1.1 jmmv
297 1.1.1.5 jmmv * Added the atf-exec(1) internal utility, used to execute a command
298 1.1.1.5 jmmv after changing the process group it belongs to.
299 1.1.1.2 jmmv
300 1.1.1.5 jmmv * Added the atf-killpg(1) internal utility, used to kill process groups.
301 1.1.1.2 jmmv
302 1.1.1.5 jmmv * Multiple portability fixes. Of special interest, full support for
303 1.1.1.5 jmmv SunOS (Solaris Express Developer Edition 2007/09) using the Sun Studio 12
304 1.1.1.5 jmmv C++ compiler.
305 1.1.1.2 jmmv
306 1.1.1.5 jmmv * Fixed a serious bug that prevented atf-run(1) from working at all
307 1.1.1.5 jmmv under Fedora 8 x86_64. Due to the nature of the bug, other platforms
308 1.1.1.5 jmmv were likely affected too.
309 1.1.1.2 jmmv
310 1.1.1.2 jmmv
311 1.1.1.5 jmmv Changes in version 0.3
312 1.1.1.5 jmmv **********************
313 1.1.1.2 jmmv
314 1.1.1.5 jmmv Experimental version released on November 11th, 2007.
315 1.1.1.2 jmmv
316 1.1.1.5 jmmv * Added XML output support to atf-report. This is accompanied by a DTD
317 1.1.1.5 jmmv for the format's structure and sample XSLT/CSS files to post-process this
318 1.1.1.5 jmmv output and convert it to a plain HTML report.
319 1.1.1.5 jmmv
320 1.1.1.5 jmmv * Changed atf-run to add system information to the report it generates.
321 1.1.1.5 jmmv This is currently used by atf-report's XML output only, and is later
322 1.1.1.5 jmmv printed in the HTML reports in a nice and useful summary table. The user
323 1.1.1.5 jmmv and system administrator are allowed to tune this feature by means of
324 1.1.1.5 jmmv hooks.
325 1.1.1.5 jmmv
326 1.1.1.5 jmmv * Removed the test cases' 'isolated' property. This was intended to
327 1.1.1.5 jmmv avoid touching the file system at all when running the related test case,
328 1.1.1.5 jmmv but this has not been true for a long while: some control files are
329 1.1.1.5 jmmv unconditionally required for several purposes, and we cannot easily get
330 1.1.1.5 jmmv rid of them. This way we remove several critical and delicate pieces of
331 1.1.1.5 jmmv code.
332 1.1.1.5 jmmv
333 1.1.1.5 jmmv * Improved atf-report's CSV output format to include information about
334 1.1.1.5 jmmv test programs too.
335 1.1.1.5 jmmv
336 1.1.1.5 jmmv * Fixed the tests that used atf-compile to not require this tool as a
337 1.1.1.5 jmmv helper. Avoids systems without build-time utilities to skip many tests
338 1.1.1.5 jmmv that could otherwise be run. (E.g. NetBSD without the comp.tgz set
339 1.1.1.5 jmmv installed.)
340 1.1.1.5 jmmv
341 1.1.1.5 jmmv * Many general cleanups: Fixed many pieces of code marked as ugly and/or
342 1.1.1.5 jmmv incomplete.
343 1.1.1.5 jmmv
344 1.1.1.5 jmmv
345 1.1.1.5 jmmv Changes in version 0.2
346 1.1.1.5 jmmv **********************
347 1.1.1.5 jmmv
348 1.1.1.5 jmmv Experimental version released on September 20th, 2007.
349 1.1.1.5 jmmv
350 1.1.1.5 jmmv * Test cases now get a known umask on entry.
351 1.1.1.5 jmmv
352 1.1.1.5 jmmv * atf-run now detects many unexpected failures caused by test programs and
353 1.1.1.5 jmmv reports them as bogus tests. atf-report is able to handle these new
354 1.1.1.5 jmmv errors and nicely reports them to the user.
355 1.1.1.5 jmmv
356 1.1.1.5 jmmv * All the data formats read and written by the tools have been
357 1.1.1.5 jmmv documented and cleaned up. These include those grammars that define how
358 1.1.1.5 jmmv the different components communicate with each other as well as the
359 1.1.1.5 jmmv format of files written by the developers and users: the Atffiles and the
360 1.1.1.5 jmmv configuration files.
361 1.1.1.5 jmmv
362 1.1.1.5 jmmv * Added the atf-version tool, a utility that displays information about
363 1.1.1.5 jmmv the currently installed version of ATF.
364 1.1.1.5 jmmv
365 1.1.1.5 jmmv * Test cases can now define an optional cleanup routine to undo their
366 1.1.1.5 jmmv actions regardless of their exit status.
367 1.1.1.5 jmmv
368 1.1.1.5 jmmv * atf-report now summarizes the list of failed (bogus) test programs
369 1.1.1.5 jmmv when using the ticker output format.
370 1.1.1.5 jmmv
371 1.1.1.5 jmmv * Test programs now capture some termination signals and clean up any
372 1.1.1.5 jmmv temporary files before exiting the program.
373 1.1.1.5 jmmv
374 1.1.1.5 jmmv * Multiple bug fixes and improvements all around.
375 1.1.1.5 jmmv
376 1.1.1.5 jmmv
377 1.1.1.5 jmmv Changes in version 0.1
378 1.1.1.5 jmmv **********************
379 1.1.1.5 jmmv
380 1.1.1.5 jmmv Experimental version released on August 20th, 2007.
381 1.1.1.5 jmmv
382 1.1.1.5 jmmv * First public version. This was released coinciding with the end of the
383 1.1.1.5 jmmv Google Summer of Code 2007 program.
384 1.1.1.5 jmmv
385 1.1.1.5 jmmv
386 1.1.1.5 jmmv ===========================================================================
387 1.1.1.5 jmmv vim: filetype=text:textwidth=75:expandtab:shiftwidth=2:softtabstop=2
388