diff --git a/pom.xml b/pom.xml index ece64dd..93c31b5 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.google.pdsl pdsl - 1.10.0 + 1.10.1 pdsl http://www.github.com/google/polymorphicDSL diff --git a/src/main/java/com/pdsl/executors/ColorizedLoggerObserver.java b/src/main/java/com/pdsl/executors/ColorizedLoggerObserver.java index 380d70b..4e94cf6 100644 --- a/src/main/java/com/pdsl/executors/ColorizedLoggerObserver.java +++ b/src/main/java/com/pdsl/executors/ColorizedLoggerObserver.java @@ -4,6 +4,7 @@ import com.pdsl.logging.PdslThreadSafeOutputStream; import com.pdsl.reports.MetadataTestRunResults; import com.pdsl.specifications.PolymorphicDslTransformationException; +import com.pdsl.testcases.SharedTestCase; import com.pdsl.testcases.TestCase; import com.pdsl.testcases.TestSection; import org.antlr.v4.runtime.tree.ParseTreeListener; @@ -14,6 +15,7 @@ import java.io.InputStream; import java.nio.charset.Charset; import java.util.Collection; +import java.util.Iterator; /** * A logger for the progress of test execution where the output has color. @@ -26,6 +28,14 @@ public class ColorizedLoggerObserver implements ExecutorObserver { private static final String exceptionMessage = "Could not log!"; private final Charset charset; private final byte[] RESET; + private Strategy strategy = Strategy.HIDE_INTERPRETER; + // Avoid race conditions in logic + // where a sharedtestsuite might be running with normal test suites in concurrent environment + private int concurrencyCounter = 0; + private enum Strategy { + LOG_INTERPRETER, + HIDE_INTERPRETER; + } public ColorizedLoggerObserver() { this.charset = Charset.defaultCharset(); @@ -61,11 +71,24 @@ private void notifyStreams(String str) { } } + @Override + public void onBeforeTestSuite(Collection testCases, + String context) { + strategy = Strategy.LOG_INTERPRETER; + logBeforeSuite(); + } + @Override public void onBeforeTestCase(TestCase testCase) { notifyStreams(AnsiTerminalColorHelper.YELLOW + String.format("%s%n%s%n", testCase.getOriginalSource(), testCase.getTestTitle() + AnsiTerminalColorHelper.RESET)); + Object longDescription = testCase.getMetadata().get(TestCase.STANDARD_LONG_DESCRIPTION_KEY); + if (longDescription instanceof InputStream descriptionStream) { + notifyStreams(AnsiTerminalColorHelper.CYAN.getBytes(charset)); + notifyStreams(descriptionStream); + notifyStreams(RESET); + } } @Override @@ -75,27 +98,25 @@ public void onTestCaseSuccess(TestCase testCase) { + AnsiTerminalColorHelper.RESET).getBytes(charset)); } - private void beforePhrase(TestSection testSection) { - if (testSection.getMetaData().isPresent()) { - notifyStreams(AnsiTerminalColorHelper.CYAN.getBytes(charset)); - notifyStreams(testSection.getMetaData().get()); - notifyStreams(RESET); + private void notateInterpreter(Class interpreter) { + if (strategy.equals(Strategy.LOG_INTERPRETER)) { + notifyStreams(AnsiTerminalColorHelper.GREY); + notifyStreams(String.format("^ %s %n", interpreter)); + notifyStreams(AnsiTerminalColorHelper.RESET); } } - @Override - public void onBeforePhrase(ParseTreeVisitor visitor, TestSection testSection) { - beforePhrase(testSection); - } - @Override public void onAfterPhrase(ParseTreeListener listener, ParseTreeWalker walker, TestSection testSection) { afterPhrase(testSection); + notateInterpreter(listener.getClass()); } @Override public void onAfterPhrase(ParseTreeVisitor visitor, TestSection testSection) { + afterPhrase(testSection); + notateInterpreter(visitor.getClass()); } private void afterPhrase(TestSection testSection) { @@ -138,6 +159,10 @@ public void onAfterTestSuite(Collection testCases, ParseTree @Override public void onAfterTestSuite(Collection testCases, ParseTreeListener listener, MetadataTestRunResults results, String context) { logAfterSuite(results); + concurrencyCounter--; + if (concurrencyCounter <= 0) { + strategy = Strategy.HIDE_INTERPRETER; + } } @Override @@ -159,5 +184,6 @@ private void logAfterSuite(MetadataTestRunResults results) { private void logBeforeSuite() { notifyStreams(AnsiTerminalColorHelper.BRIGHT_YELLOW + "Running tests..." + AnsiTerminalColorHelper.RESET); + concurrencyCounter++; } } diff --git a/src/main/java/com/pdsl/executors/DefaultPolymorphicDslTestExecutor.java b/src/main/java/com/pdsl/executors/DefaultPolymorphicDslTestExecutor.java index 871e77b..38c21c1 100644 --- a/src/main/java/com/pdsl/executors/DefaultPolymorphicDslTestExecutor.java +++ b/src/main/java/com/pdsl/executors/DefaultPolymorphicDslTestExecutor.java @@ -20,6 +20,7 @@ import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.stream.Collectors; /** * An executor that runs PDSL tests create from a TestCaseFactory. @@ -191,7 +192,7 @@ public MetadataTestRunResults runTestsWithMetadata(Collection sh List listOfTestCases = sharedTestCase.getSharedTestCaseWithInterpreters().stream() .map(SharedTestCaseWithInterpreter::getTestCase).toList(); int size = listOfTestCases.getFirst().getUnfilteredPhraseBody().size(); - TestCase testCase = listOfTestCases.stream().findFirst().orElseThrow(); + notifyBeforeTestCase(sharedTestCase); // Create each visitor/listener one time per test case Map suppliedListeneres = new HashMap<>(); @@ -209,6 +210,11 @@ public MetadataTestRunResults runTestsWithMetadata(Collection sh .map(Iterator::next) .findFirst() .orElseThrow(() -> new IllegalStateException("No executable phrases were found!")); + Map> interpreter2Iterator = sharedTestCase.getSharedTestCaseWithInterpreters() + .stream() + .collect(Collectors.toMap(interpreter -> interpreter, + interpreter -> interpreter.getTestCase().getContextFilteredTestSectionIterator() + )); try { for (int j = 0; @@ -221,8 +227,13 @@ public MetadataTestRunResults runTestsWithMetadata(Collection sh //TODO - Add implementation for the duplication checking Optional parseTree = filteredPhrase.getParseTree(); if (parseTree.isPresent()) { + if (!interpreter2Iterator.get(interpreter).hasNext()) { + // If a parse tree was found there should definitely be a new test section or something + // is wrong + throw new IllegalStateException("PDSL Framework error: The context filtered interpreters are out of sync!"); + } + testSection = interpreter2Iterator.get(interpreter).next(); phrase = Optional.of(new DefaultPhrase(parseTree.get(), phraseIndex)); - interpreterObj = Optional.of(interpreter.getInterpreterObj()); if (interpreterObj.get().getListenerSupplier().isPresent()) { @@ -241,27 +252,26 @@ public MetadataTestRunResults runTestsWithMetadata(Collection sh visitor.visit(parseTree.get()); notifyAfterVisitor(visitor, testSection); } - } } phraseIndex++; } - notifyTestCaseSuccess(testCase); + notifyTestCaseSuccess(sharedTestCase); } catch (Throwable e) { if (interpreterObj.isPresent() && phrase.isPresent()) { if (interpreterObj.get().getParseTreeListener().isPresent()) { notifyOnListenerException(interpreterObj.get().getParseTreeListener().get(), - testSection, testCase, e); + testSection, sharedTestCase, e); } else if (interpreterObj.get().getParseTreeVisitor().isPresent()) { notifyOnVisitorException(interpreterObj.get().getParseTreeVisitor().get(), - testSection, testCase, e); + testSection, sharedTestCase, e); } } - results.addTestResult(DefaultTestResult.failedTest(testCase, null, e, phraseIndex, + results.addTestResult(DefaultTestResult.failedTest(sharedTestCase, null, e, phraseIndex, size - phraseIndex)); } - results.addTestResult(DefaultTestResult.passingTest(testCase)); - notifyAfterTestCase(testCase); + results.addTestResult(DefaultTestResult.passingTest(sharedTestCase)); + notifyAfterTestCase(sharedTestCase); } notifyAfterTestSuite(sharedTestCases, results, context); return results; @@ -286,7 +296,7 @@ public MetadataTestRunResults runTestsWithMetadata(Collection sh * be called * testCaseSuccess - Called once after each test case only if it had no * phrase failures - * @param observer + * @param observer an observer to notify during test execution events */ @Override public void registerObserver(ExecutorObserver observer) { diff --git a/src/main/java/com/pdsl/testcases/DefaultPdslTestCase.java b/src/main/java/com/pdsl/testcases/DefaultPdslTestCase.java index 2b602ad..f61c338 100644 --- a/src/main/java/com/pdsl/testcases/DefaultPdslTestCase.java +++ b/src/main/java/com/pdsl/testcases/DefaultPdslTestCase.java @@ -8,6 +8,7 @@ import org.antlr.v4.runtime.tree.ParseTree; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -22,6 +23,8 @@ public class DefaultPdslTestCase implements TestCase { private final List contextFilteredPhraseBody; private final List phrasesToTestSections; private final URI source; + private final Map metadata; + private static final String errMessage = "Test case title cannot be empty or null!"; public static final PdslTestCaseComparator DEFAULT_TEST_CASE_COMPARATOR = new PdslTestCaseComparator(); @@ -33,7 +36,7 @@ public class DefaultPdslTestCase implements TestCase { * @param source the original source this test case was created from */ public DefaultPdslTestCase(String testCaseTitle, List testBodyFragments, URI source) { - String errMessage = "Test case title cannot be empty or null!"; + Preconditions.checkNotNull(testCaseTitle, errMessage); Preconditions.checkNotNull(source); Preconditions.checkArgument(!testCaseTitle.isEmpty(), errMessage); @@ -55,6 +58,39 @@ public DefaultPdslTestCase(String testCaseTitle, List testBody .map(Optional::get) .map(ParseTree::getText) .toList(); + metadata = new ConcurrentHashMap<>(); + } + + public DefaultPdslTestCase(String testCaseTitle, List testBodyFragments, URI source, + Map metadata) { + Preconditions.checkNotNull(testCaseTitle, errMessage); + Preconditions.checkNotNull(source); + Preconditions.checkArgument(!testCaseTitle.isEmpty(), errMessage); + Preconditions.checkNotNull(testBodyFragments, errMessage); + Preconditions.checkArgument(!testBodyFragments.isEmpty(), errMessage); + Preconditions.checkNotNull(metadata); + this.source = source; + this.testBodyFragments = testBodyFragments; + this.testCaseTitle = testCaseTitle; + this.phrasesToTestSections = testBodyFragments.stream() + .map(TestBodyFragment::getTestPhrases) + .flatMap(Collection::stream) + .toList(); + this.unfilteredPhraseBody = phrasesToTestSections.stream() + .map(FilteredPhrase::getPhrase) + .toList(); + this.contextFilteredPhraseBody = phrasesToTestSections.stream() + .map(FilteredPhrase::getParseTree) + .filter(Optional::isPresent) + .map(Optional::get) + .map(ParseTree::getText) + .toList(); + this.metadata = metadata; + } + + @Override + public Map getMetadata() { + return metadata; } @Override diff --git a/src/main/java/com/pdsl/testcases/DefaultTaggedTestCase.java b/src/main/java/com/pdsl/testcases/DefaultTaggedTestCase.java index 88e1064..5bea9cd 100644 --- a/src/main/java/com/pdsl/testcases/DefaultTaggedTestCase.java +++ b/src/main/java/com/pdsl/testcases/DefaultTaggedTestCase.java @@ -6,21 +6,22 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Map; /** A test case that has arbitrary tags associated with it. */ public class DefaultTaggedTestCase implements TaggedTestCase { private final TestCase testCase; - private final Collection tags; - + private final Collection tags; // Keep to avoid the need for casting and checking generic types public DefaultTaggedTestCase(TestCase testCase, Collection tags) { this.testCase = testCase; this.tags = tags; + testCase.getMetadata().put(TestCase.DEFAULT_TAGS, this.tags); // Add a reference just to be thorough } @Override public Collection getTags() { - return tags; + return tags; } @Override @@ -52,4 +53,9 @@ public Iterator getContextFilteredTestSectionIterator() { public List getFilteredPhrases() { return testCase.getFilteredPhrases(); } + + @Override + public Map getMetadata() { + return testCase.getMetadata(); + } } diff --git a/src/main/java/com/pdsl/testcases/DefaultTestSection.java b/src/main/java/com/pdsl/testcases/DefaultTestSection.java index b5421eb..3b24ea8 100644 --- a/src/main/java/com/pdsl/testcases/DefaultTestSection.java +++ b/src/main/java/com/pdsl/testcases/DefaultTestSection.java @@ -3,7 +3,9 @@ import com.pdsl.specifications.Phrase; import java.io.InputStream; +import java.util.Map; import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; /** * A container of phrases representing a chunk of a test case. @@ -13,18 +15,22 @@ */ public class DefaultTestSection implements TestSection { - private final Optional metaData; - private final Phrase phrase; + private final Phrase phrase; + private final Optional> metadata; + private final Optional longDescription; /** * Creates a test section with the provided phrase. * - * @param metaData additional information about the phrase + * @param longDescription additional information about the phrase * @param phrase an arbitrary sentence recognized by a parser */ - public DefaultTestSection(InputStream metaData, Phrase phrase) { - this.metaData = Optional.ofNullable(metaData); + public DefaultTestSection(InputStream longDescription, Phrase phrase) { + Map metadataMap = new ConcurrentHashMap<>(1); + metadataMap.put(TestCase.STANDARD_LONG_DESCRIPTION_KEY, longDescription); + this.metadata = Optional.of(metadataMap); this.phrase = phrase; + this.longDescription = Optional.ofNullable(longDescription); } /** @@ -33,13 +39,19 @@ public DefaultTestSection(InputStream metaData, Phrase phrase) { * @param phrase an arbitrary sentence recognized by a parser */ public DefaultTestSection(Phrase phrase) { - this.metaData = Optional.empty(); + this.metadata = Optional.empty(); this.phrase = phrase; + this.longDescription = Optional.empty(); } @Override public Optional getMetaData() { - return metaData; + return longDescription; + } + + @Override + public Optional> getSectionMetadata() { + return metadata; } @Override diff --git a/src/main/java/com/pdsl/testcases/PreorderTestCaseFactory.java b/src/main/java/com/pdsl/testcases/PreorderTestCaseFactory.java index a4a460d..392750c 100644 --- a/src/main/java/com/pdsl/testcases/PreorderTestCaseFactory.java +++ b/src/main/java/com/pdsl/testcases/PreorderTestCaseFactory.java @@ -64,7 +64,7 @@ private List recursiveWalkAndCreateOnLeaf(TestSpecification testSpecif } // Add phrases in this node if present if (testSpecification.getFilteredPhrases().isPresent()) { - childTestBodyFragments.add(new TestBodyFragment(childMetaData.isPresent() ? childMetaData.get() : null, testSpecification.getFilteredPhrases().get())); + childTestBodyFragments.add(new TestBodyFragment(null, testSpecification.getFilteredPhrases().get())); } // Add phrases in child node if present if (testSpecification.nestedTestSpecifications().isPresent()) { @@ -74,6 +74,7 @@ private List recursiveWalkAndCreateOnLeaf(TestSpecification testSpecif return testCases; } else { TestCase testCase = new DefaultPdslTestCase(testSpecification.getName(), childTestBodyFragments, testSpecification.getOriginalTestResource()); + testCase.getMetadata().put(TestCase.STANDARD_LONG_DESCRIPTION_KEY, childMetaData); if (!tags.isEmpty()) { testCase = new DefaultTaggedTestCase(testCase, tags); } diff --git a/src/main/java/com/pdsl/testcases/SharedTestCase.java b/src/main/java/com/pdsl/testcases/SharedTestCase.java index 93ee270..1bdf57e 100644 --- a/src/main/java/com/pdsl/testcases/SharedTestCase.java +++ b/src/main/java/com/pdsl/testcases/SharedTestCase.java @@ -16,7 +16,7 @@ */ public final class SharedTestCase implements TestCase { - List sharedTestCaseWithInterpreters; + private final List sharedTestCaseWithInterpreters; public SharedTestCase(List sharedTestCaseWithInterpreters) { this.sharedTestCaseWithInterpreters = sharedTestCaseWithInterpreters; @@ -54,4 +54,9 @@ public Iterator getContextFilteredTestSectionIterator() { public List getFilteredPhrases() { return sharedTestCaseWithInterpreters.getFirst().getTestCase().getFilteredPhrases(); } + + @Override + public Map getMetadata() { + return sharedTestCaseWithInterpreters.getFirst().getTestCase().getMetadata(); + } } diff --git a/src/main/java/com/pdsl/testcases/TestCase.java b/src/main/java/com/pdsl/testcases/TestCase.java index cad3541..c2eb315 100644 --- a/src/main/java/com/pdsl/testcases/TestCase.java +++ b/src/main/java/com/pdsl/testcases/TestCase.java @@ -2,9 +2,11 @@ import com.pdsl.specifications.FilteredPhrase; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; import java.net.URI; -import java.util.Iterator; -import java.util.List; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; /** * An executable test for PDSL to process with a test case executor of some kind. @@ -13,6 +15,8 @@ */ public interface TestCase { + String STANDARD_LONG_DESCRIPTION_KEY = "polymorphic-dsl-test-case-long-description"; + String DEFAULT_TAGS = "polymorphic-dsl-test-case-tags"; /** * Returns the original source file this test was created from. * @@ -83,4 +87,17 @@ public interface TestCase { * @return List the filtered phrases from all phrases that are associated with the test case */ List getFilteredPhrases(); + + /** + * Provides a general container for information associated with this test case. + *

+ * This could include things like tags, streams for text that cannot be stored in a string, etc. + * The purpose of these objects (if any) is determined by the underlying implementation. + * + * @return a map of arbitrary objects associated with this test case + */ + Map getMetadata(); + + + } diff --git a/src/main/java/com/pdsl/testcases/TestSection.java b/src/main/java/com/pdsl/testcases/TestSection.java index 33de140..ad36c36 100644 --- a/src/main/java/com/pdsl/testcases/TestSection.java +++ b/src/main/java/com/pdsl/testcases/TestSection.java @@ -8,6 +8,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -22,9 +23,19 @@ public interface TestSection { /** * Provides additional information associated with this test section if found. * @return optional of type input stream representing the metadata + * @deprecated use getSectionMetadata instead */ + @Deprecated Optional getMetaData(); + /** + * Provides additional information associated with this test section. + *

+ * The use of this information, if any, is up to the underlying implementation. + * @return map containing arbitrary objects + */ + Optional> getSectionMetadata(); + /** * returns the phrase that composes part of a test. * @return a phrase that represents part of a test case @@ -53,5 +64,4 @@ static List convertBodyFragment(TestBodyFragment testBodyFragment) } return testSections; } - } diff --git a/src/main/java/org/junit/jupiter/engine/descriptor/PdslGeneralInvocationContextProvider.java b/src/main/java/org/junit/jupiter/engine/descriptor/PdslGeneralInvocationContextProvider.java index abcd5dc..4907d31 100644 --- a/src/main/java/org/junit/jupiter/engine/descriptor/PdslGeneralInvocationContextProvider.java +++ b/src/main/java/org/junit/jupiter/engine/descriptor/PdslGeneralInvocationContextProvider.java @@ -165,7 +165,8 @@ protected Collection getTestCases(PdslConfigParameter configParameter, .processTestSpecification(testSpecifications); List duplicateUris = new ArrayList<>(); // Remove any duplicates with the same filtered test body - if (System.getProperty("pdsl.filterDuplicates").equalsIgnoreCase( "true")) { + if (System.getProperty("pdsl.filterDuplicates") != null + && System.getProperty("pdsl.filterDuplicates").equalsIgnoreCase( "true")) { testCases.forEach(tc -> { if (duplicateTest.containsKey(tc.getContextFilteredPhraseBody())) { duplicateUris.add(tc.getOriginalSource()); diff --git a/src/test/java/com/pdsl/api/GherkinPolymorphicDslTestExecutor.java b/src/test/java/com/pdsl/api/GherkinPolymorphicDslTestExecutor.java index bec9a90..5dee516 100644 --- a/src/test/java/com/pdsl/api/GherkinPolymorphicDslTestExecutor.java +++ b/src/test/java/com/pdsl/api/GherkinPolymorphicDslTestExecutor.java @@ -327,7 +327,7 @@ public void interpreter_executesSuccessfully() { /* * com.pdsl.runners.junit.PdslGherkinJUnit4Runner.runChild * */ - List InterpreterObjs = List.of(new InterpreterObj(new InterpreterOneListenerImpl()), new InterpreterObj(new InterpreterTwoListenerImpl())); + List InterpreterObjs = List.of(new InterpreterObj(new InterpreterOneParserBaseListener()), new InterpreterObj(new InterpreterTwoParserBaseListener())); SharedTestSuite sharedTestSuite = SharedTestSuite.of(testCasesList, InterpreterObjs); MetadataTestRunResults results = gherkinTestExecutor.runTestsWithMetadata(sharedTestSuite.getSharedTestCaseList(), "API"); @@ -383,7 +383,7 @@ public void visitErrorNode(ErrorNode errorNode) { /* * com.pdsl.runners.junit.PdslGherkinJUnit4Runner.runChild * */ - List interpreterObjs = List.of(new InterpreterObj(new InterpreterOneListenerImpl()), new InterpreterObj(new InterpreterTwoListenerExceptionImpl())); + List interpreterObjs = List.of(new InterpreterObj(new InterpreterOneParserBaseListener()), new InterpreterObj(new InterpreterTwoListenerExceptionImpl())); SharedTestSuite sharedTestSuite = SharedTestSuite.of(testCasesList, interpreterObjs); MetadataTestRunResults results = gherkinTestExecutor.runTestsWithMetadata(sharedTestSuite.getSharedTestCaseList(), "APIs"); diff --git a/src/test/java/com/pdsl/grammars/InterpreterOneListenerImpl.java b/src/test/java/com/pdsl/grammars/InterpreterOneListenerImpl.java deleted file mode 100644 index f9678b8..0000000 --- a/src/test/java/com/pdsl/grammars/InterpreterOneListenerImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.pdsl.grammars; - -import com.pdsl.grammars.InterpreterOneParser.HelloWorldContext; -import com.pdsl.grammars.InterpreterOneParser.PolymorphicDslAllRulesContext; -import org.antlr.v4.runtime.ParserRuleContext; -import org.antlr.v4.runtime.tree.ErrorNode; -import org.antlr.v4.runtime.tree.TerminalNode; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public final class InterpreterOneListenerImpl implements InterpreterOneParserListener { - - private Logger logger = LoggerFactory.getLogger(InterpreterOneListenerImpl.class); - - @Override - public void visitErrorNode(ErrorNode errorNode) { - logger.error(errorNode.toString()); - logger.error(errorNode.getText()); - - throw new IllegalStateException( - "There was an error in the grammar! Check the G4 files for the issue!"); - } - - @Override - public void visitTerminal(TerminalNode terminalNode) {} - - @Override - public void enterEveryRule(ParserRuleContext parserRuleContext) {} - - @Override - public void exitEveryRule(ParserRuleContext parserRuleContext) {} - - @Override - public void enterPolymorphicDslAllRules(PolymorphicDslAllRulesContext ctx) {} - - @Override - public void exitPolymorphicDslAllRules(PolymorphicDslAllRulesContext ctx) {} - - @Override - public void enterHelloWorld(HelloWorldContext ctx) { - logger.info("enterHelloWorld(). I am from InterpreterOneListenerImpl."); - } - - @Override - public void exitHelloWorld(HelloWorldContext ctx) {} - -} diff --git a/src/test/java/com/pdsl/grammars/InterpreterTwoListenerImpl.java b/src/test/java/com/pdsl/grammars/InterpreterTwoListenerImpl.java deleted file mode 100644 index 985c17a..0000000 --- a/src/test/java/com/pdsl/grammars/InterpreterTwoListenerImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.pdsl.grammars; - -import com.pdsl.grammars.InterpreterTwoParser.HiFolksContext; -import org.antlr.v4.runtime.ParserRuleContext; -import org.antlr.v4.runtime.tree.ErrorNode; -import org.antlr.v4.runtime.tree.TerminalNode; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public final class InterpreterTwoListenerImpl implements InterpreterTwoParserListener { - - private Logger logger = LoggerFactory.getLogger(InterpreterTwoListenerImpl.class); - - @Override - public void visitErrorNode(ErrorNode errorNode) { - logger.error(errorNode.toString()); - logger.error(errorNode.getText()); - - throw new IllegalStateException( - "There was an error in the grammar! Check the G4 files for the issue!"); - } - - @Override - public void visitTerminal(TerminalNode terminalNode) {} - - @Override - public void enterEveryRule(ParserRuleContext parserRuleContext) {} - - @Override - public void exitEveryRule(ParserRuleContext parserRuleContext) {} - - @Override - public void enterHiFolks(HiFolksContext ctx) { - logger.info("enterHiFolks(). I am from InterpreterTwoListenerImpl."); - } - - @Override - public void exitHiFolks(HiFolksContext ctx) {} - - @Override - public void enterPolymorphicDslAllRules(InterpreterTwoParser.PolymorphicDslAllRulesContext ctx) {} - - @Override - public void exitPolymorphicDslAllRules(InterpreterTwoParser.PolymorphicDslAllRulesContext ctx) {} -} diff --git a/src/test/java/com/pdsl/interpreter/InterpreterOne.java b/src/test/java/com/pdsl/interpreter/InterpreterOne.java index 5797b9f..cbea86b 100644 --- a/src/test/java/com/pdsl/interpreter/InterpreterOne.java +++ b/src/test/java/com/pdsl/interpreter/InterpreterOne.java @@ -2,15 +2,16 @@ import com.pdsl.grammars.InterpreterOneLexer; import com.pdsl.grammars.InterpreterOneParser; -import com.pdsl.grammars.InterpreterOneListenerImpl; +import com.pdsl.grammars.InterpreterOneParserBaseListener; import com.pdsl.runners.PdslGherkinApplication; import com.pdsl.runners.PdslTest; import com.pdsl.runners.RecognizedBy; import com.pdsl.runners.junit.PdslGherkinJUnit4Runner; -import javax.inject.Provider; import org.antlr.v4.runtime.tree.ParseTreeListener; import org.junit.runner.RunWith; +import javax.inject.Provider; + /** * This is for debugging only. * It's basic happy path pDSL framework scenario testing - it's covered in the regular regression, does not require to be included in the main regression scope. @@ -38,7 +39,7 @@ public void helloHiTest(){} public static class InterpreterOneListenerProvider implements Provider { @Override public ParseTreeListener get() { - return new InterpreterOneListenerImpl(); + return new InterpreterOneParserBaseListener(); } } } diff --git a/src/test/java/com/pdsl/interpreter/InterpreterTwo.java b/src/test/java/com/pdsl/interpreter/InterpreterTwo.java index 2ef26ea..a5558a4 100644 --- a/src/test/java/com/pdsl/interpreter/InterpreterTwo.java +++ b/src/test/java/com/pdsl/interpreter/InterpreterTwo.java @@ -2,14 +2,15 @@ import com.pdsl.grammars.InterpreterTwoLexer; import com.pdsl.grammars.InterpreterTwoParser; -import com.pdsl.grammars.InterpreterTwoListenerImpl; +import com.pdsl.grammars.InterpreterTwoParserBaseListener; import com.pdsl.runners.PdslGherkinApplication; import com.pdsl.runners.PdslTest; +import com.pdsl.runners.RecognizedBy; import com.pdsl.runners.junit.PdslGherkinJUnit4Runner; -import javax.inject.Provider; import org.antlr.v4.runtime.tree.ParseTreeListener; import org.junit.runner.RunWith; -import com.pdsl.runners.RecognizedBy; + +import javax.inject.Provider; /** * This is for debugging only. @@ -37,7 +38,7 @@ public void helloHiTest(){} public static class InterpreterTwoListenerProvider implements Provider { @Override public ParseTreeListener get() { - return new InterpreterTwoListenerImpl(); + return new InterpreterTwoParserBaseListener(); } } }