xref: /freebsd/contrib/kyua/NEWS.md (revision b0d29bc47dba79f6f38e67eabadfb4b32ffd9390)
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