Browse Source

demonstrate bug 12961

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274363 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 22 years ago
parent
commit
4c30847da6
3 changed files with 48 additions and 2 deletions
  1. +19
    -0
      src/etc/testcases/taskdefs/optional/antlr/antlr.xml
  2. +7
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java
  3. +22
    -0
      src/testcases/org/apache/tools/ant/taskdefs/optional/ANTLRTest.java

+ 19
- 0
src/etc/testcases/taskdefs/optional/antlr/antlr.xml View File

@@ -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"/>


+ 7
- 2
src/main/org/apache/tools/ant/taskdefs/optional/ANTLR.java View File

@@ -275,7 +275,11 @@ public class ANTLR extends Task {
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 @@ public class ANTLR extends Task {
}
}
} else {
log("Skipped grammar file. Generated file is newer.", Project.MSG_VERBOSE);
log("Skipped grammar file. Generated file " + generatedFile
+ "is newer.", Project.MSG_VERBOSE);
}
}



+ 22
- 0
src/testcases/org/apache/tools/ant/taskdefs/optional/ANTLRTest.java View File

@@ -169,6 +169,28 @@ public class ANTLRTest extends BuildFileTest {
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 {


Loading…
Cancel
Save