bodewig 2003/04/01 06:33:29
Modified: src/etc/testcases/taskdefs/optional/antlr antlr.xml src/main/org/apache/tools/ant/taskdefs/optional ANTLR.java src/testcases/org/apache/tools/ant/taskdefs/optional ANTLRTest.java Log: demonstrate bug 12961 Revision Changes Path 1.9 +19 -0 ant/src/etc/testcases/taskdefs/optional/antlr/antlr.xml Index: antlr.xml =================================================================== RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/optional/antlr/antlr.xml,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- antlr.xml 1 Apr 2003 10:54:36 -0000 1.8 +++ antlr.xml 1 Apr 2003 14:33:28 -0000 1.9 @@ -73,6 +73,25 @@ <antlr target="antlr.g" outputdirectory="${tmp.dir}" traceLexer="yes" traceParser="yes" traceTreeWalker="yes"/> </target> + <!-- test9 will have been run before that --> + <target name="noRecompile"> + <antlr target="${tmp.dir}/extended.calc.g" glib="${tmp.dir}/antlr.g"/> + </target> + + <!-- test9 will have been run before that --> + <target name="normalRecompile"> + <sleep seconds="2"/> + <touch file="${tmp.dir}/extended.calc.g"/> + <antlr target="${tmp.dir}/extended.calc.g" glib="${tmp.dir}/antlr.g"/> + </target> + + <!-- test9 will have been run before that --> + <target name="supergrammarChangeRecompile"> + <sleep seconds="2"/> + <touch file="${tmp.dir}/antlr.g"/> + <antlr target="${tmp.dir}/extended.calc.g" glib="${tmp.dir}/antlr.g"/> + </target> + <target name="cleanup"> <delete dir="${tmp.dir}" /> <delete file="../../../../../../CalcParserTokenTypes.txt"/> 1.22 +7 -2 ant/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java Index: ANTLR.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- ANTLR.java 1 Apr 2003 13:47:06 -0000 1.21 +++ ANTLR.java 1 Apr 2003 14:33:28 -0000 1.22 @@ -275,7 +275,11 @@ public void execute() throws BuildException { validateAttributes(); //TODO: use ANTLR to parse the grammer file to do this. - if (target.lastModified() > getGeneratedFile().lastModified()) { + File generatedFile = getGeneratedFile(); + if (target.lastModified() > generatedFile.lastModified()) { + log("Compiling " + target + " as it is newer than " + + generatedFile, Project.MSG_VERBOSE); + populateAttributes(); commandline.createArgument().setValue(target.toString()); @@ -291,7 +295,8 @@ } } } else { - log("Skipped grammar file. Generated file is newer.", Project.MSG_VERBOSE); + log("Skipped grammar file. Generated file " + generatedFile + + "is newer.", Project.MSG_VERBOSE); } } 1.13 +22 -0 ant/src/testcases/org/apache/tools/ant/taskdefs/optional/ANTLRTest.java Index: ANTLRTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/optional/ANTLRTest.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- ANTLRTest.java 1 Apr 2003 10:54:36 -0000 1.12 +++ ANTLRTest.java 1 Apr 2003 14:33:28 -0000 1.13 @@ -169,6 +169,28 @@ public void test13() { executeTarget("test13"); } + + public void testNoRecompile() { + executeTarget("test9"); + assertEquals(-1, getFullLog().indexOf("Skipped grammar file.")); + executeTarget("noRecompile"); + assertTrue(-1 != getFullLog().indexOf("Skipped grammar file.")); + } + + public void testNormalRecompile() { + executeTarget("test9"); + assertEquals(-1, getFullLog().indexOf("Skipped grammar file.")); + executeTarget("normalRecompile"); + assertEquals(-1, getFullLog().indexOf("Skipped grammar file.")); + } + + // Bugzilla Report 12961 + public void testSupergrammarChangeRecompile() { + executeTarget("test9"); + assertEquals(-1, getFullLog().indexOf("Skipped grammar file.")); + executeTarget("supergrammarChangeRecompile"); + assertEquals(-1, getFullLog().indexOf("Skipped grammar file.")); + } } class CalcFileFilter implements FilenameFilter {