forked from jasder/antlr
update doc, add lock so antlr used atomically in unit tests so we can run in parallel.
This commit is contained in:
parent
30fbe07b2b
commit
9675c822a9
|
@ -38,17 +38,24 @@ Checking connectivity... done.
|
||||||
$ cd antlr4
|
$ cd antlr4
|
||||||
$ mvn compile
|
$ mvn compile
|
||||||
..
|
..
|
||||||
|
[INFO] ------------------------------------------------------------------------
|
||||||
[INFO] Reactor Summary:
|
[INFO] Reactor Summary:
|
||||||
[INFO]
|
[INFO]
|
||||||
[INFO] ANTLR 4 ............................................ SUCCESS [ 0.447 s]
|
[INFO] ANTLR 4 ............................................ SUCCESS [ 0.432 s]
|
||||||
[INFO] ANTLR 4 Runtime .................................... SUCCESS [ 3.113 s]
|
[INFO] ANTLR 4 Runtime .................................... SUCCESS [ 4.334 s]
|
||||||
[INFO] ANTLR 4 Tool ....................................... SUCCESS [ 14.408 s]
|
[INFO] ANTLR 4 Tool ....................................... SUCCESS [ 1.686 s]
|
||||||
[INFO] ANTLR 4 Maven plugin ............................... SUCCESS [ 1.276 s]
|
[INFO] ANTLR 4 Maven plugin ............................... SUCCESS [ 1.654 s]
|
||||||
[INFO] ANTLR 4 Runtime Test Generator ..................... SUCCESS [ 0.773 s]
|
[INFO] ANTLR 4 Runtime Test Annotations ................... SUCCESS [ 0.096 s]
|
||||||
[INFO] ANTLR 4 Tool Tests ................................. SUCCESS [ 6.920 s]
|
[INFO] ANTLR 4 Runtime Test Processors .................... SUCCESS [ 0.025 s]
|
||||||
|
[INFO] ANTLR 4 Runtime Tests (2nd generation) ............. SUCCESS [ 1.932 s]
|
||||||
|
[INFO] ANTLR 4 Tool Tests ................................. SUCCESS [ 0.018 s]
|
||||||
[INFO] ------------------------------------------------------------------------
|
[INFO] ------------------------------------------------------------------------
|
||||||
[INFO] BUILD SUCCESS
|
[INFO] BUILD SUCCESS
|
||||||
...
|
[INFO] ------------------------------------------------------------------------
|
||||||
|
[INFO] Total time: 10.324 s
|
||||||
|
[INFO] Finished at: 2016-11-16T13:49:38-08:00
|
||||||
|
[INFO] Final Memory: 42M/488M
|
||||||
|
[INFO] ------------------------------------------------------------------------
|
||||||
```
|
```
|
||||||
|
|
||||||
# Testing tool and targets
|
# Testing tool and targets
|
||||||
|
@ -81,38 +88,119 @@ antlr reports warnings from [-visitor, -Dlanguage=CSharp, -o, /var/folders/s1/h3
|
||||||
[INFO] ------------------------------------------------------------------------
|
[INFO] ------------------------------------------------------------------------
|
||||||
[INFO] Reactor Summary:
|
[INFO] Reactor Summary:
|
||||||
[INFO]
|
[INFO]
|
||||||
[INFO] ANTLR 4 ............................................ SUCCESS [ 0.462 s]
|
[INFO] ANTLR 4 ............................................ SUCCESS [ 0.445 s]
|
||||||
[INFO] ANTLR 4 Runtime .................................... SUCCESS [ 9.163 s]
|
[INFO] ANTLR 4 Runtime .................................... SUCCESS [ 3.392 s]
|
||||||
[INFO] ANTLR 4 Tool ....................................... SUCCESS [ 3.683 s]
|
[INFO] ANTLR 4 Tool ....................................... SUCCESS [ 1.373 s]
|
||||||
[INFO] ANTLR 4 Maven plugin ............................... SUCCESS [ 1.897 s]
|
[INFO] ANTLR 4 Maven plugin ............................... SUCCESS [ 1.519 s]
|
||||||
[INFO] ANTLR 4 Runtime Test Generator ..................... SUCCESS [07:11 min]
|
[INFO] ANTLR 4 Runtime Test Annotations ................... SUCCESS [ 0.086 s]
|
||||||
[INFO] ANTLR 4 Tool Tests ................................. SUCCESS [ 16.694 s]
|
[INFO] ANTLR 4 Runtime Test Processors .................... SUCCESS [ 0.014 s]
|
||||||
|
[INFO] ANTLR 4 Runtime Tests (2nd generation) ............. SUCCESS [06:39 min]
|
||||||
|
[INFO] ANTLR 4 Tool Tests ................................. SUCCESS [ 6.922 s]
|
||||||
[INFO] ------------------------------------------------------------------------
|
[INFO] ------------------------------------------------------------------------
|
||||||
[INFO] BUILD SUCCESS
|
[INFO] BUILD SUCCESS
|
||||||
[INFO] ------------------------------------------------------------------------
|
[INFO] ------------------------------------------------------------------------
|
||||||
[INFO] Total time: 07:43 min
|
[INFO] Total time: 06:53 min
|
||||||
...
|
[INFO] Finished at: 2016-11-16T15:36:56-08:00
|
||||||
|
[INFO] Final Memory: 44M/458M
|
||||||
|
[INFO] ------------------------------------------------------------------------
|
||||||
```
|
```
|
||||||
|
|
||||||
You should see these jars (building 4.5.2-SNAPSHOT):
|
Note: That is actually result of running the much faster:
|
||||||
|
|
||||||
|
`mvn -Dparallel=methods -DthreadCount=4 install`
|
||||||
|
|
||||||
|
|
||||||
|
You should see these jars (when building 4.6-SNAPSHOT):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/Users/parrt/.m2/repository/org/antlr $ find antlr4* -name '*.jar'
|
/Users/parrt/.m2/repository/org/antlr $ find antlr4* -name '*.jar'
|
||||||
antlr4/4.5/antlr4-4.5.jar
|
antlr4-maven-plugin/4.6-SNAPSHOT/antlr4-maven-plugin-4.6-SNAPSHOT.jar
|
||||||
antlr4/4.5.2-SNAPSHOT/antlr4-4.5.2-SNAPSHOT-tests.jar
|
antlr4-runtime-test-annotation-processors/4.6-SNAPSHOT/antlr4-runtime-test-annotation-processors-4.6-SNAPSHOT.jar
|
||||||
antlr4/4.5.2-SNAPSHOT/antlr4-4.5.2-SNAPSHOT.jar
|
antlr4-runtime-test-annotations/4.6-SNAPSHOT/antlr4-runtime-test-annotations-4.6-SNAPSHOT.jar
|
||||||
antlr4-maven-plugin/4.5/antlr4-maven-plugin-4.5.jar
|
antlr4-runtime-testsuite/4.6-SNAPSHOT/antlr4-runtime-testsuite-4.6-SNAPSHOT-tests.jar
|
||||||
antlr4-maven-plugin/4.5.2-SNAPSHOT/antlr4-maven-plugin-4.5.2-SNAPSHOT.jar
|
antlr4-runtime-testsuite/4.6-SNAPSHOT/antlr4-runtime-testsuite-4.6-SNAPSHOT.jar
|
||||||
antlr4-runtime/4.5/antlr4-runtime-4.5.jar
|
antlr4-runtime/4.6-SNAPSHOT/antlr4-runtime-4.6-SNAPSHOT.jar
|
||||||
antlr4-runtime/4.5.2-SNAPSHOT/antlr4-runtime-4.5.2-SNAPSHOT.jar
|
antlr4-tool-testsuite/4.6-SNAPSHOT/antlr4-tool-testsuite-4.6-SNAPSHOT.jar
|
||||||
antlr4-runtime-testsuite/4.5.2-SNAPSHOT/antlr4-runtime-testsuite-4.5.2-SNAPSHOT-tests.jar
|
antlr4/4.6-SNAPSHOT/antlr4-4.6-SNAPSHOT-tests.jar
|
||||||
antlr4-runtime-testsuite/4.5.2-SNAPSHOT/antlr4-runtime-testsuite-4.5.2-SNAPSHOT.jar
|
antlr4/4.6-SNAPSHOT/antlr4-4.6-SNAPSHOT.jar
|
||||||
antlr4-tool-testsuite/4.5.2-SNAPSHOT/antlr4-tool-testsuite-4.5.2-SNAPSHOT.jar
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that ANTLR is written in itself, which is why maven downloads antlr4-4.5.jar for boostrapping 4.5.2-SNAPSHOT purposes.
|
Note that ANTLR is written in itself, which is why maven downloads antlr4-4.5.jar for boostrapping 4.6-SNAPSHOT purposes.
|
||||||
|
|
||||||
|
## Running test subsets
|
||||||
|
|
||||||
|
### Run one test group across targets
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ mvn -Dtest=TestParserExec test
|
||||||
|
-------------------------------------------------------
|
||||||
|
T E S T S
|
||||||
|
-------------------------------------------------------
|
||||||
|
Running org.antlr.v4.test.runtime.cpp.TestParserExec
|
||||||
|
...
|
||||||
|
Tests run: 32, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 114.283 sec
|
||||||
|
Running org.antlr.v4.test.runtime.csharp.TestParserExec
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Or run all lexer related tests:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ mvn -Dtest=Test*Lexer* test
|
||||||
|
-------------------------------------------------------
|
||||||
|
T E S T S
|
||||||
|
-------------------------------------------------------
|
||||||
|
Running org.antlr.v4.test.runtime.cpp.TestCompositeLexers
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run all tests for a single target
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ mvn -Dtest=java.* test
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Or run all lexer related tests in Java target only:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ mvn -Dtest=java.*Lexer* test
|
||||||
|
...
|
||||||
|
-------------------------------------------------------
|
||||||
|
T E S T S
|
||||||
|
-------------------------------------------------------
|
||||||
|
Running org.antlr.v4.test.runtime.java.TestCompositeLexers
|
||||||
|
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.277 sec
|
||||||
|
Running org.antlr.v4.test.runtime.java.TestLexerErrors
|
||||||
|
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.376 sec
|
||||||
|
Running org.antlr.v4.test.runtime.java.TestLexerExec
|
||||||
|
Tests run: 38, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.07 sec
|
||||||
|
Running org.antlr.v4.test.runtime.java.TestSemPredEvalLexer
|
||||||
|
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.255 sec
|
||||||
|
|
||||||
|
Results :
|
||||||
|
|
||||||
|
Tests run: 59, Failures: 0, Errors: 0, Skipped: 0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Testing in parallel
|
||||||
|
|
||||||
|
Use this to run tests in parallel:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ mvn -Dparallel=methods -DthreadCount=4 test
|
||||||
|
...
|
||||||
|
-------------------------------------------------------
|
||||||
|
T E S T S
|
||||||
|
-------------------------------------------------------
|
||||||
|
Concurrency config is parallel='methods', perCoreThreadCount=true, threadCount=4, useUnlimitedThreads=false
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
This can be combined with other `-D` above.
|
||||||
|
|
||||||
## Building without testing
|
## Building without testing
|
||||||
|
|
||||||
To build without running the tests (saves a lot of time), do this:
|
To build without running the tests (saves a lot of time), do this:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
|
@ -125,10 +125,11 @@ public abstract class BaseRuntimeTest {
|
||||||
descriptor.getInput(),
|
descriptor.getInput(),
|
||||||
descriptor.showDiagnosticErrors()
|
descriptor.showDiagnosticErrors()
|
||||||
);
|
);
|
||||||
if(delegate instanceof RuntimeTestAssert) {
|
if ( delegate instanceof RuntimeTestAssert ) {
|
||||||
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getOutput(), found);
|
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getOutput(), found);
|
||||||
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getErrors(), delegate.getParseErrors());
|
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getErrors(), delegate.getParseErrors());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
assertEquals(descriptor.getOutput(), found);
|
assertEquals(descriptor.getOutput(), found);
|
||||||
assertEquals(descriptor.getErrors(), delegate.getParseErrors());
|
assertEquals(descriptor.getErrors(), delegate.getParseErrors());
|
||||||
}
|
}
|
||||||
|
@ -165,11 +166,12 @@ public abstract class BaseRuntimeTest {
|
||||||
grammar = grammarST.render();
|
grammar = grammarST.render();
|
||||||
|
|
||||||
String found = delegate.execLexer(grammarName+".g4", grammar, grammarName, descriptor.getInput(), descriptor.showDFA());
|
String found = delegate.execLexer(grammarName+".g4", grammar, grammarName, descriptor.getInput(), descriptor.showDFA());
|
||||||
if(delegate instanceof RuntimeTestAssert) {
|
if ( delegate instanceof RuntimeTestAssert ) {
|
||||||
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getOutput(), found);
|
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getOutput(), found);
|
||||||
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getANTLRToolErrors(), delegate.getANTLRToolErrors());
|
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getANTLRToolErrors(), delegate.getANTLRToolErrors());
|
||||||
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getErrors(), delegate.getParseErrors());
|
((RuntimeTestAssert)delegate).assertEqualStrings(descriptor.getErrors(), delegate.getParseErrors());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
assertEquals(descriptor.getOutput(), found);
|
assertEquals(descriptor.getOutput(), found);
|
||||||
assertEquals(descriptor.getANTLRToolErrors(), delegate.getANTLRToolErrors());
|
assertEquals(descriptor.getANTLRToolErrors(), delegate.getANTLRToolErrors());
|
||||||
assertEquals(descriptor.getErrors(), delegate.getParseErrors());
|
assertEquals(descriptor.getErrors(), delegate.getParseErrors());
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package org.antlr.v4.test.runtime;
|
package org.antlr.v4.test.runtime;
|
||||||
|
|
||||||
|
/** This interface acts like a tag on a Base*Test class that wants
|
||||||
|
* to use its own assertEquals() instead of jUnit's.
|
||||||
|
*/
|
||||||
public interface RuntimeTestAssert {
|
public interface RuntimeTestAssert {
|
||||||
void assertEqualStrings(String expected, String actual);
|
void assertEqualStrings(String expected, String actual);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
package org.antlr.v4.test.runtime;
|
|
||||||
|
|
||||||
import org.antlr.v4.test.runtime.descriptors.ParserExecDescriptors;
|
|
||||||
import org.junit.runner.JUnitCore;
|
|
||||||
import org.junit.runner.Result;
|
|
||||||
import org.junit.runner.notification.Failure;
|
|
||||||
|
|
||||||
public class TestRunner {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
Result result = JUnitCore.runClasses(ParserExecDescriptors.class);
|
|
||||||
|
|
||||||
for (Failure failure : result.getFailures()) {
|
|
||||||
System.out.println(failure.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println(result.wasSuccessful());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -93,6 +93,7 @@ import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import static org.antlr.v4.test.runtime.java.BaseJavaTest.antlrLock;
|
||||||
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
@ -124,10 +125,13 @@ public class BaseCppTest implements RuntimeTestSupport {
|
||||||
// new output dir for each test
|
// new output dir for each test
|
||||||
String propName = getPropertyPrefix() + "-test-dir";
|
String propName = getPropertyPrefix() + "-test-dir";
|
||||||
String prop = System.getProperty(propName);
|
String prop = System.getProperty(propName);
|
||||||
if(prop!=null && prop.length()>0)
|
if(prop!=null && prop.length()>0) {
|
||||||
tmpdir = prop;
|
tmpdir = prop;
|
||||||
else
|
}
|
||||||
tmpdir = new File(System.getProperty("java.io.tmpdir"), getClass().getSimpleName()+"-"+System.currentTimeMillis()).getAbsolutePath();
|
else {
|
||||||
|
tmpdir = new File(System.getProperty("java.io.tmpdir"),
|
||||||
|
getClass().getSimpleName()+"-"+Thread.currentThread().getName()+"-"+System.currentTimeMillis()).getAbsolutePath();
|
||||||
|
}
|
||||||
antlrToolErrors = new StringBuilder();
|
antlrToolErrors = new StringBuilder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,7 +367,9 @@ public class BaseCppTest implements RuntimeTestSupport {
|
||||||
if (defaultListener) {
|
if (defaultListener) {
|
||||||
antlr.addListener(new DefaultToolListener(antlr));
|
antlr.addListener(new DefaultToolListener(antlr));
|
||||||
}
|
}
|
||||||
antlr.processGrammarsOnCommandLine();
|
synchronized (antlrLock) {
|
||||||
|
antlr.processGrammarsOnCommandLine();
|
||||||
|
}
|
||||||
|
|
||||||
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
||||||
for (int i = 0; i < equeue.errors.size(); i++) {
|
for (int i = 0; i < equeue.errors.size(); i++) {
|
||||||
|
@ -645,7 +651,7 @@ public class BaseCppTest implements RuntimeTestSupport {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean runtimeBuiltOnce = false;
|
static Boolean runtimeBuiltOnce = false;
|
||||||
|
|
||||||
public String execModule(String fileName) {
|
public String execModule(String fileName) {
|
||||||
String runtimePath = locateRuntime();
|
String runtimePath = locateRuntime();
|
||||||
|
@ -654,22 +660,24 @@ public class BaseCppTest implements RuntimeTestSupport {
|
||||||
String inputPath = new File(new File(tmpdir), "input").getAbsolutePath();
|
String inputPath = new File(new File(tmpdir), "input").getAbsolutePath();
|
||||||
|
|
||||||
// Build runtime using cmake once.
|
// Build runtime using cmake once.
|
||||||
if (!runtimeBuiltOnce) {
|
synchronized (runtimeBuiltOnce) {
|
||||||
try {
|
if ( !runtimeBuiltOnce ) {
|
||||||
String command[] = { "clang++", "--version" };
|
try {
|
||||||
String output = runCommand(command, tmpdir, "printing compiler version");
|
String command[] = {"clang++", "--version"};
|
||||||
System.out.println("Compiler version is: " + output);
|
String output = runCommand(command, tmpdir, "printing compiler version");
|
||||||
}
|
System.out.println("Compiler version is: "+output);
|
||||||
catch (Exception e) {
|
}
|
||||||
System.err.println("Can't get compiler version");
|
catch (Exception e) {
|
||||||
}
|
System.err.println("Can't get compiler version");
|
||||||
|
}
|
||||||
|
|
||||||
runtimeBuiltOnce = true;
|
runtimeBuiltOnce = true;
|
||||||
if (!buildRuntime()) {
|
if ( !buildRuntime() ) {
|
||||||
System.out.println("C++ runtime build failed\n");
|
System.out.println("C++ runtime build failed\n");
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
|
System.out.println("C++ runtime build succeeded\n");
|
||||||
}
|
}
|
||||||
System.out.println("C++ runtime build succeeded\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create symlink to the runtime. Currently only used on OSX.
|
// Create symlink to the runtime. Currently only used on OSX.
|
||||||
|
|
|
@ -57,7 +57,6 @@ import javax.xml.transform.stream.StreamResult;
|
||||||
import javax.xml.xpath.XPathConstants;
|
import javax.xml.xpath.XPathConstants;
|
||||||
import javax.xml.xpath.XPathExpression;
|
import javax.xml.xpath.XPathExpression;
|
||||||
import javax.xml.xpath.XPathFactory;
|
import javax.xml.xpath.XPathFactory;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
@ -75,6 +74,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static org.antlr.v4.test.runtime.java.BaseJavaTest.antlrLock;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
@ -162,7 +162,7 @@ public class BaseCSharpTest implements RuntimeTestSupport, RuntimeTestAssert {
|
||||||
public void testSetUp() throws Exception {
|
public void testSetUp() throws Exception {
|
||||||
if (CREATE_PER_TEST_DIRECTORIES) {
|
if (CREATE_PER_TEST_DIRECTORIES) {
|
||||||
// new output dir for each test
|
// new output dir for each test
|
||||||
String testDirectory = getClass().getSimpleName() + "-" + System.currentTimeMillis();
|
String testDirectory = getClass().getSimpleName() + "-"+Thread.currentThread().getName()+ "-" + System.currentTimeMillis();
|
||||||
tmpdir = new File(BASE_TEST_DIR, testDirectory).getAbsolutePath();
|
tmpdir = new File(BASE_TEST_DIR, testDirectory).getAbsolutePath();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -265,7 +265,9 @@ public class BaseCSharpTest implements RuntimeTestSupport, RuntimeTestAssert {
|
||||||
if (defaultListener) {
|
if (defaultListener) {
|
||||||
antlr.addListener(new DefaultToolListener(antlr));
|
antlr.addListener(new DefaultToolListener(antlr));
|
||||||
}
|
}
|
||||||
antlr.processGrammarsOnCommandLine();
|
synchronized (antlrLock) {
|
||||||
|
antlr.processGrammarsOnCommandLine();
|
||||||
|
}
|
||||||
|
|
||||||
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
||||||
for (int i = 0; i < equeue.errors.size(); i++) {
|
for (int i = 0; i < equeue.errors.size(); i++) {
|
||||||
|
@ -908,7 +910,7 @@ public class BaseCSharpTest implements RuntimeTestSupport, RuntimeTestAssert {
|
||||||
public void assertEqualStrings(String a, String b) {
|
public void assertEqualStrings(String a, String b) {
|
||||||
assertEquals(a, b);
|
assertEquals(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void assertEquals(String a, String b) {
|
protected static void assertEquals(String a, String b) {
|
||||||
a = absorbExpectedDifferences(a);
|
a = absorbExpectedDifferences(a);
|
||||||
b = absorbActualDifferences(b);
|
b = absorbActualDifferences(b);
|
||||||
|
@ -928,19 +930,20 @@ public class BaseCSharpTest implements RuntimeTestSupport, RuntimeTestAssert {
|
||||||
a = a.replaceAll("\\^", "");
|
a = a.replaceAll("\\^", "");
|
||||||
// work around the algo difference for full context
|
// work around the algo difference for full context
|
||||||
a = stripOutUnwantedLinesWith(a, "reportAttemptingFullContext","reportContextSensitivity", "reportAmbiguity");
|
a = stripOutUnwantedLinesWith(a, "reportAttemptingFullContext","reportContextSensitivity", "reportAmbiguity");
|
||||||
if(a.isEmpty())
|
if(a.isEmpty()) {
|
||||||
a = null;
|
a = null;
|
||||||
|
}
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String absorbActualDifferences(String a) {
|
private static String absorbActualDifferences(String a) {
|
||||||
if(a==null)
|
if(a==null) return a;
|
||||||
return a;
|
|
||||||
// work around the algo difference for full context
|
// work around the algo difference for full context
|
||||||
// work around the algo difference for semantic predicates
|
// work around the algo difference for semantic predicates
|
||||||
a = stripOutUnwantedLinesWith(a, "reportContextSensitivity","eval=false");
|
a = stripOutUnwantedLinesWith(a, "reportContextSensitivity","eval=false");
|
||||||
if(a.isEmpty())
|
if(a.isEmpty()) {
|
||||||
a = null;
|
a = null;
|
||||||
|
}
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,13 +95,10 @@ import static junit.framework.TestCase.assertEquals;
|
||||||
import static junit.framework.TestCase.assertFalse;
|
import static junit.framework.TestCase.assertFalse;
|
||||||
import static junit.framework.TestCase.assertNotNull;
|
import static junit.framework.TestCase.assertNotNull;
|
||||||
import static junit.framework.TestCase.assertTrue;
|
import static junit.framework.TestCase.assertTrue;
|
||||||
|
import static org.antlr.v4.test.runtime.java.BaseJavaTest.antlrLock;
|
||||||
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
|
|
||||||
public class BaseGoTest implements RuntimeTestSupport {
|
public class BaseGoTest implements RuntimeTestSupport {
|
||||||
// -J-Dorg.antlr.v4.test.BaseTest.level=FINE
|
|
||||||
// private static final Logger LOGGER =
|
|
||||||
// Logger.getLogger(BaseTest.class.getName());
|
|
||||||
|
|
||||||
public File overall_tmpdir = null;
|
public File overall_tmpdir = null;
|
||||||
public File tmpdir = null; // this is where the parser package is stored, typically inside the tmpdir
|
public File tmpdir = null; // this is where the parser package is stored, typically inside the tmpdir
|
||||||
private static File tmpGopath = null;
|
private static File tmpGopath = null;
|
||||||
|
@ -209,11 +206,14 @@ public class BaseGoTest implements RuntimeTestSupport {
|
||||||
public void testSetUp() throws Exception {
|
public void testSetUp() throws Exception {
|
||||||
// new output dir for each test
|
// new output dir for each test
|
||||||
String prop = System.getProperty("antlr-go-test-dir");
|
String prop = System.getProperty("antlr-go-test-dir");
|
||||||
if (prop != null && prop.length() > 0)
|
if (prop != null && prop.length() > 0) {
|
||||||
overall_tmpdir = new File(prop);
|
overall_tmpdir = new File(prop);
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
|
String threadName = Thread.currentThread().getName();
|
||||||
overall_tmpdir = new File(System.getProperty("java.io.tmpdir"),
|
overall_tmpdir = new File(System.getProperty("java.io.tmpdir"),
|
||||||
getClass().getSimpleName() + "-" + System.currentTimeMillis());
|
getClass().getSimpleName()+"-"+threadName+"-"+System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
|
||||||
if ( overall_tmpdir.exists())
|
if ( overall_tmpdir.exists())
|
||||||
this.eraseDirectory(overall_tmpdir);
|
this.eraseDirectory(overall_tmpdir);
|
||||||
|
@ -348,7 +348,9 @@ public class BaseGoTest implements RuntimeTestSupport {
|
||||||
if (defaultListener) {
|
if (defaultListener) {
|
||||||
antlr.addListener(new DefaultToolListener(antlr));
|
antlr.addListener(new DefaultToolListener(antlr));
|
||||||
}
|
}
|
||||||
antlr.processGrammarsOnCommandLine();
|
synchronized (antlrLock) {
|
||||||
|
antlr.processGrammarsOnCommandLine();
|
||||||
|
}
|
||||||
|
|
||||||
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
||||||
for (int i = 0; i < equeue.errors.size(); i++) {
|
for (int i = 0; i < equeue.errors.size(); i++) {
|
||||||
|
|
|
@ -88,7 +88,6 @@ import java.io.StringReader;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -100,8 +99,6 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertEquals;
|
import static junit.framework.TestCase.assertEquals;
|
||||||
import static junit.framework.TestCase.assertFalse;
|
import static junit.framework.TestCase.assertFalse;
|
||||||
|
@ -110,9 +107,6 @@ import static junit.framework.TestCase.assertTrue;
|
||||||
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
|
|
||||||
public class BaseJavaTest implements RuntimeTestSupport {
|
public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
// -J-Dorg.antlr.v4.test.BaseTest.level=FINE
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(BaseJavaTest.class.getName());
|
|
||||||
|
|
||||||
public static final String newline = System.getProperty("line.separator");
|
public static final String newline = System.getProperty("line.separator");
|
||||||
public static final String pathSep = System.getProperty("path.separator");
|
public static final String pathSep = System.getProperty("path.separator");
|
||||||
|
|
||||||
|
@ -143,7 +137,7 @@ public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
* directories for all tests which completed successfully, and preserving
|
* directories for all tests which completed successfully, and preserving
|
||||||
* the directories for tests which failed.</p>
|
* the directories for tests which failed.</p>
|
||||||
*/
|
*/
|
||||||
public static final boolean PRESERVE_TEST_DIR = Boolean.parseBoolean(System.getProperty("antlr.preserve-test-dir"));
|
public static final boolean PRESERVE_TEST_DIR = true; //Boolean.parseBoolean(System.getProperty("antlr.preserve-test-dir"));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The base test directory is the directory where generated files get placed
|
* The base test directory is the directory where generated files get placed
|
||||||
|
@ -204,9 +198,12 @@ public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void testSetUp() throws Exception {
|
public void testSetUp() throws Exception {
|
||||||
|
// STGroup.verbose = true;
|
||||||
|
// System.err.println("testSetUp "+Thread.currentThread().getName());
|
||||||
if ( CREATE_PER_TEST_DIRECTORIES ) {
|
if ( CREATE_PER_TEST_DIRECTORIES ) {
|
||||||
// new output dir for each test
|
// new output dir for each test
|
||||||
String testDirectory = getClass().getSimpleName()+"-"+System.currentTimeMillis();
|
String threadName = Thread.currentThread().getName();
|
||||||
|
String testDirectory = getClass().getSimpleName()+"-"+threadName+"-"+System.nanoTime();
|
||||||
tmpdir = new File(BASE_TEST_DIR, testDirectory).getAbsolutePath();
|
tmpdir = new File(BASE_TEST_DIR, testDirectory).getAbsolutePath();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -250,11 +247,6 @@ public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
return tool;
|
return tool;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Tool newTool() {
|
|
||||||
org.antlr.v4.Tool tool = new Tool(new String[]{"-o", tmpdir});
|
|
||||||
return tool;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ATN createATN(Grammar g, boolean useSerializer) {
|
protected ATN createATN(Grammar g, boolean useSerializer) {
|
||||||
if ( g.atn==null ) {
|
if ( g.atn==null ) {
|
||||||
semanticProcess(g);
|
semanticProcess(g);
|
||||||
|
@ -507,7 +499,9 @@ public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
if ( defaultListener ) {
|
if ( defaultListener ) {
|
||||||
antlr.addListener(new DefaultToolListener(antlr));
|
antlr.addListener(new DefaultToolListener(antlr));
|
||||||
}
|
}
|
||||||
antlr.processGrammarsOnCommandLine();
|
synchronized (antlrLock) {
|
||||||
|
antlr.processGrammarsOnCommandLine();
|
||||||
|
}
|
||||||
|
|
||||||
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
||||||
for (int i = 0; i<equeue.errors.size(); i++) {
|
for (int i = 0; i<equeue.errors.size(); i++) {
|
||||||
|
@ -563,7 +557,8 @@ public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
|
|
||||||
public ParseTree execParser(String startRuleName, String input,
|
public ParseTree execParser(String startRuleName, String input,
|
||||||
String parserName, String lexerName)
|
String parserName, String lexerName)
|
||||||
throws Exception {
|
throws Exception
|
||||||
|
{
|
||||||
Pair<Parser, Lexer> pl = getParserAndLexer(input, parserName, lexerName);
|
Pair<Parser, Lexer> pl = getParserAndLexer(input, parserName, lexerName);
|
||||||
Parser parser = pl.a;
|
Parser parser = pl.a;
|
||||||
return execStartRule(startRuleName, parser);
|
return execStartRule(startRuleName, parser);
|
||||||
|
@ -635,6 +630,9 @@ public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
listenerName, visitorName, startRuleName, input, showDiagnosticErrors, false);
|
listenerName, visitorName, startRuleName, input, showDiagnosticErrors, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** ANTLR isn't thread-safe to process grammars so we use a global lock for testing */
|
||||||
|
public static final Object antlrLock = new Object();
|
||||||
|
|
||||||
public String execParser(String grammarFileName,
|
public String execParser(String grammarFileName,
|
||||||
String grammarStr,
|
String grammarStr,
|
||||||
String parserName,
|
String parserName,
|
||||||
|
@ -647,10 +645,10 @@ public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
boolean profile)
|
boolean profile)
|
||||||
{
|
{
|
||||||
boolean success = rawGenerateAndBuildRecognizer(grammarFileName,
|
boolean success = rawGenerateAndBuildRecognizer(grammarFileName,
|
||||||
grammarStr,
|
grammarStr,
|
||||||
parserName,
|
parserName,
|
||||||
lexerName,
|
lexerName,
|
||||||
"-visitor");
|
"-visitor");
|
||||||
assertTrue(success);
|
assertTrue(success);
|
||||||
writeFile(tmpdir, "input", input);
|
writeFile(tmpdir, "input", input);
|
||||||
return rawExecRecognizer(parserName,
|
return rawExecRecognizer(parserName,
|
||||||
|
@ -771,32 +769,8 @@ public class BaseJavaTest implements RuntimeTestSupport {
|
||||||
this.stderrDuringParse = stderrVacuum.toString();
|
this.stderrDuringParse = stderrVacuum.toString();
|
||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
} catch (MalformedURLException ex) {
|
}
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
catch (Exception ex) {
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (IOException ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (InterruptedException ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (IllegalAccessException ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (IllegalArgumentException ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (InvocationTargetException ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (NoSuchMethodException ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (SecurityException ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
} catch (ClassNotFoundException ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
throw new RuntimeException(ex);
|
throw new RuntimeException(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,6 +97,7 @@ import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import static org.antlr.v4.test.runtime.java.BaseJavaTest.antlrLock;
|
||||||
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
@ -137,10 +138,12 @@ public abstract class BaseBrowserTest implements RuntimeTestSupport {
|
||||||
public void testSetUp() throws Exception {
|
public void testSetUp() throws Exception {
|
||||||
// new output dir for each test
|
// new output dir for each test
|
||||||
String prop = System.getProperty("antlr-javascript-test-dir");
|
String prop = System.getProperty("antlr-javascript-test-dir");
|
||||||
if(prop!=null && prop.length()>0)
|
if(prop!=null && prop.length()>0) {
|
||||||
httpdir = prop;
|
httpdir = prop;
|
||||||
else
|
}
|
||||||
httpdir = new File(System.getProperty("java.io.tmpdir"), getClass().getSimpleName()+"-"+System.currentTimeMillis()).getAbsolutePath();
|
else {
|
||||||
|
httpdir = new File(System.getProperty("java.io.tmpdir"), getClass().getSimpleName()+"-"+Thread.currentThread().getName()+"-"+System.currentTimeMillis()).getAbsolutePath();
|
||||||
|
}
|
||||||
File dir = new File(httpdir);
|
File dir = new File(httpdir);
|
||||||
if(dir.exists())
|
if(dir.exists())
|
||||||
this.eraseFiles(dir);
|
this.eraseFiles(dir);
|
||||||
|
@ -291,7 +294,9 @@ public abstract class BaseBrowserTest implements RuntimeTestSupport {
|
||||||
if (defaultListener) {
|
if (defaultListener) {
|
||||||
antlr.addListener(new DefaultToolListener(antlr));
|
antlr.addListener(new DefaultToolListener(antlr));
|
||||||
}
|
}
|
||||||
antlr.processGrammarsOnCommandLine();
|
synchronized (antlrLock) {
|
||||||
|
antlr.processGrammarsOnCommandLine();
|
||||||
|
}
|
||||||
|
|
||||||
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
||||||
for (int i = 0; i < equeue.errors.size(); i++) {
|
for (int i = 0; i < equeue.errors.size(); i++) {
|
||||||
|
|
|
@ -89,6 +89,7 @@ import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import static org.antlr.v4.test.runtime.java.BaseJavaTest.antlrLock;
|
||||||
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
@ -118,12 +119,14 @@ public class BaseNodeTest implements RuntimeTestSupport {
|
||||||
public void testSetUp() throws Exception {
|
public void testSetUp() throws Exception {
|
||||||
// new output dir for each test
|
// new output dir for each test
|
||||||
String prop = System.getProperty("antlr-javascript-test-dir");
|
String prop = System.getProperty("antlr-javascript-test-dir");
|
||||||
if (prop != null && prop.length() > 0)
|
if (prop != null && prop.length() > 0) {
|
||||||
tmpdir = prop;
|
tmpdir = prop;
|
||||||
else
|
}
|
||||||
|
else {
|
||||||
tmpdir = new File(System.getProperty("java.io.tmpdir"), getClass()
|
tmpdir = new File(System.getProperty("java.io.tmpdir"), getClass()
|
||||||
.getSimpleName() + "-" + System.currentTimeMillis())
|
.getSimpleName()+"-"+Thread.currentThread().getName()+"-"+System.currentTimeMillis())
|
||||||
.getAbsolutePath();
|
.getAbsolutePath();
|
||||||
|
}
|
||||||
File dir = new File(tmpdir);
|
File dir = new File(tmpdir);
|
||||||
if (dir.exists())
|
if (dir.exists())
|
||||||
this.eraseFiles(dir);
|
this.eraseFiles(dir);
|
||||||
|
@ -281,7 +284,9 @@ public class BaseNodeTest implements RuntimeTestSupport {
|
||||||
if (defaultListener) {
|
if (defaultListener) {
|
||||||
antlr.addListener(new DefaultToolListener(antlr));
|
antlr.addListener(new DefaultToolListener(antlr));
|
||||||
}
|
}
|
||||||
antlr.processGrammarsOnCommandLine();
|
synchronized (antlrLock) {
|
||||||
|
antlr.processGrammarsOnCommandLine();
|
||||||
|
}
|
||||||
|
|
||||||
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
||||||
for (int i = 0; i < equeue.errors.size(); i++) {
|
for (int i = 0; i < equeue.errors.size(); i++) {
|
||||||
|
|
|
@ -95,6 +95,7 @@ import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import static org.antlr.v4.test.runtime.java.BaseJavaTest.antlrLock;
|
||||||
import static org.junit.Assert.assertArrayEquals;
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
@ -138,10 +139,13 @@ public abstract class BasePythonTest implements RuntimeTestSupport {
|
||||||
// new output dir for each test
|
// new output dir for each test
|
||||||
String propName = getPropertyPrefix() + "-test-dir";
|
String propName = getPropertyPrefix() + "-test-dir";
|
||||||
String prop = System.getProperty(propName);
|
String prop = System.getProperty(propName);
|
||||||
if(prop!=null && prop.length()>0)
|
if(prop!=null && prop.length()>0) {
|
||||||
tmpdir = prop;
|
tmpdir = prop;
|
||||||
else
|
}
|
||||||
tmpdir = new File(System.getProperty("java.io.tmpdir"), getClass().getSimpleName()+"-"+System.currentTimeMillis()).getAbsolutePath();
|
else {
|
||||||
|
tmpdir = new File(System.getProperty("java.io.tmpdir"), getClass().getSimpleName()+
|
||||||
|
"-"+Thread.currentThread().getName()+"-"+System.currentTimeMillis()).getAbsolutePath();
|
||||||
|
}
|
||||||
antlrToolErrors = new StringBuilder();
|
antlrToolErrors = new StringBuilder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,7 +379,9 @@ public abstract class BasePythonTest implements RuntimeTestSupport {
|
||||||
if (defaultListener) {
|
if (defaultListener) {
|
||||||
antlr.addListener(new DefaultToolListener(antlr));
|
antlr.addListener(new DefaultToolListener(antlr));
|
||||||
}
|
}
|
||||||
antlr.processGrammarsOnCommandLine();
|
synchronized (antlrLock) {
|
||||||
|
antlr.processGrammarsOnCommandLine();
|
||||||
|
}
|
||||||
|
|
||||||
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
if ( !defaultListener && !equeue.errors.isEmpty() ) {
|
||||||
for (int i = 0; i < equeue.errors.size(); i++) {
|
for (int i = 0; i < equeue.errors.size(); i++) {
|
||||||
|
|
|
@ -54,6 +54,7 @@
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<sourceDirectory>src</sourceDirectory>
|
<sourceDirectory>src</sourceDirectory>
|
||||||
|
<testSourceDirectory>test</testSourceDirectory>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>com.googlecode.maven-download-plugin</groupId>
|
<groupId>com.googlecode.maven-download-plugin</groupId>
|
||||||
|
@ -73,6 +74,9 @@
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
<version>2.12.4</version>
|
<version>2.12.4</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
<includes>
|
||||||
|
<include>**/Test*.java</include>
|
||||||
|
</includes>
|
||||||
<systemPropertyVariables>
|
<systemPropertyVariables>
|
||||||
<antlr-python2-runtime>../../antlr4-python2/src</antlr-python2-runtime>
|
<antlr-python2-runtime>../../antlr4-python2/src</antlr-python2-runtime>
|
||||||
<antlr-python3-runtime>../../antlr4-python3/src</antlr-python3-runtime>
|
<antlr-python3-runtime>../../antlr4-python3/src</antlr-python3-runtime>
|
||||||
|
|
Loading…
Reference in New Issue