NEWS revision 1.1.1.3 1 1.1.1.2 jmmv Major changes in ATF releases
2 1.1 jmmv
3 1.1.1.2 jmmv By Julio Merino, The NetBSD Foundation
4 1.1 jmmv
5 1.1.1.2 jmmv Contents
6 1.1 jmmv
7 1.1.1.3 jmmv 1. Changes in version 0.8
8 1.1 jmmv
9 1.1.1.3 jmmv 2. Changes in version 0.7
10 1.1 jmmv
11 1.1.1.3 jmmv 3. Changes in version 0.6
12 1.1 jmmv
13 1.1.1.3 jmmv 4. Changes in version 0.5
14 1.1 jmmv
15 1.1.1.3 jmmv 5. Changes in version 0.4
16 1.1 jmmv
17 1.1.1.3 jmmv 6. Changes in version 0.3
18 1.1 jmmv
19 1.1.1.3 jmmv 7. Changes in version 0.2
20 1.1.1.3 jmmv
21 1.1.1.3 jmmv 8. Changes in version 0.1
22 1.1.1.3 jmmv
23 1.1.1.3 jmmv Changes in version 0.8
24 1.1.1.3 jmmv
25 1.1.1.3 jmmv Experimental version released on May 7th, 2010.
26 1.1.1.3 jmmv
27 1.1.1.3 jmmv * Test programs no longer run several test cases in a row. The execution
28 1.1.1.3 jmmv of a test program now requires a test case name, and that single test
29 1.1.1.3 jmmv case is executed. To execute several test cases, use the atf-run
30 1.1.1.3 jmmv utility as usual.
31 1.1.1.3 jmmv
32 1.1.1.3 jmmv * Test programs no longer fork a subprocess to isolate the execution of
33 1.1.1.3 jmmv test cases. They run the test case code in-process, and a crash of the
34 1.1.1.3 jmmv test case will result in a crash of the test program. This is to ease
35 1.1.1.3 jmmv debugging of faulty test cases.
36 1.1.1.3 jmmv
37 1.1.1.3 jmmv * Test programs no longer isolate their test cases. This means that they
38 1.1.1.3 jmmv will not create temporary directories nor sanitize the environment any
39 1.1.1.3 jmmv more. Yes: running a test case that depends on system state by hand
40 1.1.1.3 jmmv will most likely yield different results depending on where (machine,
41 1.1.1.3 jmmv directory, user environment, etc.) it is run. Isolation has been moved
42 1.1.1.3 jmmv to atf-run.
43 1.1.1.3 jmmv
44 1.1.1.3 jmmv * Test programs no longer print a cryptic format (application/X-atf-tcs)
45 1.1.1.3 jmmv on a special file channel. They can now print whatever they want on
46 1.1.1.3 jmmv the screen. Because test programs can now only run one test case every
47 1.1.1.3 jmmv time, providing controlled output is not necessary any more.
48 1.1.1.3 jmmv
49 1.1.1.3 jmmv * Test programs no longer write their status into a special file
50 1.1.1.3 jmmv descriptor. Instead, they create a file with the results, which is
51 1.1.1.3 jmmv later parsed by atf-run. This changes the semantics of the -r flag.
52 1.1.1.3 jmmv
53 1.1.1.3 jmmv * atf-run has been adjusted to perform the test case isolation. As a
54 1.1.1.3 jmmv result, there is now a single canonical place that implements the
55 1.1.1.3 jmmv isolation of test caes. In previous releases, the three language
56 1.1.1.3 jmmv bindings (C, C++ and shell) had to be kept in sync with each other
57 1.1.1.3 jmmv (read: not a nice thing to do at all). As a side effect of this
58 1.1.1.3 jmmv change, writing bindings for other languages will be much, much easier
59 1.1.1.3 jmmv from now on.
60 1.1.1.3 jmmv
61 1.1.1.3 jmmv * atf-run forks test programs on a test case basis, instead of on a test
62 1.1.1.3 jmmv program basis as it did before. This is to provide the test case
63 1.1.1.3 jmmv isolation that was before implemented by the test programs themselves.
64 1.1.1.3 jmmv
65 1.1.1.3 jmmv * Removed the atf-exec tool. This was used to implement test case
66 1.1.1.3 jmmv isolation in atf-sh, but it is now unnecessary.
67 1.1.1.3 jmmv
68 1.1.1.3 jmmv * It is now optional to define the descr meta-data property. It has been
69 1.1.1.3 jmmv proven to be mostly useless, because test cases often carry a
70 1.1.1.3 jmmv descriptive name of their own.
71 1.1 jmmv
72 1.1.1.2 jmmv Changes in version 0.7
73 1.1 jmmv
74 1.1.1.2 jmmv Experimental version released on December 22nd, 2009.
75 1.1 jmmv
76 1.1.1.2 jmmv * Added build-time checks to atf-c and atf-c++. A binding for atf-sh
77 1.1.1.2 jmmv will come later.
78 1.1 jmmv
79 1.1.1.2 jmmv * Migrated all build-time checks for header files to proper ATF tests.
80 1.1.1.2 jmmv This demonstrates the use of the new feature described above.
81 1.1 jmmv
82 1.1.1.2 jmmv * Added an internal API for child process management.
83 1.1 jmmv
84 1.1.1.2 jmmv * Converted all plain-text distribution documents to a Docbook canonical
85 1.1.1.2 jmmv version, and include pre-generated plain text and HTML copies in the
86 1.1.1.2 jmmv distribution file.
87 1.1 jmmv
88 1.1.1.2 jmmv * Simplified the contents of the Makefile.am by regenerating it from a
89 1.1.1.2 jmmv canonical Makefile.am.m4 source. As a side-effect, some dependency
90 1.1.1.2 jmmv specifications were fixed.
91 1.1 jmmv
92 1.1.1.2 jmmv * Migrated all checks from the check target to installcheck, as these
93 1.1.1.2 jmmv require ATF to be installed.
94 1.1 jmmv
95 1.1.1.2 jmmv * Fixed sign comparison mismatches triggered by the now-enabled
96 1.1.1.2 jmmv -Wsign-compare.
97 1.1 jmmv
98 1.1.1.2 jmmv * Fixed many memory and object leaks.
99 1.1 jmmv
100 1.1.1.2 jmmv Changes in version 0.6
101 1.1 jmmv
102 1.1.1.2 jmmv Experimental version released on January 18th, 2009.
103 1.1 jmmv
104 1.1.1.2 jmmv * Make atf-exec be able to kill its child process after a certain period
105 1.1.1.2 jmmv of time; this is controlled through the new -t option.
106 1.1 jmmv
107 1.1.1.2 jmmv * Change atf-sh to use atf-exec's -t option to control the test case's
108 1.1.1.2 jmmv timeouts, instead of doing it internally. Same behavior as before, but
109 1.1.1.2 jmmv noticeably faster.
110 1.1 jmmv
111 1.1.1.2 jmmv * atf-exec's -g option and atf-killpg are gone due to the previous
112 1.1.1.2 jmmv change.
113 1.1 jmmv
114 1.1.1.2 jmmv * Added the atf-check(1) tool, a program that executes a given command
115 1.1.1.2 jmmv and checks its exit code against a known value and allows the
116 1.1.1.2 jmmv management of stdout and stderr in multiple ways. This replaces the
117 1.1.1.2 jmmv previous atf_check function in the atf-sh library and exposes this
118 1.1.1.2 jmmv functionality to both atf-c and atf-c++.
119 1.1 jmmv
120 1.1.1.2 jmmv * Added the ATF_REQUIRE family of macros to the C interface. These help
121 1.1.1.2 jmmv in checking for fatal test conditions. The old ATF_CHECK macros now
122 1.1.1.2 jmmv perform non-fatal checks only. I.e. by using ATF_CHECK, the test case
123 1.1.1.2 jmmv can now continue its execution and the failures will not be reported
124 1.1.1.2 jmmv until the end of the whole run.
125 1.1 jmmv
126 1.1.1.2 jmmv * Extended the amount of ATF_CHECK_* C macros with new ones to provide
127 1.1.1.2 jmmv more features to the developer. These also have their corresponding
128 1.1.1.2 jmmv counterparts in the ATF_REQUIRE_* family. The new macros (listing the
129 1.1.1.2 jmmv suffixes only) are: _EQ (replaces _EQUAL), _EQ_MSG, _STREQ and
130 1.1.1.2 jmmv _STREQ_MSG.
131 1.1 jmmv
132 1.1.1.2 jmmv Changes in version 0.5
133 1.1 jmmv
134 1.1.1.2 jmmv Experimental version released on May 1st, 2008.
135 1.1 jmmv
136 1.1.1.2 jmmv * Clauses 3 and 4 of the BSD license used by the project were dropped.
137 1.1.1.2 jmmv All the code is now under a 2-clause BSD license compatible with the
138 1.1.1.2 jmmv GNU General Public License (GPL).
139 1.1 jmmv
140 1.1.1.2 jmmv * Added a C-only binding so that binary test programs do not need to be
141 1.1.1.2 jmmv tied to C++ at all. This binding is now known as the atf-c library.
142 1.1 jmmv
143 1.1.1.2 jmmv * Renamed the C++ binding to atf-c++ for consistency with the new atf-c.
144 1.1 jmmv
145 1.1.1.2 jmmv * Renamed the POSIX shell binding to atf-sh for consistency with the new
146 1.1.1.2 jmmv atf-c and atf-c++.
147 1.1 jmmv
148 1.1.1.2 jmmv * Added a -w flag to test programs through which it is possible to
149 1.1.1.2 jmmv specify the work directory to be used. This was possible in prior
150 1.1.1.2 jmmv releases by defining the workdir configuration variable (-v
151 1.1.1.2 jmmv workdir=...), but was a conceptually incorrect mechanism.
152 1.1 jmmv
153 1.1.1.2 jmmv * Test programs now preserve the execution order of test cases when they
154 1.1.1.2 jmmv are given in the command line. Even those mentioned more than once are
155 1.1.1.2 jmmv executed multiple times to comply with the user's requests.
156 1.1 jmmv
157 1.1.1.2 jmmv Changes in version 0.4
158 1.1 jmmv
159 1.1.1.2 jmmv Experimental version released on February 4th, 2008.
160 1.1 jmmv
161 1.1.1.2 jmmv * Added two new manual pages, atf-c++-api and atf-sh-api, describing the
162 1.1.1.2 jmmv C++ and POSIX shell interfaces used to write test programs.
163 1.1 jmmv
164 1.1.1.2 jmmv * Added a pkg-config file, useful to get the flags to build against the
165 1.1.1.2 jmmv C++ library or to easily detect the presence of ATF.
166 1.1 jmmv
167 1.1.1.2 jmmv * Added a way for test cases to require a specific architecture and/or
168 1.1.1.2 jmmv machine type through the new 'require.arch' and 'require.machine'
169 1.1.1.2 jmmv meta-data properties, respectively.
170 1.1 jmmv
171 1.1.1.2 jmmv * Added the 'timeout' property to test cases, useful to set an
172 1.1.1.2 jmmv upper-bound limit for the test's run time and thus prevent global test
173 1.1.1.2 jmmv program stalls due to the test case's misbehavior.
174 1.1 jmmv
175 1.1.1.2 jmmv * Added the atf-exec(1) internal utility, used to execute a command
176 1.1.1.2 jmmv after changing the process group it belongs to.
177 1.1 jmmv
178 1.1.1.2 jmmv * Added the atf-killpg(1) internal utility, used to kill process groups.
179 1.1 jmmv
180 1.1.1.2 jmmv * Multiple portability fixes. Of special interest, full support for
181 1.1.1.2 jmmv SunOS (Solaris Express Developer Edition 2007/09) using the Sun Studio
182 1.1.1.2 jmmv 12 C++ compiler.
183 1.1 jmmv
184 1.1.1.2 jmmv * Fixed a serious bug that prevented atf-run(1) from working at all
185 1.1.1.2 jmmv under Fedora 8 x86_64. Due to the nature of the bug, other platforms
186 1.1.1.2 jmmv were likely affected too.
187 1.1 jmmv
188 1.1.1.2 jmmv Changes in version 0.3
189 1.1 jmmv
190 1.1.1.2 jmmv Experimental version released on November 11th, 2007.
191 1.1 jmmv
192 1.1.1.2 jmmv * Added XML output support to atf-report. This is accompanied by a DTD
193 1.1.1.2 jmmv for the format's structure and sample XSLT/CSS files to post-process
194 1.1.1.2 jmmv this output and convert it to a plain HTML report.
195 1.1 jmmv
196 1.1.1.2 jmmv * Changed atf-run to add system information to the report it generates.
197 1.1.1.2 jmmv This is currently used by atf-report's XML output only, and is later
198 1.1.1.2 jmmv printed in the HTML reports in a nice and useful summary table. The
199 1.1.1.2 jmmv user and system administrator are allowed to tune this feature by
200 1.1.1.2 jmmv means of hooks.
201 1.1 jmmv
202 1.1.1.2 jmmv * Removed the test cases' 'isolated' property. This was intended to
203 1.1.1.2 jmmv avoid touching the file system at all when running the related test
204 1.1.1.2 jmmv case, but this has not been true for a long while: some control files
205 1.1.1.2 jmmv are unconditionally required for several purposes, and we cannot
206 1.1.1.2 jmmv easily get rid of them. This way we remove several critical and
207 1.1.1.2 jmmv delicate pieces of code.
208 1.1 jmmv
209 1.1.1.2 jmmv * Improved atf-report's CSV output format to include information about
210 1.1.1.2 jmmv test programs too.
211 1.1 jmmv
212 1.1.1.2 jmmv * Fixed the tests that used atf-compile to not require this tool as a
213 1.1.1.2 jmmv helper. Avoids systems without build-time utilities to skip many tests
214 1.1.1.2 jmmv that could otherwise be run. (E.g. NetBSD without the comp.tgz set
215 1.1.1.2 jmmv installed.)
216 1.1 jmmv
217 1.1.1.2 jmmv * Many general cleanups: Fixed many pieces of code marked as ugly and/or
218 1.1.1.2 jmmv incomplete.
219 1.1 jmmv
220 1.1.1.2 jmmv Changes in version 0.2
221 1.1 jmmv
222 1.1.1.2 jmmv Experimental version released on September 20th, 2007.
223 1.1 jmmv
224 1.1.1.2 jmmv * Test cases now get a known umask on entry.
225 1.1 jmmv
226 1.1.1.2 jmmv * atf-run now detects many unexpected failures caused by test programs
227 1.1.1.2 jmmv and reports them as bogus tests. atf-report is able to handle these
228 1.1.1.2 jmmv new errors and nicely reports them to the user.
229 1.1 jmmv
230 1.1.1.2 jmmv * All the data formats read and written by the tools have been
231 1.1.1.2 jmmv documented and cleaned up. These include those grammars that define
232 1.1.1.2 jmmv how the different components communicate with each other as well as
233 1.1.1.2 jmmv the format of files written by the developers and users: the Atffiles
234 1.1.1.2 jmmv and the configuration files.
235 1.1 jmmv
236 1.1.1.2 jmmv * Added the atf-version tool, a utility that displays information about
237 1.1.1.2 jmmv the currently installed version of ATF.
238 1.1.1.2 jmmv
239 1.1.1.2 jmmv * Test cases can now define an optional cleanup routine to undo their
240 1.1.1.2 jmmv actions regardless of their exit status.
241 1.1.1.2 jmmv
242 1.1.1.2 jmmv * atf-report now summarizes the list of failed (bogus) test programs
243 1.1.1.2 jmmv when using the ticker output format.
244 1.1.1.2 jmmv
245 1.1.1.2 jmmv * Test programs now capture some termination signals and clean up any
246 1.1.1.2 jmmv temporary files before exiting the program.
247 1.1.1.2 jmmv
248 1.1.1.2 jmmv * Multiple bug fixes and improvements all around.
249 1.1.1.2 jmmv
250 1.1.1.2 jmmv Changes in version 0.1
251 1.1.1.2 jmmv
252 1.1.1.2 jmmv Experimental version released on August 20th, 2007.
253 1.1.1.2 jmmv
254 1.1.1.2 jmmv * First public version. This was released coinciding with the end of the
255 1.1.1.2 jmmv Google Summer of Code 2007 program.
256