@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.