Feature getFeature(String path) { if (!pathToAstMap.containsKey(path)) { parseGherkinSource(path); } if (pathToAstMap.containsKey(path)) { return pathToAstMap.get(path).getFeature(); } return null; }
Feature feature = node.getSingle(RuleType.Feature, null); return new GherkinDocument(feature, comments);
public String getName() { return gherkinDocument.getFeature().getName(); }
@Override public String toString() { return "\"" + cucumberFeature.getGherkinFeature().getFeature().getName() + "\""; } }
private static List<PickleEvent> compilePickles(GherkinDocument gherkinDocument, Resource resource) { if (gherkinDocument.getFeature() == null) { return Collections.emptyList(); } List<PickleEvent> pickleEvents = new ArrayList<>(); for (Pickle pickle : new Compiler().compile(gherkinDocument)) { pickleEvents.add(new PickleEvent(resource.getPath(), pickle)); } return pickleEvents; } }
private void parseGherkinSource(String path) { if (!pathToReadEventMap.containsKey(path)) { return; } Parser<GherkinDocument> parser = new Parser<GherkinDocument>(new AstBuilder()); TokenMatcher matcher = new TokenMatcher(); try { GherkinDocument gherkinDocument = parser.parse(pathToReadEventMap.get(path).source, matcher); pathToAstMap.put(path, gherkinDocument); Map<Integer, AstNode> nodeMap = new HashMap<Integer, AstNode>(); AstNode currentParent = new AstNode(gherkinDocument.getFeature(), null); for (ScenarioDefinition child : gherkinDocument.getFeature().getChildren()) { processScenarioDefinition(nodeMap, child, currentParent); } pathToNodeMap.put(path, nodeMap); } catch (ParserException e) { // Ignore exceptions } }
@Override public String getName() { Feature feature = cucumberFeature.getGherkinFeature().getFeature(); return feature.getKeyword() + ": " + feature.getName(); }
private void createFeatureStepMap(String path) { if (!pathToSourceMap.containsKey(path)) { return; } Parser<GherkinDocument> parser = new Parser<GherkinDocument>(new AstBuilder()); TokenMatcher matcher = new TokenMatcher(); try { GherkinDocument gherkinDocument = parser.parse(pathToSourceMap.get(path), matcher); Map<Integer, StepNode> stepMap = new HashMap<Integer, StepNode>(); StepNode initialPreviousNode = null; for (ScenarioDefinition child : gherkinDocument.getFeature().getChildren()) { StepNode lastStepNode = processScenarioDefinition(stepMap, initialPreviousNode, child); if (child instanceof Background) { initialPreviousNode = lastStepNode; } } pathToStepMap.put(path, new FeatureStepMap(new GherkinDialectProvider(gherkinDocument.getFeature().getLanguage()).getDefaultDialect(), stepMap)); } catch (ParserException e) { // Ignore exceptions } }
public Feature getFeature(final String path) { if (!pathToAstMap.containsKey(path)) { parseGherkinSource(path); } if (pathToAstMap.containsKey(path)) { return pathToAstMap.get(path).getFeature(); } return null; }
public Feature getFeature(final String path) { if (!pathToAstMap.containsKey(path)) { parseGherkinSource(path); } if (pathToAstMap.containsKey(path)) { return pathToAstMap.get(path).getFeature(); } return null; }
private String getFeatureId(CucumberFeature cucumberFeature) { return String.format("%s_%s", cucumberFeature.getGherkinFeature().getFeature().hashCode(), instanceId); }
private Function<CucumberFeature, List<TestScenarioResult>> featureToScenarios() { return cucumberFeature -> { try { return (cucumberFeature.getGherkinFeature().getFeature() == null) ? Collections.emptyList() : cucumberFeature.getGherkinFeature().getFeature().getChildren() .stream() .filter(child -> asList(ScenarioOutline.class, Scenario.class).contains(child.getClass())) .map(scenarioToResult(cucumberFeature)) .collect(toList()); } catch (Exception e) { throw new IllegalStateException(String.format("Could not extract scenarios from %s", cucumberFeature.getUri()), e); } }; }
private Function<CucumberFeature, List<TestScenarioResult>> featureToScenarios() { return cucumberFeature -> { try { return (cucumberFeature.getGherkinFeature().getFeature() == null) ? Collections.emptyList() : cucumberFeature.getGherkinFeature().getFeature().getChildren() .stream() .filter(child -> asList(ScenarioOutline.class, Scenario.class).contains(child.getClass())) .map(scenarioToResult(cucumberFeature)) .collect(toList()); } catch (Exception e) { throw new IllegalStateException(String.format("Could not extract scenarios from %s", cucumberFeature.getUri()), e); } }; }
private int backgroundStepCountFor(CucumberFeature feature) { ScenarioDefinition scenarioDefinition = feature.getGherkinFeature().getFeature().getChildren().get(0); if (scenarioDefinition instanceof Background) { return scenarioDefinition.getSteps().size(); } else { return 0; } }
@Override public String toString() { return "\"" + cucumberFeature.getGherkinFeature().getFeature().getName() + "\""; } }
private int backgroundStepCountFor(CucumberFeature feature) { ScenarioDefinition scenarioDefinition = feature.getGherkinFeature().getFeature().getChildren().get(0); if (scenarioDefinition instanceof Background) { return scenarioDefinition.getSteps().size(); } else { return 0; } }
public Optional<Feature> loadFeature(File narrativeFile) { if (narrativeFile == null) { return Optional.empty(); } if (!narrativeFile.exists()) { return Optional.empty(); } List<String> listOfFiles = new ArrayList<>(); listOfFiles.add(narrativeFile.getAbsolutePath()); MultiLoader multiLoader = new MultiLoader(CucumberParser.class.getClassLoader()); List<CucumberFeature> cucumberFeatures = loadCucumberFeatures(multiLoader,listOfFiles); try { if (cucumberFeatures.size() == 0) { return Optional.empty(); } CucumberFeature cucumberFeature = cucumberFeatures.get(0); GherkinDocument gherkinDocument = cucumberFeature.getGherkinFeature(); if (featureFileCouldNotBeReadFor(gherkinDocument.getFeature())) { return Optional.empty(); } return Optional.of(gherkinDocument.getFeature()); } catch (Exception ex) { ex.printStackTrace(); return Optional.empty(); } }
static Map<ScenarioDefinition, String> cacheScenarioLanguage(List<CucumberFeature> features) { Map<ScenarioDefinition, String> scenarioLanguageMap = new HashMap<>(); for (CucumberFeature cucumberFeature : features) { GherkinDocument gherkinDocument = cucumberFeature.getGherkinFeature(); Feature feature = gherkinDocument.getFeature(); List<ScenarioDefinition> scenarios = feature.getChildren(); for (ScenarioDefinition scenario : scenarios) { scenarioLanguageMap.put(scenario, feature.getLanguage()); } } return scenarioLanguageMap; } }
public static Locale getLocale(Scenario scenario) { List<String> scenarioPaths = new ArrayList<>(); scenarioPaths.add(scenario.getUri()); MultiLoader multiLoader = new MultiLoader(ClassLoader.getSystemClassLoader()); String language = DEFAULT_LANGUAGE; try { CucumberFeature cucumberFeature = CucumberFeature.load(multiLoader, scenarioPaths).get(0); language = cucumberFeature.getGherkinFeature().getFeature().getLanguage(); } catch (Exception e) { LOG.warn("Error while reading feature with uri {}. Using default language {} as fallback", scenario.getUri(), DEFAULT_LANGUAGE, e); } return new Locale(language); } }
private Function<CucumberFeature, List<WeightedCucumberScenario>> getScenarios() { return cucumberFeature -> { try { return (cucumberFeature.getGherkinFeature().getFeature() == null) ? Collections.emptyList() : cucumberFeature.getGherkinFeature().getFeature().getChildren() .stream() .filter(child -> asList(ScenarioOutline.class, Scenario.class).contains(child.getClass())) .map(scenarioDefinition -> new WeightedCucumberScenario( new File(cucumberFeature.getUri()).getName(), cucumberFeature.getGherkinFeature().getFeature().getName(), scenarioDefinition.getName(), scenarioWeightFor(cucumberFeature, scenarioDefinition), tagsFor(cucumberFeature, scenarioDefinition), scenarioCountFor(scenarioDefinition))) .collect(toList()); } catch (Exception e) { throw new IllegalStateException(String.format("Could not extract scenarios from %s", cucumberFeature.getUri()), e); } }; }