| @node Extra tests modules |
| @section Extra tests modules |
| |
| @cindex Extra tests modules |
| @cindex C++ tests modules |
| @cindex tests modules, C++ |
| @cindex long-running tests modules |
| @cindex tests modules, long-running |
| @cindex privileged tests modules |
| @cindex tests modules, privileged |
| @cindex unportable tests modules |
| @cindex tests modules, unportable |
| Test modules can be marked with some special status attributes. When a |
| test module has such an attribute, @code{gnulib-tool --import} will not |
| include it by default. |
| |
| The supported status attributes are: |
| |
| @table @code |
| @item c++-test |
| Indicates that the test is testing C++ interoperability. Such a test is |
| useful in a C++ or mixed C/C++ package, but is useless in a C package. |
| |
| @item longrunning-test |
| Indicates that the test takes a long time to compile or execute (more |
| than five minutes or so). Such a test is better avoided in a release |
| that is made for the general public. |
| |
| @item privileged-test |
| Indicates that the test will request special privileges, for example, |
| ask for the superuser password. Such a test may hang when run |
| non-interactively and is therefore better avoided in a release that is |
| made for the general public. |
| |
| @item unportable-test |
| Indicates that the test is known to fail on some systems, and that |
| there is no workaround about it. Such a test is better avoided in a |
| release that is made for the general public. |
| @end table |
| |
| @code{gnulib-tool --import --with-tests} will not include tests marked with |
| these attributes by default. When @code{gnulib-tool} is invoked with one |
| of the options @code{--with-c++-tests}, @code{--with-longrunning-tests}, |
| @code{--with-privileged-tests}, @code{--with-unportable-tests}, it |
| will include tests despite the corresponding special status attribute. |
| When @code{gnulib-tool} receives the option @code{--with-all-tests}, |
| it will include all tests regardless of their status attributes. |
| |
| @code{gnulib-tool --create-testdir --with-tests} and |
| @code{gnulib-tool --create-megatestdir --with-tests} by default include all |
| tests of modules specified on the command line, regardless of their status |
| attributes. Tests of modules occurring as dependencies are not included |
| by default if they have one of these status attributes. The options |
| @code{--with-c++-tests}, @code{--with-longrunning-tests}, |
| @code{--with-privileged-tests}, @code{--with-unportable-tests} are |
| recognized here as well. Additionally, @code{gnulib-tool} also |
| understands the options @code{--without-c++-tests}, |
| @code{--without-longrunning-tests}, @code{--without-privileged-tests}, |
| @code{--without-unportable-tests}. |
| |
| In order to mark a module with a status attribute, you need to add it |
| to the module description, like this: |
| |
| @example |
| Status: |
| longrunning-test |
| @end example |
| |
| If only a part of a test deserves a particular status attribute, you |
| can split the module into a primary and a secondary test module, |
| say @code{foo-tests} and @code{foo-extra-tests}. Then add a dependency |
| from @code{foo-tests} to @code{foo-extra-tests}, and mark the |
| @code{foo-extra-tests} with the particular status attribute. |