From 1d19f103323b9ad6c43a27049f5ce7c4a586d989 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 28 Mar 2010 18:32:36 +0200 Subject: [PATCH] gnulib-tool: Allow 'foo-tests' module even if there is no module 'foo'. --- ChangeLog | 11 +++++++++++ doc/gnulib.texi | 6 ++++++ gnulib-tool | 35 +++++++++++++++++++++++------------ 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index bdbe8bfc3..934f202bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2010-03-28 Bruno Haible + gnulib-tool: Allow 'foo-tests' module even if there is no module 'foo'. + * gnulib-tool (func_exists_module): New function, extracted from + func_verify_module. + (func_verify_module): Use it. + (func_get_dependencies): Synthetize a dependency from 'foo-tests' to + 'foo' only if 'foo' exists. + * doc/gnulib.texi (Extra tests modules): Explain how to split a tests + module. + +2010-03-28 Bruno Haible + gnulib-tool: Add support for special categories of tests. * gnulib-tool: New options --with-c++-tests, --with-longrunning-tests, --with-privileged-tests, --with-unportable-tests, --with-all-tests. diff --git a/doc/gnulib.texi b/doc/gnulib.texi index a947dbf45..74499b5d5 100644 --- a/doc/gnulib.texi +++ b/doc/gnulib.texi @@ -750,6 +750,12 @@ 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. + @node A C++ namespace for gnulib @section A C++ namespace for gnulib diff --git a/gnulib-tool b/gnulib-tool index 99abb622f..47974e697 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -1379,6 +1379,24 @@ func_all_modules () | LC_ALL=C sort -u } +# func_exists_module module +# tests whether a module, given by name, exists +# Input: +# - local_gnulib_dir from --local-dir +func_exists_module () +{ + { test -f "$gnulib_dir/modules/$1" \ + || { test -n "$local_gnulib_dir" && test -d "$local_gnulib_dir/modules" \ + && test -f "$local_gnulib_dir/modules/$1"; }; } \ + && test "CVS" != "$1" \ + && test "ChangeLog" != "$1" \ + && test "COPYING" != "$1" \ + && test "README" != "$1" \ + && test "TEMPLATE" != "$1" \ + && test "TEMPLATE-EXTENDED" != "$1" \ + && test "TEMPLATE-TESTS" != "$1" +} + # func_verify_module # verifies a module name # Input: @@ -1386,16 +1404,7 @@ func_all_modules () # - module module name argument func_verify_module () { - if { test -f "$gnulib_dir/modules/$module" \ - || { test -n "$local_gnulib_dir" && test -d "$local_gnulib_dir/modules" \ - && test -f "$local_gnulib_dir/modules/$module"; }; } \ - && test "CVS" != "$module" \ - && test "ChangeLog" != "$module" \ - && test "COPYING" != "$module" \ - && test "README" != "$module" \ - && test "TEMPLATE" != "$module" \ - && test "TEMPLATE-EXTENDED" != "$module" \ - && test "TEMPLATE-TESTS" != "$module"; then + if func_exists_module "$module"; then # OK, $module is a correct module name. # Verify that building the module description with 'patch' succeeds. func_lookup_file "modules/$module" @@ -1954,12 +1963,14 @@ func_filter_filelist () # - modcache true or false, from --cache-modules/--no-cache-modules func_get_dependencies () { - # ${module}-tests always implicitly depends on ${module}. + # ${module}-tests implicitly depends on ${module}, if that module exists. case "$1" in *-tests) fgd1="$1" func_remove_suffix fgd1 '-tests' - echo "$fgd1" + if func_exists_module "$fgd1"; then + echo "$fgd1" + fi ;; esac # Then the explicit dependencies listed in the module description. -- 2.11.0