Search in sources :

Example 1 with Node

use of io.cucumber.plugin.event.Node in project cucumber-jvm by cucumber.

the class TimelineFormatter method findRootNodeName.

private String findRootNodeName(TestCase testCase) {
    Location location = testCase.getLocation();
    Predicate<Node> withLocation = candidate -> candidate.getLocation().equals(location);
    return parsedTestSources.get(testCase.getUri()).stream().map(node -> node.findPathTo(withLocation)).filter(Optional::isPresent).map(Optional::get).findFirst().map(nodes -> nodes.get(0)).flatMap(Node::getName).orElse("Unknown");
}
Also used : ConcurrentEventListener(io.cucumber.plugin.ConcurrentEventListener) TestSourceParsed(io.cucumber.plugin.event.TestSourceParsed) HashMap(java.util.HashMap) TestCase(io.cucumber.plugin.event.TestCase) ObjectMapper(io.cucumber.messages.internal.com.fasterxml.jackson.databind.ObjectMapper) TestCaseStarted(io.cucumber.plugin.event.TestCaseStarted) TestCaseFinished(io.cucumber.plugin.event.TestCaseFinished) Map(java.util.Map) URI(java.net.URI) ROOT(java.util.Locale.ROOT) EventPublisher(io.cucumber.plugin.event.EventPublisher) OutputStream(java.io.OutputStream) Include(io.cucumber.messages.internal.com.fasterxml.jackson.annotation.JsonInclude.Include) TestCaseEvent(io.cucumber.plugin.event.TestCaseEvent) Predicate(java.util.function.Predicate) SerializationFeature(io.cucumber.messages.internal.com.fasterxml.jackson.databind.SerializationFeature) Collection(java.util.Collection) FileOutputStream(java.io.FileOutputStream) Node(io.cucumber.plugin.event.Node) IOException(java.io.IOException) Location(io.cucumber.plugin.event.Location) File(java.io.File) FileNotFoundException(java.io.FileNotFoundException) Feature(io.cucumber.messages.internal.com.fasterxml.jackson.core.JsonGenerator.Feature) TreeMap(java.util.TreeMap) TestRunFinished(io.cucumber.plugin.event.TestRunFinished) Closeable(java.io.Closeable) Optional(java.util.Optional) CucumberException(io.cucumber.core.exception.CucumberException) InputStream(java.io.InputStream) Optional(java.util.Optional) Node(io.cucumber.plugin.event.Node) Location(io.cucumber.plugin.event.Location)

Example 2 with Node

use of io.cucumber.plugin.event.Node in project cucumber-jvm by cucumber.

the class FeatureParserTest method unnamed_elements_return_empty_strings_as_name.

@Test
void unnamed_elements_return_empty_strings_as_name() throws IOException {
    URI uri = URI.create("classpath:com/example.feature");
    String source = new String(readAllBytes(Paths.get("src/test/resources/io/cucumber/core/gherkin/messages/unnamed.feature")));
    Feature feature = parser.parse(uri, source, UUID::randomUUID).get();
    assertEquals(Optional.empty(), feature.getName());
    Node.Rule rule = (Node.Rule) feature.elements().iterator().next();
    assertEquals(Optional.empty(), rule.getName());
    assertEquals(Optional.of("Rule"), rule.getKeyword());
    Iterator<Node> ruleElements = rule.elements().iterator();
    Node.Scenario scenario = (Node.Scenario) ruleElements.next();
    assertEquals(Optional.empty(), scenario.getName());
    assertEquals(Optional.of("Scenario"), scenario.getKeyword());
    Node.ScenarioOutline scenarioOutline = (Node.ScenarioOutline) ruleElements.next();
    assertEquals(Optional.empty(), scenarioOutline.getName());
    assertEquals(Optional.of("Scenario Outline"), scenarioOutline.getKeyword());
    Node.Examples examples = scenarioOutline.elements().iterator().next();
    assertEquals(Optional.empty(), examples.getName());
    assertEquals(Optional.of("Examples"), examples.getKeyword());
    Node.Example example = examples.elements().iterator().next();
    // Example is the exception.
    assertEquals(Optional.of("Example #1"), example.getName());
    assertEquals(Optional.empty(), example.getKeyword());
}
Also used : Node(io.cucumber.plugin.event.Node) URI(java.net.URI) Feature(io.cucumber.core.gherkin.Feature) Test(org.junit.jupiter.api.Test)

Example 3 with Node

use of io.cucumber.plugin.event.Node in project cucumber-jvm by cucumber.

the class TeamCityPlugin method printTestCaseStarted.

private void printTestCaseStarted(TestCaseStarted event) {
    TestCase testCase = event.getTestCase();
    URI uri = testCase.getUri();
    String timestamp = extractTimeStamp(event);
    Location location = testCase.getLocation();
    Predicate<Node> withLocation = candidate -> location.equals(candidate.getLocation());
    List<Node> path = parsedTestSources.get(uri).stream().map(node -> node.findPathTo(withLocation)).filter(Optional::isPresent).map(Optional::get).findFirst().orElse(emptyList());
    poppedNodes(path).forEach(node -> finishNode(timestamp, node));
    pushedNodes(path).forEach(node -> startNode(uri, timestamp, node));
    this.currentStack = path;
    this.currentTestCase = testCase;
    print(TEMPLATE_PROGRESS_TEST_STARTED, timestamp);
}
Also used : TestStepStarted(io.cucumber.plugin.event.TestStepStarted) ExceptionUtils.printStackTrace(io.cucumber.core.exception.ExceptionUtils.printStackTrace) ZonedDateTime(java.time.ZonedDateTime) TestStep(io.cucumber.plugin.event.TestStep) TestSourceParsed(io.cucumber.plugin.event.TestSourceParsed) TestStepFinished(io.cucumber.plugin.event.TestStepFinished) HashMap(java.util.HashMap) Status(io.cucumber.plugin.event.Status) TestCase(io.cucumber.plugin.event.TestCase) Supplier(java.util.function.Supplier) EventListener(io.cucumber.plugin.EventListener) ArrayList(java.util.ArrayList) PickleStepTestStep(io.cucumber.plugin.event.PickleStepTestStep) TestCaseStarted(io.cucumber.plugin.event.TestCaseStarted) Matcher(java.util.regex.Matcher) EmbedEvent(io.cucumber.plugin.event.EmbedEvent) WriteEvent(io.cucumber.plugin.event.WriteEvent) SnippetsSuggestedEvent(io.cucumber.plugin.event.SnippetsSuggestedEvent) TestCaseFinished(io.cucumber.plugin.event.TestCaseFinished) Locale(java.util.Locale) Map(java.util.Map) HookTestStep(io.cucumber.plugin.event.HookTestStep) URI(java.net.URI) ZoneOffset(java.time.ZoneOffset) Event(io.cucumber.plugin.event.Event) EventPublisher(io.cucumber.plugin.event.EventPublisher) PrintStream(java.io.PrintStream) Result(io.cucumber.plugin.event.Result) Predicate(java.util.function.Predicate) Collections.emptyList(java.util.Collections.emptyList) Collection(java.util.Collection) TestRunStarted(io.cucumber.plugin.event.TestRunStarted) Node(io.cucumber.plugin.event.Node) Location(io.cucumber.plugin.event.Location) Collectors(java.util.stream.Collectors) Collectors.joining(java.util.stream.Collectors.joining) HookType(io.cucumber.plugin.event.HookType) List(java.util.List) Suggestion(io.cucumber.plugin.event.SnippetsSuggestedEvent.Suggestion) TestRunFinished(io.cucumber.plugin.event.TestRunFinished) DateTimeFormatter(java.time.format.DateTimeFormatter) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) Collections(java.util.Collections) Optional(java.util.Optional) TestCase(io.cucumber.plugin.event.TestCase) Node(io.cucumber.plugin.event.Node) URI(java.net.URI) Location(io.cucumber.plugin.event.Location)

Example 4 with Node

use of io.cucumber.plugin.event.Node in project cucumber-jvm by cucumber.

the class TestNGFormatter method findRootNodeName.

private String findRootNodeName(io.cucumber.plugin.event.TestCase testCase) {
    Location location = testCase.getLocation();
    Predicate<Node> withLocation = candidate -> candidate.getLocation().equals(location);
    return parsedTestSources.get(testCase.getUri()).stream().map(node -> node.findPathTo(withLocation)).filter(Optional::isPresent).map(Optional::get).findFirst().map(nodes -> nodes.get(0)).flatMap(Node::getName).orElse("Unknown");
}
Also used : Transformer(javax.xml.transform.Transformer) DOMSource(javax.xml.transform.dom.DOMSource) TransformerException(javax.xml.transform.TransformerException) ExceptionUtils.printStackTrace(io.cucumber.core.exception.ExceptionUtils.printStackTrace) StreamResult(javax.xml.transform.stream.StreamResult) TestSourceParsed(io.cucumber.plugin.event.TestSourceParsed) TestStepFinished(io.cucumber.plugin.event.TestStepFinished) HashMap(java.util.HashMap) Status(io.cucumber.plugin.event.Status) EventListener(io.cucumber.plugin.EventListener) ArrayList(java.util.ArrayList) PickleStepTestStep(io.cucumber.plugin.event.PickleStepTestStep) TestCaseStarted(io.cucumber.plugin.event.TestCaseStarted) TestCaseFinished(io.cucumber.plugin.event.TestCaseFinished) Document(org.w3c.dom.Document) Duration(java.time.Duration) Map(java.util.Map) NamedNodeMap(org.w3c.dom.NamedNodeMap) URI(java.net.URI) ROOT(java.util.Locale.ROOT) XMLConstants(javax.xml.XMLConstants) EventPublisher(io.cucumber.plugin.event.EventPublisher) OutputStream(java.io.OutputStream) Result(io.cucumber.plugin.event.Result) Predicate(java.util.function.Predicate) Collection(java.util.Collection) TestRunStarted(io.cucumber.plugin.event.TestRunStarted) Node(io.cucumber.plugin.event.Node) IOException(java.io.IOException) ISO_INSTANT(java.time.format.DateTimeFormatter.ISO_INSTANT) Location(io.cucumber.plugin.event.Location) OutputKeys(javax.xml.transform.OutputKeys) Instant(java.time.Instant) List(java.util.List) Element(org.w3c.dom.Element) TestRunFinished(io.cucumber.plugin.event.TestRunFinished) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) Closeable(java.io.Closeable) Writer(java.io.Writer) ZERO(java.time.Duration.ZERO) Optional(java.util.Optional) DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) TransformerFactory(javax.xml.transform.TransformerFactory) CucumberException(io.cucumber.core.exception.CucumberException) Optional(java.util.Optional) Node(io.cucumber.plugin.event.Node) Location(io.cucumber.plugin.event.Location)

Aggregations

Node (io.cucumber.plugin.event.Node)4 URI (java.net.URI)4 EventPublisher (io.cucumber.plugin.event.EventPublisher)3 Location (io.cucumber.plugin.event.Location)3 TestCaseFinished (io.cucumber.plugin.event.TestCaseFinished)3 TestCaseStarted (io.cucumber.plugin.event.TestCaseStarted)3 TestRunFinished (io.cucumber.plugin.event.TestRunFinished)3 TestSourceParsed (io.cucumber.plugin.event.TestSourceParsed)3 Collection (java.util.Collection)3 HashMap (java.util.HashMap)3 Map (java.util.Map)3 Optional (java.util.Optional)3 Predicate (java.util.function.Predicate)3 CucumberException (io.cucumber.core.exception.CucumberException)2 ExceptionUtils.printStackTrace (io.cucumber.core.exception.ExceptionUtils.printStackTrace)2 EventListener (io.cucumber.plugin.EventListener)2 PickleStepTestStep (io.cucumber.plugin.event.PickleStepTestStep)2 Result (io.cucumber.plugin.event.Result)2 Status (io.cucumber.plugin.event.Status)2 TestCase (io.cucumber.plugin.event.TestCase)2