1*b0d29bc4SBrooks DavisMajor changes between releases 2*b0d29bc4SBrooks Davis============================== 3*b0d29bc4SBrooks Davis 4*b0d29bc4SBrooks Davis 5*b0d29bc4SBrooks DavisChanges in version 0.14 6*b0d29bc4SBrooks Davis----------------------- 7*b0d29bc4SBrooks Davis 8*b0d29bc4SBrooks Davis**NOT RELEASED YET; STILL UNDER DEVELOPMENT.** 9*b0d29bc4SBrooks Davis 10*b0d29bc4SBrooks Davis* Explicitly require C++11 language features when compiling Kyua. 11*b0d29bc4SBrooks Davis 12*b0d29bc4SBrooks Davis 13*b0d29bc4SBrooks DavisChanges in version 0.13 14*b0d29bc4SBrooks Davis----------------------- 15*b0d29bc4SBrooks Davis 16*b0d29bc4SBrooks Davis**Released on August 26th, 2016.** 17*b0d29bc4SBrooks Davis 18*b0d29bc4SBrooks Davis* Fixed execution of test cases as an unprivileged user, at least under 19*b0d29bc4SBrooks Davis NetBSD 7.0. Kyua-level failures were probably a regression introduced 20*b0d29bc4SBrooks Davis in Kyua 0.12, but the underlying may have existed for much longer: 21*b0d29bc4SBrooks Davis test cases might have previously failed for mysterious reasons when 22*b0d29bc4SBrooks Davis running under an unprivileged user. 23*b0d29bc4SBrooks Davis 24*b0d29bc4SBrooks Davis* Issue #134: Fixed metadata test broken on 32-bit platforms. 25*b0d29bc4SBrooks Davis 26*b0d29bc4SBrooks Davis* Issue #139: Added per-test case start/end timestamps to all reports. 27*b0d29bc4SBrooks Davis 28*b0d29bc4SBrooks Davis* Issue #156: Fixed crashes due to the invalid handling of cleanup 29*b0d29bc4SBrooks Davis routine data and triggered by the reuse of PIDs in long-running Kyua 30*b0d29bc4SBrooks Davis instances. 31*b0d29bc4SBrooks Davis 32*b0d29bc4SBrooks Davis* Issue #159: Fixed TAP parser to ignore case while matching `TODO` and 33*b0d29bc4SBrooks Davis `SKIP` directives, and to also recognize `Skipped`. 34*b0d29bc4SBrooks Davis 35*b0d29bc4SBrooks Davis* Fixed potential crash due to a race condition in the unprogramming of 36*b0d29bc4SBrooks Davis timers to control test deadlines. 37*b0d29bc4SBrooks Davis 38*b0d29bc4SBrooks Davis 39*b0d29bc4SBrooks DavisChanges in version 0.12 40*b0d29bc4SBrooks Davis----------------------- 41*b0d29bc4SBrooks Davis 42*b0d29bc4SBrooks Davis**Released on November 22nd, 2015.** 43*b0d29bc4SBrooks Davis 44*b0d29bc4SBrooks DavisThis is a huge release and marks a major milestone for Kyua as it finally 45*b0d29bc4SBrooks Davisimplements a long-standing feature request: the ability to execute test 46*b0d29bc4SBrooks Daviscases in parallel. This is a big deal because test cases are rarely 47*b0d29bc4SBrooks DavisCPU-bound: running them in parallel yields much faster execution times for 48*b0d29bc4SBrooks Davislarge test suites, allowing faster iteration of changes during development. 49*b0d29bc4SBrooks Davis 50*b0d29bc4SBrooks DavisAs an example: the FreeBSD test suite as of this date contains 3285 test 51*b0d29bc4SBrooks Daviscases. With sequential execution, a full test suite run takes around 12 52*b0d29bc4SBrooks Davisminutes to complete, whereas on a 4-core machine with a high level of 53*b0d29bc4SBrooks Davisparallelism it takes a little over 1 minute. 54*b0d29bc4SBrooks Davis 55*b0d29bc4SBrooks DavisImplementing parallel execution required rewriting most of Kyua's core and 56*b0d29bc4SBrooks Davispartly explains explains why there has not been a new release for over a 57*b0d29bc4SBrooks Davisyear. The current implementation is purely subprocess-based, which works 58*b0d29bc4SBrooks Davisbut has some limitations and has resulted in a core that is really complex 59*b0d29bc4SBrooks Davisand difficult to understand. Future versions will investigate the use of 60*b0d29bc4SBrooks Davisthreads instead for a simplified programming model and additional 61*b0d29bc4SBrooks Davisparallelization possibilities. 62*b0d29bc4SBrooks Davis 63*b0d29bc4SBrooks Davis* Issue #2: Implemented support to execute test cases in parallel when 64*b0d29bc4SBrooks Davis invoking `kyua test`. Parallel execution is *only* enabled when the new 65*b0d29bc4SBrooks Davis `parallelism` configuration variable is set to a value greater than `1`. 66*b0d29bc4SBrooks Davis The default behavior is still to run tests sequentially because some test 67*b0d29bc4SBrooks Davis suites contain test cases with side-effects that might fail when run in 68*b0d29bc4SBrooks Davis parallel. To resolve this, the new metadata property `is_exclusive` can 69*b0d29bc4SBrooks Davis be set to `true` on a test basis to indicate that the test must be run on 70*b0d29bc4SBrooks Davis its own. 71*b0d29bc4SBrooks Davis 72*b0d29bc4SBrooks Davis* Known regression: Running `kyua debug` on a TAP-based test program does 73*b0d29bc4SBrooks Davis not currently report the output in real time. The output will only be 74*b0d29bc4SBrooks Davis displayed once the test program completes. This is a shortcoming of 75*b0d29bc4SBrooks Davis the new parallel execution engine and will be resolved. 76*b0d29bc4SBrooks Davis 77*b0d29bc4SBrooks Davis* Removed the external C-based testers code in favor of the new built-in 78*b0d29bc4SBrooks Davis implementations. The new approach feels significantly faster than the 79*b0d29bc4SBrooks Davis previous one. 80*b0d29bc4SBrooks Davis 81*b0d29bc4SBrooks Davis* Fixed the handling of relative paths in the `fs.*` functions available 82*b0d29bc4SBrooks Davis in `Kyuafile`s. All paths are now resolved relative to the location of 83*b0d29bc4SBrooks Davis the caller `Kyuafile`. `Kyuafile.top` has been updated with these 84*b0d29bc4SBrooks Davis changes and you should update custom copies of this file with the new 85*b0d29bc4SBrooks Davis version. 86*b0d29bc4SBrooks Davis 87*b0d29bc4SBrooks Davis* Changed temporary directory creation to always grant search 88*b0d29bc4SBrooks Davis permissions on temporary directories. This is to prevent potential 89*b0d29bc4SBrooks Davis problems when running Kyua as root and executing test cases that require 90*b0d29bc4SBrooks Davis dropping privileges (as they may later be unable to use absolute paths 91*b0d29bc4SBrooks Davis that point inside their work directory). 92*b0d29bc4SBrooks Davis 93*b0d29bc4SBrooks Davis* The cleanup of work directories does not longer attempt to deal with 94*b0d29bc4SBrooks Davis mount points. If a test case mounts a file system and forgets to unmount 95*b0d29bc4SBrooks Davis it, the mount point will be left behind. It is now the responsibility of 96*b0d29bc4SBrooks Davis the test case to clean after itself. The reasons for this change are 97*b0d29bc4SBrooks Davis simplicity and clarity: there are many more things that a test case can 98*b0d29bc4SBrooks Davis do that have side-effects on the system and Kyua cannot protect against 99*b0d29bc4SBrooks Davis them all, so it is better to just have the test undo anything it might 100*b0d29bc4SBrooks Davis have done. 101*b0d29bc4SBrooks Davis 102*b0d29bc4SBrooks Davis* Improved `kyua report --verbose` to properly handle environment 103*b0d29bc4SBrooks Davis variables with continuation lines in them, and fixed the integration 104*b0d29bc4SBrooks Davis tests for this command to avoid false negatives. 105*b0d29bc4SBrooks Davis 106*b0d29bc4SBrooks Davis* Changed the configuration file format to accept the definition of 107*b0d29bc4SBrooks Davis unknown variables without declaring them local. The syntax version 108*b0d29bc4SBrooks Davis number remains at 2. This is to allow configuration files for newer Kyua 109*b0d29bc4SBrooks Davis versions to work on older Kyua versions, as there is no reason to forbid 110*b0d29bc4SBrooks Davis this. 111*b0d29bc4SBrooks Davis 112*b0d29bc4SBrooks Davis* Fixed stacktrace gathering with FreeBSD's ancient version of GDB. 113*b0d29bc4SBrooks Davis GDB 6.1.1 (circa 2004) does not have the `-ex` flag so we need to 114*b0d29bc4SBrooks Davis generate a temporary GDB script and feed it to GDB with `-x` instead. 115*b0d29bc4SBrooks Davis 116*b0d29bc4SBrooks Davis* Issue #136: Fixed the XML escaping in the JUnit output so that 117*b0d29bc4SBrooks Davis non-printable characters are properly handled when they appear in the 118*b0d29bc4SBrooks Davis process's stdout or stderr. 119*b0d29bc4SBrooks Davis 120*b0d29bc4SBrooks Davis* Issue #141: Improved reporting of errors triggered by sqlite3. In 121*b0d29bc4SBrooks Davis particular, all error messages are now tagged with their corresponding 122*b0d29bc4SBrooks Davis database filename and, if they are API-level errors, the name of the 123*b0d29bc4SBrooks Davis sqlite3 function that caused them. 124*b0d29bc4SBrooks Davis 125*b0d29bc4SBrooks Davis* Issue #144: Improved documentation on the support for custom properties 126*b0d29bc4SBrooks Davis in the test metadata. 127*b0d29bc4SBrooks Davis 128*b0d29bc4SBrooks Davis* Converted the `INSTALL`, `NEWS`, and `README` distribution documents to 129*b0d29bc4SBrooks Davis Markdown for better formatting online. 130*b0d29bc4SBrooks Davis 131*b0d29bc4SBrooks Davis 132*b0d29bc4SBrooks DavisChanges in version 0.11 133*b0d29bc4SBrooks Davis----------------------- 134*b0d29bc4SBrooks Davis 135*b0d29bc4SBrooks Davis**Released on October 23rd, 2014.** 136*b0d29bc4SBrooks Davis 137*b0d29bc4SBrooks Davis* Added support to print the details of all test cases (metadata and 138*b0d29bc4SBrooks Davis their output) to `report`. This is via a new `--verbose` flag which 139*b0d29bc4SBrooks Davis replaces the previous `--show-context`. 140*b0d29bc4SBrooks Davis 141*b0d29bc4SBrooks Davis* Added support to specify the amount of physical disk space required 142*b0d29bc4SBrooks Davis by a test case. This is in the form of a new `required_disk_space` 143*b0d29bc4SBrooks Davis metadata property, which can also be provided by ATF test cases as 144*b0d29bc4SBrooks Davis `require.diskspace`. 145*b0d29bc4SBrooks Davis 146*b0d29bc4SBrooks Davis* Assimilated the contents of all the `kyua-*-tester(1)` and 147*b0d29bc4SBrooks Davis `kyua-*-interface(7)` manual pages into more relevant places. In 148*b0d29bc4SBrooks Davis particular, added more details on test program registration and their 149*b0d29bc4SBrooks Davis metadata to `kyuafile(5)`, and added `kyua-test-isolation(7)` 150*b0d29bc4SBrooks Davis describing the isolation features of the test execution. 151*b0d29bc4SBrooks Davis 152*b0d29bc4SBrooks Davis* Assimilated the contents of all auxiliary manual pages, including 153*b0d29bc4SBrooks Davis `kyua-build-root(7)`, `kyua-results-files(7)`, `kyua-test-filters(7)` 154*b0d29bc4SBrooks Davis and `kyua-test-isolation(7)`, into the relevant command-specific 155*b0d29bc4SBrooks Davis manual pages. This is for easier discoverability of relevant 156*b0d29bc4SBrooks Davis information when reading how specific Kyua commands work. 157*b0d29bc4SBrooks Davis 158*b0d29bc4SBrooks Davis* Issue #30: Plumbed through support to query configuration variables 159*b0d29bc4SBrooks Davis from ATF's test case heads. This resolves the confusing situation 160*b0d29bc4SBrooks Davis where test cases could only do this from their body and cleanup 161*b0d29bc4SBrooks Davis routines. 162*b0d29bc4SBrooks Davis 163*b0d29bc4SBrooks Davis* Issue #49: Extended `report` to support test case filters as 164*b0d29bc4SBrooks Davis command-line arguments. Combined with `--verbose`, this allows 165*b0d29bc4SBrooks Davis inspecting the details of a test case failure after execution. 166*b0d29bc4SBrooks Davis 167*b0d29bc4SBrooks Davis* Issue #55: Deprecated support for specifying `test_suite` overrides on 168*b0d29bc4SBrooks Davis a test program basis. This idiom should not be used but support for 169*b0d29bc4SBrooks Davis it remains in place. 170*b0d29bc4SBrooks Davis 171*b0d29bc4SBrooks Davis* Issue #72: Added caching support to the `getcwd(3)` test in configure 172*b0d29bc4SBrooks Davis so that the result can be overriden for cross-compilation purposes. 173*b0d29bc4SBrooks Davis 174*b0d29bc4SBrooks Davis* Issue #83: Changed manual page headings to include a `kyua` prefix in 175*b0d29bc4SBrooks Davis their name. This prevents some possible confusion when displaying, 176*b0d29bc4SBrooks Davis for example, the `kyua-test` manual page with a plain name of `test`. 177*b0d29bc4SBrooks Davis 178*b0d29bc4SBrooks Davis* Issue #84: Started passing test-suite configuration variables to plain 179*b0d29bc4SBrooks Davis and TAP test programs via the environment. The name of the 180*b0d29bc4SBrooks Davis environment variables set this way is prefixed by `TEST_ENV_`, so a 181*b0d29bc4SBrooks Davis configuration variable of the form 182*b0d29bc4SBrooks Davis `test_suites.some_name.allow_unsafe_ops=yes` in `kyua.conf` becomes 183*b0d29bc4SBrooks Davis `TEST_ENV_allow_unsafe_ops=YES` in the environment. 184*b0d29bc4SBrooks Davis 185*b0d29bc4SBrooks Davis* Issues #97 and #116: Fixed the build on Illumos. 186*b0d29bc4SBrooks Davis 187*b0d29bc4SBrooks Davis* Issue #102: Set `TMPDIR` to the test case's work directory when running 188*b0d29bc4SBrooks Davis the test case. If the test case happens to use the `mktemp(3)` family 189*b0d29bc4SBrooks Davis of functions (due to misunderstandings on how Kyua works or due to 190*b0d29bc4SBrooks Davis the reuse of legacy test code), we don't want it to easily escape the 191*b0d29bc4SBrooks Davis automanaged work directory. 192*b0d29bc4SBrooks Davis 193*b0d29bc4SBrooks Davis* Issue #103: Started being more liberal in the parsing of TAP test 194*b0d29bc4SBrooks Davis results by treating the number in `ok` and `not ok` lines as optional. 195*b0d29bc4SBrooks Davis 196*b0d29bc4SBrooks Davis* Issue #105: Started using tmpfs instead of md as a temporary file 197*b0d29bc4SBrooks Davis system for tests in FreeBSD so that we do not leak `md(4)` devices. 198*b0d29bc4SBrooks Davis 199*b0d29bc4SBrooks Davis* Issue #109: Changed the privilege dropping code to start properly 200*b0d29bc4SBrooks Davis dropping group privileges when `unprivileged_user` is set. Also fixes 201*b0d29bc4SBrooks Davis `testers/run_test:fork_wait__unprivileged_group`. 202*b0d29bc4SBrooks Davis 203*b0d29bc4SBrooks Davis* Issue #110: Changed `help` to display version information and clarified 204*b0d29bc4SBrooks Davis the purpose of the `about` command in its documentation. 205*b0d29bc4SBrooks Davis 206*b0d29bc4SBrooks Davis* Issue #111: Fixed crash when defining a test program in a `Kyuafile` 207*b0d29bc4SBrooks Davis that has not yet specified the test suite name. 208*b0d29bc4SBrooks Davis 209*b0d29bc4SBrooks Davis* Issue #114: Improved the `kyuafile(5)` manual page by clarifying the 210*b0d29bc4SBrooks Davis restrictions of the `include()` directive and by adding abundant 211*b0d29bc4SBrooks Davis examples. 212*b0d29bc4SBrooks Davis 213*b0d29bc4SBrooks Davis 214*b0d29bc4SBrooks DavisChanges in version 0.10 215*b0d29bc4SBrooks Davis----------------------- 216*b0d29bc4SBrooks Davis 217*b0d29bc4SBrooks Davis**Experimental version released on August 14th, 2014.** 218*b0d29bc4SBrooks Davis 219*b0d29bc4SBrooks Davis* Merged `kyua-cli` and `kyua-testers` into a single `kyua` package. 220*b0d29bc4SBrooks Davis 221*b0d29bc4SBrooks Davis* Dropped the `kyua-atf-compat` package. 222*b0d29bc4SBrooks Davis 223*b0d29bc4SBrooks Davis* Issue #100: Do not try to drop privileges to `unprivileged_user` when we 224*b0d29bc4SBrooks Davis are already running as an unprivileged user. Doing so is not possible 225*b0d29bc4SBrooks Davis and thus causes spurious test failures when the current user is not 226*b0d29bc4SBrooks Davis root and the current user and `unprivileged_user` do not match. 227*b0d29bc4SBrooks Davis 228*b0d29bc4SBrooks Davis* Issue #79: Mention `kyua.conf(5)` in the *See also* section of `kyua(1)`. 229*b0d29bc4SBrooks Davis 230*b0d29bc4SBrooks Davis* Issue #75: Change the `rewrite__expected_signal__bad_arg` test in 231*b0d29bc4SBrooks Davis `testers/atf_result_test` to use a different signal value. This is to 232*b0d29bc4SBrooks Davis prevent triggering a core dump that made the test fail in some platforms. 233*b0d29bc4SBrooks Davis 234*b0d29bc4SBrooks Davis 235*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.9 236*b0d29bc4SBrooks Davis------------------------------- 237*b0d29bc4SBrooks Davis 238*b0d29bc4SBrooks Davis**Experimental version released on August 8th, 2014.** 239*b0d29bc4SBrooks Davis 240*b0d29bc4SBrooks DavisMajor changes: 241*b0d29bc4SBrooks Davis 242*b0d29bc4SBrooks DavisThe internal architecture of Kyua to record the results of test suite 243*b0d29bc4SBrooks Davisruns has completely changed in this release. Kyua no longer stores all 244*b0d29bc4SBrooks Davisthe different test suite run results as different "actions" within the 245*b0d29bc4SBrooks Davissingle `store.db` database. Instead, Kyua now generates a separate 246*b0d29bc4SBrooks Davisresults file inside `~/.kyua/store/` for every test suite run. 247*b0d29bc4SBrooks Davis 248*b0d29bc4SBrooks DavisDue to the complexity involved in the migration process and the little 249*b0d29bc4SBrooks Davisneed for it, this is probably going to be the only release where the 250*b0d29bc4SBrooks Davis`db-migrate` command is able to convert an old `store.db` file to the 251*b0d29bc4SBrooks Davisnew scheme. 252*b0d29bc4SBrooks Davis 253*b0d29bc4SBrooks DavisChanges in more detail: 254*b0d29bc4SBrooks Davis 255*b0d29bc4SBrooks Davis* Added the `report-junit` command to generate JUnit XML result files. 256*b0d29bc4SBrooks Davis The output has been verified to work within Jenkins. 257*b0d29bc4SBrooks Davis 258*b0d29bc4SBrooks Davis* Switched to results files specific to their corresponding test suite 259*b0d29bc4SBrooks Davis run. The unified `store.db` file is now gone: `kyua test` creates a 260*b0d29bc4SBrooks Davis new results file for every invocation under `~/.kyua/store/` and the 261*b0d29bc4SBrooks Davis `kyua report*` commands are able to locate the latest file for a 262*b0d29bc4SBrooks Davis corresponding test suite automatically. 263*b0d29bc4SBrooks Davis 264*b0d29bc4SBrooks Davis* The `db-migrate` command takes an old `store.db` file and generates 265*b0d29bc4SBrooks Davis one results file for every previously-recorded action, later deleting 266*b0d29bc4SBrooks Davis the `store.db` file. 267*b0d29bc4SBrooks Davis 268*b0d29bc4SBrooks Davis* The `--action` flag has been removed from all commands that accepted 269*b0d29bc4SBrooks Davis it. This has been superseded by the tests results files. 270*b0d29bc4SBrooks Davis 271*b0d29bc4SBrooks Davis* The `--store` flag that many commands took has been renamed to 272*b0d29bc4SBrooks Davis `--results-file` in line with the semantical changes. 273*b0d29bc4SBrooks Davis 274*b0d29bc4SBrooks Davis* The `db-exec` command no longer creates an empty database when none 275*b0d29bc4SBrooks Davis is found. This command is now intended to run only over existing 276*b0d29bc4SBrooks Davis files. 277*b0d29bc4SBrooks Davis 278*b0d29bc4SBrooks Davis 279*b0d29bc4SBrooks DavisChanges in kyua-testers version 0.3 280*b0d29bc4SBrooks Davis----------------------------------- 281*b0d29bc4SBrooks Davis 282*b0d29bc4SBrooks Davis**Experimental version released on August 8th, 2014.** 283*b0d29bc4SBrooks Davis 284*b0d29bc4SBrooks Davis* Made the testers set a "sanitized" value for the `HOME` environment 285*b0d29bc4SBrooks Davis variable where, for example, consecutive and trailing slashes have 286*b0d29bc4SBrooks Davis been cleared. Mac OS X has a tendency to append a trailing slash to 287*b0d29bc4SBrooks Davis the value of `TMPDIR`, which can cause third-party tests to fail if 288*b0d29bc4SBrooks Davis they compare `${HOME}` with `$(pwd)`. 289*b0d29bc4SBrooks Davis 290*b0d29bc4SBrooks Davis* Issues #85, #86, #90 and #92: Made the TAP parser more complete: mark 291*b0d29bc4SBrooks Davis test cases reported as `TODO` or `SKIP` as passed; handle skip plans; 292*b0d29bc4SBrooks Davis ignore lines that look like `ok` and `not ok` but aren't results; and 293*b0d29bc4SBrooks Davis handle test programs that report a pass but exit with a non-zero code. 294*b0d29bc4SBrooks Davis 295*b0d29bc4SBrooks Davis 296*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.8 297*b0d29bc4SBrooks Davis------------------------------- 298*b0d29bc4SBrooks Davis 299*b0d29bc4SBrooks Davis**Experimental version released on December 7th, 2013.** 300*b0d29bc4SBrooks Davis 301*b0d29bc4SBrooks Davis* Added support for Lutok 0.4. 302*b0d29bc4SBrooks Davis 303*b0d29bc4SBrooks Davis* Issue #24: Plug the bootstrap tests back into the test suite. Fixes 304*b0d29bc4SBrooks Davis in `kyua-testers` 0.2 to isolate test cases into their own sessions 305*b0d29bc4SBrooks Davis should allow these to run fine. 306*b0d29bc4SBrooks Davis 307*b0d29bc4SBrooks Davis* Issue #74: Changed the `kyuafile(5)` parser to automatically discover 308*b0d29bc4SBrooks Davis existing tester interfaces. The various `*_test_program()` functions 309*b0d29bc4SBrooks Davis will now exist (or not) based on tester availability, which simplifies 310*b0d29bc4SBrooks Davis the addition of new testers or the selective installation of them. 311*b0d29bc4SBrooks Davis 312*b0d29bc4SBrooks Davis 313*b0d29bc4SBrooks DavisChanges in kyua-testers version 0.2 314*b0d29bc4SBrooks Davis----------------------------------- 315*b0d29bc4SBrooks Davis 316*b0d29bc4SBrooks Davis**Experimental version released on December 7th, 2013.** 317*b0d29bc4SBrooks Davis 318*b0d29bc4SBrooks Davis* Issue #74: Added the `kyua-tap-tester`, a new backend to interact with 319*b0d29bc4SBrooks Davis test programs that comply with the Test Anything Protocol. 320*b0d29bc4SBrooks Davis 321*b0d29bc4SBrooks Davis* Issue #69: Cope with the lack of `AM_PROG_AR` in `configure.ac`, which 322*b0d29bc4SBrooks Davis first appeared in Automake 1.11.2. Fixes a problem in Ubuntu 10.04 323*b0d29bc4SBrooks Davis LTS, which appears stuck in 1.11.1. 324*b0d29bc4SBrooks Davis 325*b0d29bc4SBrooks Davis* Issue #24: Improve test case isolation by confining the tests to their 326*b0d29bc4SBrooks Davis own session instead of just to their own process group. 327*b0d29bc4SBrooks Davis 328*b0d29bc4SBrooks Davis 329*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.7 330*b0d29bc4SBrooks Davis------------------------------- 331*b0d29bc4SBrooks Davis 332*b0d29bc4SBrooks Davis**Experimental version released on October 18th, 2013.** 333*b0d29bc4SBrooks Davis 334*b0d29bc4SBrooks Davis* Made failures from testers more resilent. If a tester fails, the 335*b0d29bc4SBrooks Davis corresponding test case will be marked as broken instead of causing 336*b0d29bc4SBrooks Davis kyua to exit. 337*b0d29bc4SBrooks Davis 338*b0d29bc4SBrooks Davis* Added the `--results-filter` option to the `report-html` command and 339*b0d29bc4SBrooks Davis set its default value to skip passed results from HTML reports. This 340*b0d29bc4SBrooks Davis is to keep these reports more succint and to avoid generating tons of 341*b0d29bc4SBrooks Davis detail files that will be, in general, useless. 342*b0d29bc4SBrooks Davis 343*b0d29bc4SBrooks Davis* Switched to use Lutok 0.3 to gain compatibility with Lua 5.2. 344*b0d29bc4SBrooks Davis 345*b0d29bc4SBrooks Davis* Issue #69: Cope with the lack of `AM_PROG_AR` in `configure.ac`, which 346*b0d29bc4SBrooks Davis first appeared in Automake 1.11.2. Fixes a problem in Ubuntu 10.04 347*b0d29bc4SBrooks Davis LTS, which appears stuck in 1.11.1. 348*b0d29bc4SBrooks Davis 349*b0d29bc4SBrooks Davis 350*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.6 351*b0d29bc4SBrooks Davis------------------------------- 352*b0d29bc4SBrooks Davis 353*b0d29bc4SBrooks Davis**Experimental version released on February 22nd, 2013.** 354*b0d29bc4SBrooks Davis 355*b0d29bc4SBrooks Davis* Issue #36: Changed `kyua help` to not fail when the configuration file 356*b0d29bc4SBrooks Davis is bogus. Help should always work. 357*b0d29bc4SBrooks Davis 358*b0d29bc4SBrooks Davis* Issue #37: Simplified the `syntax()` calls in configuration and 359*b0d29bc4SBrooks Davis `Kyuafile` files to only specify the requested version instead of also 360*b0d29bc4SBrooks Davis the format name. The format name is implied by the file being loaded, so 361*b0d29bc4SBrooks Davis there is no use in the caller having to specify it. The version number 362*b0d29bc4SBrooks Davis of these file formats has been bumped to 2. 363*b0d29bc4SBrooks Davis 364*b0d29bc4SBrooks Davis* Issue #39: Added per-test-case metadata values to the HTML reports. 365*b0d29bc4SBrooks Davis 366*b0d29bc4SBrooks Davis* Issue #40: Rewrote the documentation as manual pages and removed the 367*b0d29bc4SBrooks Davis previous GNU Info document. 368*b0d29bc4SBrooks Davis 369*b0d29bc4SBrooks Davis* Issue #47: Started using the independent testers in the `kyua-testers` 370*b0d29bc4SBrooks Davis package to run the test cases. Kyua does not implement the logic to 371*b0d29bc4SBrooks Davis invoke test cases any more, which provides for better modularity, 372*b0d29bc4SBrooks Davis extensibility and robustness. 373*b0d29bc4SBrooks Davis 374*b0d29bc4SBrooks Davis* Issue #57: Added support to specify arbitrary metadata properties for 375*b0d29bc4SBrooks Davis test programs right from the `Kyuafile`. This is to make plain test 376*b0d29bc4SBrooks Davis programs more versatile, by allowing them to specify any of the 377*b0d29bc4SBrooks Davis requirements (allowed architectures, required files, etc.) supported 378*b0d29bc4SBrooks Davis by Kyua. 379*b0d29bc4SBrooks Davis 380*b0d29bc4SBrooks Davis* Reduced automatic screen line wrapping of messages to the `help` 381*b0d29bc4SBrooks Davis command and the output of tables by `db-exec`. Wrapping any other 382*b0d29bc4SBrooks Davis messages (specially anything going to stderr) was very annoying 383*b0d29bc4SBrooks Davis because it prevented natural copy/pasting of text. 384*b0d29bc4SBrooks Davis 385*b0d29bc4SBrooks Davis* Increased the granularity of the error codes returned by `kyua(1)` to 386*b0d29bc4SBrooks Davis denote different error conditions. This avoids the overload of `1` to 387*b0d29bc4SBrooks Davis indicate both "expected" errors from specific subcommands and 388*b0d29bc4SBrooks Davis unexpected errors caused by the internals of the code. The manual now 389*b0d29bc4SBrooks Davis correctly explain how the exit codes behave on a command basis. 390*b0d29bc4SBrooks Davis 391*b0d29bc4SBrooks Davis* Optimized the database schema to make report generation almost 392*b0d29bc4SBrooks Davis instantaneous. 393*b0d29bc4SBrooks Davis 394*b0d29bc4SBrooks Davis* Bumped the database schema to 2. The database now records the 395*b0d29bc4SBrooks Davis metadata of both test programs and test cases generically, without 396*b0d29bc4SBrooks Davis knowledge of their interface. 397*b0d29bc4SBrooks Davis 398*b0d29bc4SBrooks Davis* Added the `db-migrate` command to provide a mechanism to upgrade a 399*b0d29bc4SBrooks Davis database with an old schema to the current schema. 400*b0d29bc4SBrooks Davis 401*b0d29bc4SBrooks Davis* Removed the GDB build-time configuration variable. This is now part 402*b0d29bc4SBrooks Davis of the `kyua-testers` package. 403*b0d29bc4SBrooks Davis 404*b0d29bc4SBrooks Davis* Issue #31: Rewrote the `Kyuafile` parsing code in C++, which results in 405*b0d29bc4SBrooks Davis a much simpler implementation. As a side-effect, this gets rid of the 406*b0d29bc4SBrooks Davis external Lua files required by `kyua`, which in turn make the tool 407*b0d29bc4SBrooks Davis self-contained. 408*b0d29bc4SBrooks Davis 409*b0d29bc4SBrooks Davis* Added caching of various configure test results (particularly in those 410*b0d29bc4SBrooks Davis tests that need to execute a test program) so that cross-compilers can 411*b0d29bc4SBrooks Davis predefine the results of the tests without having to run the 412*b0d29bc4SBrooks Davis executables. 413*b0d29bc4SBrooks Davis 414*b0d29bc4SBrooks Davis 415*b0d29bc4SBrooks DavisChanges in kyua-testers version 0.1 416*b0d29bc4SBrooks Davis----------------------------------- 417*b0d29bc4SBrooks Davis 418*b0d29bc4SBrooks Davis**Experimental version released on February 19th, 2013.** 419*b0d29bc4SBrooks Davis 420*b0d29bc4SBrooks DavisThis is the first public release of the `kyua-testers` package. 421*b0d29bc4SBrooks Davis 422*b0d29bc4SBrooks DavisThe goal of this first release is to adopt all the test case execution 423*b0d29bc4SBrooks Daviscode of `kyua-cli` 0.5 and ship it as a collection of independent tester 424*b0d29bc4SBrooks Davisbinaries. The `kyua-cli` package will rely on these binaries to run the 425*b0d29bc4SBrooks Davistests, which provides better modularity and simplicity to the 426*b0d29bc4SBrooks Davisarchitecture of Kyua. 427*b0d29bc4SBrooks Davis 428*b0d29bc4SBrooks DavisThe code in this package is all C as opposed to the current C++ codebase 429*b0d29bc4SBrooks Davisof `kyua-cli`, which means that the overall build times of Kyua are now 430*b0d29bc4SBrooks Davisreduced. 431*b0d29bc4SBrooks Davis 432*b0d29bc4SBrooks Davis 433*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.5 434*b0d29bc4SBrooks Davis------------------------------- 435*b0d29bc4SBrooks Davis 436*b0d29bc4SBrooks Davis**Experimental version released on July 10th, 2012.** 437*b0d29bc4SBrooks Davis 438*b0d29bc4SBrooks Davis* Issue #15: Added automatic stacktrace gathering of crashing test cases. 439*b0d29bc4SBrooks Davis This relies on GDB and is a best-effort operation. 440*b0d29bc4SBrooks Davis 441*b0d29bc4SBrooks Davis* Issue #32: Added the `--build-root` option to the debug, list and test 442*b0d29bc4SBrooks Davis commands. This allows executing test programs from a different 443*b0d29bc4SBrooks Davis directory than where the `Kyuafile` scripts live. See the *Build roots* 444*b0d29bc4SBrooks Davis section in the manual for more details. 445*b0d29bc4SBrooks Davis 446*b0d29bc4SBrooks Davis* Issue #33: Removed the `kyuaify.sh` script. This has been renamed to 447*b0d29bc4SBrooks Davis atf2kyua and moved to the `kyua-atf-compat` module, where it ships as a 448*b0d29bc4SBrooks Davis first-class utility (with a manual page and tests). 449*b0d29bc4SBrooks Davis 450*b0d29bc4SBrooks Davis* Issue #34: Changed the HTML reports to include the stdout and stderr of 451*b0d29bc4SBrooks Davis every test case. 452*b0d29bc4SBrooks Davis 453*b0d29bc4SBrooks Davis* Fixed the build when using a "build directory" and a clean source tree 454*b0d29bc4SBrooks Davis from the repository. 455*b0d29bc4SBrooks Davis 456*b0d29bc4SBrooks Davis 457*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.4 458*b0d29bc4SBrooks Davis------------------------------- 459*b0d29bc4SBrooks Davis 460*b0d29bc4SBrooks Davis**Experimental version released on June 6th, 2012.** 461*b0d29bc4SBrooks Davis 462*b0d29bc4SBrooks Davis* Added the `report-html` command to generate HTML reports of the 463*b0d29bc4SBrooks Davis execution of any recorded action. 464*b0d29bc4SBrooks Davis 465*b0d29bc4SBrooks Davis* Changed the `--output` flag of the `report` command to only take a 466*b0d29bc4SBrooks Davis path to the target file, not its format. Different formats are better 467*b0d29bc4SBrooks Davis supported by implementing different subcommands, as the options they 468*b0d29bc4SBrooks Davis may receive will vary from format to format. 469*b0d29bc4SBrooks Davis 470*b0d29bc4SBrooks Davis* Added a `--with-atf` flag to the configure script to control whether 471*b0d29bc4SBrooks Davis the ATF tests get built or not. May be useful for packaging systems 472*b0d29bc4SBrooks Davis that do not have ATF in them yet. Disabling ATF also cuts down the 473*b0d29bc4SBrooks Davis build time of Kyua significantly, but with the obvious drawbacks. 474*b0d29bc4SBrooks Davis 475*b0d29bc4SBrooks Davis* Grouped `kyua` subcommands by topic both in the output of `help` and 476*b0d29bc4SBrooks Davis in the documentation. In general, the user needs to be aware of 477*b0d29bc4SBrooks Davis commands that rely on a current project and those commands that rely 478*b0d29bc4SBrooks Davis purely on the database to generate reports. 479*b0d29bc4SBrooks Davis 480*b0d29bc4SBrooks Davis* Made `help` print the descriptions of options and commands properly 481*b0d29bc4SBrooks Davis tabulated. 482*b0d29bc4SBrooks Davis 483*b0d29bc4SBrooks Davis* Changed most informational messages to automatically wrap on screen 484*b0d29bc4SBrooks Davis boundaries. 485*b0d29bc4SBrooks Davis 486*b0d29bc4SBrooks Davis* Rewrote the configuration file parsing module for extensibility. This 487*b0d29bc4SBrooks Davis will allow future versions of Kyua to provide additional user-facing 488*b0d29bc4SBrooks Davis options in the configuration file. 489*b0d29bc4SBrooks Davis 490*b0d29bc4SBrooks Davis No syntax changes have been made, so existing configuration files 491*b0d29bc4SBrooks Davis (version 1) will continue to be parsed without problems. There is one 492*b0d29bc4SBrooks Davis little exception though: all variables under the top-level 493*b0d29bc4SBrooks Davis `test_suites` tree must be declared as strings. 494*b0d29bc4SBrooks Davis 495*b0d29bc4SBrooks Davis Similarly, the `-v` and `--variable` flags to the command line must 496*b0d29bc4SBrooks Davis now carry a `test_suites.` prefix when referencing any variables under 497*b0d29bc4SBrooks Davis such tree. 498*b0d29bc4SBrooks Davis 499*b0d29bc4SBrooks Davis 500*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.3 501*b0d29bc4SBrooks Davis------------------------------- 502*b0d29bc4SBrooks Davis 503*b0d29bc4SBrooks Davis**Experimental version released on February 24th, 2012.** 504*b0d29bc4SBrooks Davis 505*b0d29bc4SBrooks Davis* Made the `test` command record the results of the executed test 506*b0d29bc4SBrooks Davis cases into a SQLite database. As a side effect, `test` now supports a 507*b0d29bc4SBrooks Davis `--store` option to indicate where the database lives. 508*b0d29bc4SBrooks Davis 509*b0d29bc4SBrooks Davis* Added the `report` command to generate plain-text reports of the 510*b0d29bc4SBrooks Davis test results stored in the database. The interface of this command is 511*b0d29bc4SBrooks Davis certainly subject to change at this point. 512*b0d29bc4SBrooks Davis 513*b0d29bc4SBrooks Davis* Added the `db-exec` command to directly interact with the store 514*b0d29bc4SBrooks Davis database. 515*b0d29bc4SBrooks Davis 516*b0d29bc4SBrooks Davis* Issue #28: Added support for the `require.memory` test case property 517*b0d29bc4SBrooks Davis introduced in ATF 0.15. 518*b0d29bc4SBrooks Davis 519*b0d29bc4SBrooks Davis* Renamed the user-specific configuration file from `~/.kyuarc` to 520*b0d29bc4SBrooks Davis `~/.kyua/kyua.conf` for consistency with other files stored in the 521*b0d29bc4SBrooks Davis `~/.kyua/` subdirectory. 522*b0d29bc4SBrooks Davis 523*b0d29bc4SBrooks Davis* Switched to use Lutok instead of our own wrappers over the Lua C 524*b0d29bc4SBrooks Davis library. Lutok is just what used to be our own utils::lua module, but 525*b0d29bc4SBrooks Davis is now distributed separately. 526*b0d29bc4SBrooks Davis 527*b0d29bc4SBrooks Davis* Removed the `Atffile`s from the source tree. Kyua is stable enough 528*b0d29bc4SBrooks Davis to generate trustworthy reports, and we do not want to give the 529*b0d29bc4SBrooks Davis impression that atf-run / atf-report are still supported. 530*b0d29bc4SBrooks Davis 531*b0d29bc4SBrooks Davis* Enabled logging to stderr for our own test programs. This makes it 532*b0d29bc4SBrooks Davis slightly easier to debug problems in our own code when we get a 533*b0d29bc4SBrooks Davis failing test. 534*b0d29bc4SBrooks Davis 535*b0d29bc4SBrooks Davis 536*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.2 537*b0d29bc4SBrooks Davis------------------------------- 538*b0d29bc4SBrooks Davis 539*b0d29bc4SBrooks Davis**Experimental version released on August 24th, 2011.** 540*b0d29bc4SBrooks Davis 541*b0d29bc4SBrooks DavisThe biggest change in this release is the ability for Kyua to run test 542*b0d29bc4SBrooks Davisprograms implemented using different frameworks. What this means is 543*b0d29bc4SBrooks Davisthat, now, a Kyua test suite can include not only ATF-based test 544*b0d29bc4SBrooks Davisprograms, but also "legacy" (aka plain) test programs that do not use 545*b0d29bc4SBrooks Davisany framework. I.e. if you have tests that are simple programs that 546*b0d29bc4SBrooks Davisexit with 0 on success and 1 on failure, you can plug them in into a 547*b0d29bc4SBrooks DavisKyua test suite. 548*b0d29bc4SBrooks Davis 549*b0d29bc4SBrooks DavisOther than this, there have been several user-visible changes. The most 550*b0d29bc4SBrooks Davisimportant are the addition of the new `config` and `debug` subcommands 551*b0d29bc4SBrooks Davisto the `kyua` binary. The former can be used to inspect the runtime 552*b0d29bc4SBrooks Davisconfiguration of Kyua after parsing, and the latter is useful to 553*b0d29bc4SBrooks Davisinteract with failing tests cases in order to get more data about the 554*b0d29bc4SBrooks Davisfailure itself. 555*b0d29bc4SBrooks Davis 556*b0d29bc4SBrooks DavisWithout further ado, here comes the itemized list of changes: 557*b0d29bc4SBrooks Davis 558*b0d29bc4SBrooks Davis* Generalized the run-time engine to support executing test programs 559*b0d29bc4SBrooks Davis that implement different interfaces. Test programs that use the ATF 560*b0d29bc4SBrooks Davis libraries are just a special case of this. (Issue #18.) 561*b0d29bc4SBrooks Davis 562*b0d29bc4SBrooks Davis* Added support to the engine to run `plain` test programs: i.e. test 563*b0d29bc4SBrooks Davis programs that do not use any framework and report their pass/fail 564*b0d29bc4SBrooks Davis status as an exit code. This is to simplify the integration of legacy 565*b0d29bc4SBrooks Davis test programs into a test suite, and also to demonstrate that the 566*b0d29bc4SBrooks Davis run-time engine is generic enough to support different test 567*b0d29bc4SBrooks Davis interfaces. (Issue #18.) 568*b0d29bc4SBrooks Davis 569*b0d29bc4SBrooks Davis* Added the `debug` subcommand. This command allows end users to tweak 570*b0d29bc4SBrooks Davis the execution of a specific test case and to poke into the behavior of 571*b0d29bc4SBrooks Davis its execution. At the moment, all this command allows is to view the 572*b0d29bc4SBrooks Davis stdout and stderr of the command in real time (which the `test` 573*b0d29bc4SBrooks Davis command currently completely hides). 574*b0d29bc4SBrooks Davis 575*b0d29bc4SBrooks Davis* Added the `config` subcommand. This command allows the end user to 576*b0d29bc4SBrooks Davis inspect the current configuration variables after evaluation, without 577*b0d29bc4SBrooks Davis having to read through configuration files. (Issue #11.) 578*b0d29bc4SBrooks Davis 579*b0d29bc4SBrooks Davis* Removed the `test_suites_var` function from configuration files. This 580*b0d29bc4SBrooks Davis was used to set the value of test-suite-sepecific variables, but it 581*b0d29bc4SBrooks Davis was ugly-looking. It is now possible to use the more natural syntax 582*b0d29bc4SBrooks Davis `test_suites.<test-suite-name>.<variable> = <value>`. (Issue #11.) 583*b0d29bc4SBrooks Davis 584*b0d29bc4SBrooks Davis* Added a mechanism to disable the loading of configuration files 585*b0d29bc4SBrooks Davis altogether. Needed for testing purposes and for scriptability. 586*b0d29bc4SBrooks Davis Available by passing the `--config=none` flag. 587*b0d29bc4SBrooks Davis 588*b0d29bc4SBrooks Davis* Enabled detection of unused parameters and variables in the code and 589*b0d29bc4SBrooks Davis fixed all warnings. (Issue #23.) 590*b0d29bc4SBrooks Davis 591*b0d29bc4SBrooks Davis* Changed the behavior of "developer mode". Compiler warnings are now 592*b0d29bc4SBrooks Davis enabled unconditionally regardless of whether we are in developer mode 593*b0d29bc4SBrooks Davis or not; developer mode is now only used to perform strict warning 594*b0d29bc4SBrooks Davis checks and to enable assertions. Additionally, developer mode is now 595*b0d29bc4SBrooks Davis only automatically enabled when building from the repository, not for 596*b0d29bc4SBrooks Davis formal releases. (Issue #22.) 597*b0d29bc4SBrooks Davis 598*b0d29bc4SBrooks Davis* Fixed many build and portability problems to Debian sid with GCC 4.6.3 599*b0d29bc4SBrooks Davis and Ubuntu 10.04.1 LTS. (Issues #20, #21, #26.) 600*b0d29bc4SBrooks Davis 601*b0d29bc4SBrooks Davis 602*b0d29bc4SBrooks DavisChanges in kyua-cli version 0.1 603*b0d29bc4SBrooks Davis------------------------------- 604*b0d29bc4SBrooks Davis 605*b0d29bc4SBrooks Davis**Experimental version released on June 23rd, 2011.** 606*b0d29bc4SBrooks Davis 607*b0d29bc4SBrooks DavisThis is the first public release of the `kyua-cli` package. 608*b0d29bc4SBrooks Davis 609*b0d29bc4SBrooks DavisThe scope of this release is to provide functional replacement for the 610*b0d29bc4SBrooks Davis`atf-run` utility included in the atf package. At this point, `kyua` 611*b0d29bc4SBrooks Daviscan reliably run the NetBSD 5.99.53 test suite delivering the same 612*b0d29bc4SBrooks Davisresults as `atf-run`. 613*b0d29bc4SBrooks Davis 614*b0d29bc4SBrooks DavisThe reporting facilities of this release are quite limited. There is 615*b0d29bc4SBrooks Davisno replacement for `atf-report` yet, and there is no easy way of 616*b0d29bc4SBrooks Davisdebugging failing test programs other than running them by hand. These 617*b0d29bc4SBrooks Davisfeatures will mark future milestones and therefore be part of other 618*b0d29bc4SBrooks Davisreleases. 619*b0d29bc4SBrooks Davis 620*b0d29bc4SBrooks DavisBe aware that this release has suffered very limited field testing. 621*b0d29bc4SBrooks DavisThe test suite for `kyua-cli` is quite comprehensive, but some bugs may 622*b0d29bc4SBrooks Davisbe left in any place. 623