[[!meta copyright="Copyright © 2010, 2011 Free Software Foundation, Inc."]]

[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

This task may be suitable for [[community/GSoC]]:
[[community/gsoc/project_ideas/testing_framework]]

---

A collection of thoughts with respect to unit testing.

We definitely want to add unit test suites to our code base.

We should select a tool that we like to use, and that is supported (not
abandoned).

  * [SC
    Test](http://web.archive.org/web/20021204193607/sc-archive.codesourcery.com/sc_test)

  * [DejaGnu](http://www.gnu.org/software/dejagnu/) /
    [Expect](http://expect.nist.gov/)

      * used by the [[GCC testsuite|gcc]], [[GDB testsuite|gdb]],
        [[binutils testsuite|binutils]], etc.

  * The [[glibc_testsuite]] has a home-grown system (Makefile-based), likewise
    does the [[Open_POSIX_Test_Suite]].

  * [Kyua](http://code.google.com/p/kyua/) (and its predecessor [ATF](http://www.NetBSD.org/~jmmv/atf/)).

    * Primarily used by NetBSD as its testing framework; FreeBSD is in the process of adopting it.

    * Provides bindings to write tests in C, C++ and POSIX shell. Lua is planned.

    * Builds and runs on many different Unix-based operating systems.

  * [check](http://check.sourceforge.net/)

      * used by some GNU packages, for example GNU PDF (Jose E. Marchesi)

  * CodeSourcery's [QMTest](http://www.codesourcery.com/qmtest)

      * useb by?

      * documentation:

          * <http://www.codesourcery.com/public/qmtest/whitepaper.pdf>

          * <http://www.python.org/workshops/2002-02/papers/01/index.htm>

          * <http://gcc.gnu.org/ml/gcc/2002-05/msg01978.html>

          * <http://www.codesourcery.com/public/qmtest/qmtest-snapshot/share/doc/qmtest/html/tutorial/index.html>

          * <http://www.codesourcery.com/public/qmtest/qmtest-snapshot/share/doc/qmtest/html/manual/index.html>

  * [Git](http://git-scm.com/) has an elaborate unit testsuite, which is also
    used in [Notmuch](http://notmuchmail.org/).

  * [*[ANNOUNCE] ktest.pl: Easy and flexible testing script for Linux Kernel
    Developers*](http://lwn.net/Articles/412302/) by Steven Rostedt,
    2010-10-28.  [v2](http://lwn.net/Articles/414064/), 2010-11-08.

  * <http://autotest.kernel.org/wiki/WhitePaper>


# Related

  * [[nightly_builds]]

      * [[nightly_builds_deb_packages]]

  * <http://www.phoronix-test-suite.com/> -- ``comprehensive testing and
    benchmarking platform''.  This one might be useful for [[performance]]
    testing, too?

  * <http://ltp.sourceforge.net/>

  * [LaBrea](https://github.com/dustin/labrea/wiki), or similar tools can be
    used for modelling certain aspects of system behavior (long response times,
    for example).


# Discussion

See the [[GSoC project idea|community/gsoc/project_ideas/testing_framework]]'s
[[discussion
subpage|community/gsoc/project_ideas/testing_framework/discussion]].