[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FYI 7/8] java coverage: test rebuild rules for java
From: |
Stefano Lattarini |
Subject: |
[FYI 7/8] java coverage: test rebuild rules for java |
Date: |
Tue, 26 Apr 2011 18:17:34 +0200 |
* tests/java-rebuild.test: New test.
* tests/Makefile.am (TESTS): Update.
---
ChangeLog | 6 ++
tests/Makefile.am | 1 +
tests/Makefile.in | 1 +
tests/java-rebuild.test | 126 +++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 134 insertions(+), 0 deletions(-)
create mode 100755 tests/java-rebuild.test
diff --git a/ChangeLog b/ChangeLog
index 26c177e..9c71828 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2011-04-26 Stefano Lattarini <address@hidden>
+ java coverage: test rebuild rules for java
+ * tests/java-rebuild.test: New test.
+ * tests/Makefile.am (TESTS): Update.
+
+2011-04-26 Stefano Lattarini <address@hidden>
+
java coverage: try to build and run a java program
* tests/java-compile-run-flat.test: New test, try to build and run
a "UNIX-style" java program (complete with wrapper shell script
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ff56b33..0e55109 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -446,6 +446,7 @@ java-sources.test \
java-no-duplicate.test \
java-mix.test \
java-uninstall.test \
+java-rebuild.test \
ldadd.test \
ldflags.test \
lex.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index ea6b485..a0e6c70 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -719,6 +719,7 @@ java-sources.test \
java-no-duplicate.test \
java-mix.test \
java-uninstall.test \
+java-rebuild.test \
ldadd.test \
ldflags.test \
lex.test \
diff --git a/tests/java-rebuild.test b/tests/java-rebuild.test
new file mode 100755
index 0000000..75be5f7
--- /dev/null
+++ b/tests/java-rebuild.test
@@ -0,0 +1,126 @@
+#! /bin/sh
+# Copyright (C) 2011 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 <http://www.gnu.org/licenses/>.
+
+# Test rebuild rules for Java class files.
+
+required='javac'
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in <<'END'
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+AM_JAVACFLAGS = -verbose
+foodir = $(datadir)/java
+foo_JAVA = a.java
+dist_foo_JAVA = d.java
+nodist_foo_JAVA = n.java
+nobase_foo_JAVA = Nobase.java
+nobase_dist_foo_JAVA = NobaseDist.java
+nobase_nodist_foo_JAVA = NobaseNoDist.java
+END
+
+echo 'class _x {}' > a.java
+echo 'class x_ {}' > d.java
+echo 'class a {} class d {}' > n.java
+echo 'class Nobase_Foo {} class Nobase_Bar {}' > Nobase.java
+echo 'class NobaseDist {}' > NobaseDist.java
+echo 'class NobaseNoDist {}' > NobaseNoDist.java
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+all_classes='_x x_ a d Nobase_Foo Nobase_Bar NobaseDist NobaseNoDist'
+
+for vpath in : false; do
+
+ if $vpath; then
+ srcdir=..
+ mkdir build
+ cd build
+ else
+ srcdir=.
+ fi
+
+ $srcdir/configure
+ $MAKE
+ ls -l # For debugging.
+
+ # Sanity check.
+ test -f classfoo.stamp
+ for cls in $all_classes; do
+ test -f $cls.class
+ done
+
+ # When the stampfile is removed, all the *.class files should
+ # be considered out-of-date.
+ echo timestamp > older
+ $sleep
+ rm -f classfoo.stamp
+ $MAKE
+ for cls in $all_classes; do
+ is_newest $cls.class older
+ done
+
+ # When only a java file is modified, only the *.class files derived from
+ # it should be updated.
+ # The strings we loop on here have the following format:
+ # ``JAVA-FILES-TO-BE-TOUCHED -- CLASSES-THAT-SHOULD-BE-UPDATED''
+ for args in \
+ 'a -- _x' \
+ 'd -- x_' \
+ 'n -- a d' \
+ 'a d Nobase -- _x x_ Nobase_Foo Nobase_Bar' \
+ 'n NobaseDist -- a d NobaseDist' \
+ 'd NobaseNoDist -- x_ NobaseNoDist' \
+ "a d n Nobase NobaseDist NobaseNoDist -- $all_classes" \
+ ; do
+ set $args
+ touched_javas=
+ while test $# -gt 0; do
+ if test x"$1" = x"--"; then
+ shift
+ break
+ else
+ touched_javas="$touched_javas $1"
+ shift
+ fi
+ done
+ updated_classes=$*
+ echo timestamp > older
+ $sleep
+ for j in $touched_javas; do
+ touch $srcdir/$j.java
+ done
+ $MAKE
+ is_newest classfoo.stamp older
+ for cls in $all_classes; do
+ case " $updated_classes " in
+ *" $cls "*) is_newest $cls.class older;;
+ *) is_newest older $cls.class;;
+ esac
+ done
+ done # $args ...
+
+ cd $srcdir
+
+done # $vpath ...
+
+:
--
1.7.2.3
- [FYI 0/8] More Java patches (mostly testsuite-related), Stefano Lattarini, 2011/04/26
- [FYI 2/8] java tests: require java compiler more properly, Stefano Lattarini, 2011/04/26
- [FYI 3/8] java coverage: add test on uninstall with JAVA primary, Stefano Lattarini, 2011/04/26
- [FYI 1/8] java: allow both JAVA and nobase_JAVA in the same Makefile.am, Stefano Lattarini, 2011/04/26
- [FYI 4/8] java tests: tweak and make stricter a couple of tests, Stefano Lattarini, 2011/04/26
- [FYI 5/8] test defs: new requirement for the default java interpreter, Stefano Lattarini, 2011/04/26
- [FYI 6/8] java coverage: try to build and run a java program, Stefano Lattarini, 2011/04/26
- [FYI 7/8] java coverage: test rebuild rules for java,
Stefano Lattarini <=
- [FYI 8/8] java coverage: test JAVACFLAGS and AM_JAVACFLAGS, Stefano Lattarini, 2011/04/26