diff --git a/Makefile.am b/Makefile.am index e62f2678e..10a2c8ae2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -211,6 +211,7 @@ EXTRA_DIST = \ autogen.sh \ bindtests \ cfg.mk \ + check-mli.sh \ contrib/autobuild/autobuild.sh \ contrib/intro/libguestfs-intro.html \ contrib/intro/overview.png \ @@ -536,6 +537,10 @@ check-root: build-test-guests build-test-guests: $(MAKE) -C test-data/phony-guests check +# Some tests which run at the top level. + +TESTS = check-mli.sh + # Print subdirs. # # If you want to selectively run tests, or if the test suite fails half diff --git a/check-mli.sh b/check-mli.sh new file mode 100755 index 000000000..9e9a89ff4 --- /dev/null +++ b/check-mli.sh @@ -0,0 +1,41 @@ +#!/bin/bash - +# Check every .ml file has a corresponding .mli file. +# +# 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 of the License, 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, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# OCaml itself doesn't require it, but getting Makefile dependencies +# correct is impossible when some .ml files don't have a corresponding +# .mli file. + +exitcode=0 + +for f in $( + find -name '*.ml' | + grep -v builder/templates | + grep -v contrib/ | + grep -v ocaml/examples/ | + grep -v ocaml/t/ | + grep -v 'tests/automake2junit.ml$' | + grep -v 'bindtests.ml$' | + grep -v '_tests.ml$' | + sort +); do + if [ ! -f "${f}i" ]; then + echo $f: missing ${f}i + exitcode=1 + fi +done + +exit $exitcode