private StringBuilder addTagStatement(StringBuilder sb, TagStatement tagStatement) { for (Comment comment : tagStatement.getComments()) { addComment(sb, comment); } for (Tag tag : tagStatement.getTags()) { createLine(sb, tag.getLine(), RESULT_TYPE.NO_RESULT); sb.append(tag.getName()); } createLine(sb, tagStatement.getLine(), RESULT_TYPE.NO_RESULT); appendKeyword(sb, tagStatement.getKeyword()).append(' ').append(tagStatement.getName()); String descr = tagStatement.getDescription(); indent++; if (descr != null && !descr.isEmpty()) { // may have been run on windows? descr = descr.replace("\r\n", "\n"); String[] lines = descr.split("\\n"); for (int i=0; i < lines.length; i++){ endLine(sb); createLine(sb, tagStatement.getLine() + i+1, RESULT_TYPE.NO_RESULT); sb.append("<span style=\"font-style:italic\">"); sb.append(lines[i]); sb.append("</span>"); } } endLine(sb); return sb; }
private static boolean shouldKeepTogether( TagStatement tagStatement ) { return tagStatement.getTags().contains( KEEP_TOGETHER ); }
/** * Get the ID from the TagStatement. For some reason the authors of cucumber jvm thought the ID should be * private with no getter... TODO - create a patch for cucumber-jvm so we do not need this hack. * * @param stmt the {@link TagStatement} with the ID> * @return the ID of the {@link TagStatement} - possibly <code>null</code> */ public static String getId(TagStatement stmt) { try { Field f = TagStatement.class.getField("id"); f.setAccessible(true); return (String) f.get(stmt); } catch (NoSuchFieldException e) { LOG.log(Level.WARNING, "Could not get ID from statement: " + stmt.getName(), e); } catch (SecurityException e) { LOG.log(Level.WARNING, "Could not get ID from statement: " + stmt.getName(), e); } catch (IllegalArgumentException e) { LOG.log(Level.WARNING, "Could not get ID from statement: " + stmt.getName(), e); } catch (IllegalAccessException e) { LOG.log(Level.WARNING, "Could not get ID from statement: " + stmt.getName(), e); } return null; }
if ( keepFeatureTogether ) { hasScenarios = true; featureFile = featureFile + ":" + tagStatement.getGherkinModel().getLine(); scenarios.add( featureFile + ":" + tagStatement.getGherkinModel().getLine() ); scenarioWithExamples.append( ":" ).append( scenario.getGherkinModel().getLine() ); scenarios.add( featureFile + ":" + scenario.getGherkinModel().getLine() );
@Override protected void runChild(Runner runner, RunNotifier notifier) { ExtendedExecutionUnitRunner featureElementRunner = (ExtendedExecutionUnitRunner) runner; try { featureElementRunner = new ExtendedExecutionUnitRunner( runtime, ((ExtendedExecutionUnitRunner) runner).getCucumberScenario(), jUnitReporter); featureElementRunner.run(notifier); Assert.assertEquals(0, this.getRuntime().exitStatus()); } catch (AssumptionViolatedException e) { System.out.println("Scenario AssumptionViolatedException..."); } catch (Throwable e) { System.out.println( ((ExtendedExecutionUnitRunner) runner).getCucumberScenario().getGherkinModel().getId()); System.out.println(e.getClass().getCanonicalName() + ":" + e.getMessage()); List<Throwable> errors = this.getRuntime().getErrors(); Throwable error = errors.get(errors.size() - 1); if (ExtendedCucumber.isRetryApplicable(error, this.retryMethods)) { System.out.println("===Initiating retry..."); retry(notifier, featureElementRunner, e); } } finally { System.out.println(((ExtendedExecutionUnitRunner) runner).getCucumberScenario().getGherkinModel().getId() + "Scenario completed..." + this.getRuntime().exitStatus()); } this.setScenarioCount(this.getScenarioCount() + 1); this.setFailedAttempts(0); }
private void printStatement() { if (statement == null) { return; } calculateLocationIndentations(); out.println(); printComments(statement.getComments(), " "); if (statement instanceof TagStatement) { printTags(((TagStatement) statement).getTags(), " "); } StringBuilder buffer = new StringBuilder(" "); buffer.append(statement.getKeyword()); buffer.append(": "); buffer.append(statement.getName()); String location = executing ? uri + ":" + statement.getLine() : null; buffer.append(indentedLocation(location)); out.println(buffer); printDescription(statement.getDescription(), " ", true); statement = null; }
@Override public String toString() { return cucumberScenario.getGherkinModel().getName(); }
private Scenario convertScenario(CucumberScenario cucumberScenario) { Scenario scenario = new Scenario(); scenario.setVisualName(cucumberScenario.getVisualName()); scenario.addTags(convertTags(cucumberScenario.getGherkinModel().getTags())); for (gherkin.formatter.model.Step step : cucumberScenario.getSteps()) scenario.add(convertStep(step)); return scenario; }
/** * * @param feature * @param testList * @param selectedScenarios * @return Cucumber statement list of selected tests */ private List<CucumberTagStatement> selectSenario(CucumberFeature feature, List<String> testList, List<CucumberTagStatement> selectedScenarios){ for (CucumberTagStatement stmt: feature.getFeatureElements()) { for (String test: testList) { if (stmt.getGherkinModel().getName().equals(test) || stmt.getGherkinModel().getName().matches(test)) { selectedScenarios.add(stmt); } } } return selectedScenarios; }
private ScenarioOutline convertOutline(CucumberScenarioOutline cucumberScenarioOutline) { ScenarioOutline outline = new ScenarioOutline(); outline.setVisualName(cucumberScenarioOutline.getVisualName()); outline.addTags(convertTags(cucumberScenarioOutline.getGherkinModel().getTags())); for (CucumberExamples cucumberExamples : cucumberScenarioOutline.getCucumberExamplesList()) { List<CucumberScenario> exampleScenarios = cucumberExamples.createExampleScenarios(); for (CucumberScenario exampleScenario : exampleScenarios) { outline.add(convertScenario(exampleScenario)); } } return outline; }