From: Ralf Wildenhues Date: Sat, 2 Oct 2010 18:26:47 +0000 (+0200) Subject: Coverage and minor fixes for variable typo detection. X-Git-Tag: ng-0.5a~361 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f19b07647af068030866b7bc94710e930a6fccb9;p=thirdparty%2Fautomake.git Coverage and minor fixes for variable typo detection. * automake.in (check_typos): Remove `EXTRA_' prefix when computing canonical name. * tests/vartypo2.test, tests/vartypos.test: New tests. * tests/Makefile.am (TESTS): Update. Signed-off-by: Ralf Wildenhues --- diff --git a/ChangeLog b/ChangeLog index 356a9fc0d..79b7d3930 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2010-10-02 Ralf Wildenhues + Coverage and minor fixes for variable typo detection. + * automake.in (check_typos): Remove `EXTRA_' prefix when + computing canonical name. + * tests/vartypo2.test, tests/vartypos.test: New tests. + * tests/Makefile.am (TESTS): Update. + Implement EXTRA_maude_DEPENDENCIES for programs and libraries. * automake.in (handle_programs, handle_libraries) (handle_ltlibraries): Mark EXTRA_*_DEPENDENCIES as recognized. diff --git a/automake.in b/automake.in index 52add361c..ef9b511d9 100644 --- a/automake.in +++ b/automake.in @@ -3073,7 +3073,7 @@ sub check_typos () for my $cond ($var->conditions->conds) { - $varname =~ /^(?:nobase_)?(?:dist_|nodist_)?(.*)_[[:alnum:]]+$/; + $varname =~ /^(?:EXTRA_)?(?:nobase_)?(?:dist_|nodist_)?(.*)_[[:alnum:]]+$/; msg_var ('syntax', $var, "variable `$varname' is defined but no" . " program or\nlibrary has `$1' as canonical name" . " (possible typo)") diff --git a/tests/Makefile.am b/tests/Makefile.am index 8b2ca8440..aff077e7a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -800,6 +800,8 @@ vala5.test \ vars.test \ vars3.test \ vartar.test \ +vartypos.test \ +vartypo2.test \ version.test \ version2.test \ version3.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 4bb1e914d..e1d72acb3 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1011,6 +1011,8 @@ vala5.test \ vars.test \ vars3.test \ vartar.test \ +vartypos.test \ +vartypo2.test \ version.test \ version2.test \ version3.test \ diff --git a/tests/vartypo2.test b/tests/vartypo2.test new file mode 100755 index 000000000..5b8740416 --- /dev/null +++ b/tests/vartypo2.test @@ -0,0 +1,71 @@ +#! /bin/sh +# Copyright (C) 2010 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Make sure we warn about possible variable typos when we should, +# Libtool variant. + +required=libtoolize +. ./defs || Exit 1 + +set -e + +cat >>configure.in <<'END' +AC_PROG_LIBTOOL +AC_OUTPUT +END + +cat >Makefile.am <<'END' +libfoo_la_SOURCES = unused +nodist_libfoo_la_SOURCES = unused +EXTRA_libfoo_la_SOURCES = unused +libfoo_la_LIBADD = unused +libfoo_la_DEPENDENCIES = unused +EXTRA_libfoo_la_DEPENDENCIES = unused +END + +libtoolize +$ACLOCAL +AUTOMAKE_fails --add-missing +# The expected diagnostic is: +# automake: warnings are treated as errors +# Makefile.am:3: warning: variable `EXTRA_libfoo_la_SOURCES' is defined but no program or +# Makefile.am:3: library has `libfoo_la' as canonical name (possible typo) +# Makefile.am:1: warning: variable `libfoo_la_SOURCES' is defined but no program or +# Makefile.am:1: library has `libfoo_la' as canonical name (possible typo) +# Makefile.am:2: warning: variable `nodist_libfoo_la_SOURCES' is defined but no program or +# Makefile.am:2: library has `libfoo_la' as canonical name (possible typo) +# Makefile.am:4: warning: variable `libfoo_la_LIBADD' is defined but no program or +# Makefile.am:4: library has `libfoo_la' as canonical name (possible typo) +# Makefile.am:6: warning: variable `EXTRA_libfoo_la_DEPENDENCIES' is defined but no program or +# Makefile.am:6: library has `libfoo_la' as canonical name (possible typo) +# Makefile.am:5: warning: variable `libfoo_la_DEPENDENCIES' is defined but no program or +# Makefile.am:5: library has `libfoo_la' as canonical name (possible typo) + + +test -z "`grep 'as canonical' stderr | grep -v ' .libfoo_la. '`" +test `grep 'variable.*is defined but' stderr | wc -l` = 6 + +# If we add a global -Wnone, all warnings should disappear. +$AUTOMAKE -Wnone + +# Likewise, if matching programs or libraries are defined. +cat >>Makefile.am <<'END' +lib_LTLIBRARIES = libfoo.la +END + +$AUTOMAKE + +: diff --git a/tests/vartypos.test b/tests/vartypos.test new file mode 100755 index 000000000..73e7c553c --- /dev/null +++ b/tests/vartypos.test @@ -0,0 +1,90 @@ +#! /bin/sh +# Copyright (C) 2010 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Make sure we warn about possible variable typos when we should. + +. ./defs || Exit 1 + +set -e + +cat >>configure.in <<'END' +AC_PROG_RANLIB +AC_OUTPUT +END + +cat >Makefile.am <<'END' +foo_SOURCES = unused +nodist_foo_SOURCES = unused +EXTRA_foo_SOURCES = unused +foo_LDADD = unused +foo_LDFLAGS = unused +foo_DEPENDENCIES = unused +EXTRA_foo_DEPENDENCIES = unused + +libfoo_a_SOURCES = unused +nodist_libfoo_a_SOURCES = unused +EXTRA_libfoo_a_SOURCES = unused +libfoo_a_LIBADD = unused +libfoo_a_DEPENDENCIES = unused +EXTRA_libfoo_a_DEPENDENCIES = unused +END + +$ACLOCAL +AUTOMAKE_fails +# The expected diagnostic is: +# automake: warnings are treated as errors +# Makefile.am:2: warning: variable `nodist_foo_SOURCES' is defined but no program or +# Makefile.am:2: library has `foo' as canonical name (possible typo) +# Makefile.am:1: warning: variable `foo_SOURCES' is defined but no program or +# Makefile.am:1: library has `foo' as canonical name (possible typo) +# Makefile.am:9: warning: variable `libfoo_a_SOURCES' is defined but no program or +# Makefile.am:9: library has `libfoo_a' as canonical name (possible typo) +# Makefile.am:10: warning: variable `nodist_libfoo_a_SOURCES' is defined but no program or +# Makefile.am:10: library has `libfoo_a' as canonical name (possible typo) +# Makefile.am:11: warning: variable `EXTRA_libfoo_a_SOURCES' is defined but no program or +# Makefile.am:11: library has `libfoo_a' as canonical name (possible typo) +# Makefile.am:3: warning: variable `EXTRA_foo_SOURCES' is defined but no program or +# Makefile.am:3: library has `foo' as canonical name (possible typo) +# Makefile.am:12: warning: variable `libfoo_a_LIBADD' is defined but no program or +# Makefile.am:12: library has `libfoo_a' as canonical name (possible typo) +# Makefile.am:4: warning: variable `foo_LDADD' is defined but no program or +# Makefile.am:4: library has `foo' as canonical name (possible typo) +# Makefile.am:5: warning: variable `foo_LDFLAGS' is defined but no program or +# Makefile.am:5: library has `foo' as canonical name (possible typo) +# Makefile.am:14: warning: variable `EXTRA_libfoo_a_DEPENDENCIES' is defined but no program or +# Makefile.am:14: library has `libfoo_a' as canonical name (possible typo) +# Makefile.am:7: warning: variable `EXTRA_foo_DEPENDENCIES' is defined but no program or +# Makefile.am:7: library has `foo' as canonical name (possible typo) +# Makefile.am:6: warning: variable `foo_DEPENDENCIES' is defined but no program or +# Makefile.am:6: library has `foo' as canonical name (possible typo) +# Makefile.am:13: warning: variable `libfoo_a_DEPENDENCIES' is defined but no program or +# Makefile.am:13: library has `libfoo_a' as canonical name (possible typo) + +test -z "`grep 'as canonical' stderr | grep -v ' .foo. ' | grep -v ' .libfoo_a. '`" +test `grep 'variable.*is defined but' stderr | wc -l` = 13 + +# If we add a global -Wnone, all warnings should disappear. +$AUTOMAKE -Wnone + +# Likewise, if matching programs or libraries are defined. +cat >>Makefile.am <<'END' +bin_PROGRAMS = foo +lib_LIBRARIES = libfoo.a +END + +$AUTOMAKE + +: