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