use of io.cucumber.core.gherkin.Pickle in project cucumber-jvm by cucumber.
the class GherkinMessagesFeatureParser method parse.
@Override
public Optional<Feature> parse(URI path, String source, Supplier<UUID> idGenerator) {
List<Envelope> sources = singletonList(makeSourceEnvelope(source, path.toString()));
List<Envelope> envelopes = Gherkin.fromSources(sources, true, true, true, () -> idGenerator.get().toString()).collect(toList());
GherkinDocument gherkinDocument = envelopes.stream().map(Envelope::getGherkinDocument).filter(Objects::nonNull).findFirst().orElse(null);
if (gherkinDocument == null || gherkinDocument.getFeature() == null) {
List<String> errors = envelopes.stream().map(Envelope::getParseError).filter(Objects::nonNull).map(ParseError::getMessage).collect(toList());
if (!errors.isEmpty()) {
throw new FeatureParserException("Failed to parse resource at: " + path + "\n" + String.join("\n", errors));
}
return Optional.empty();
}
CucumberQuery cucumberQuery = new CucumberQuery();
cucumberQuery.update(gherkinDocument);
GherkinDialectProvider dialectProvider = new GherkinDialectProvider();
io.cucumber.messages.types.Feature feature = gherkinDocument.getFeature();
String language = feature.getLanguage();
GherkinDialect dialect = dialectProvider.getDialect(language, null);
List<io.cucumber.messages.types.Pickle> pickleMessages = envelopes.stream().map(Envelope::getPickle).filter(Objects::nonNull).collect(toList());
List<Pickle> pickles = pickleMessages.stream().map(pickle -> new GherkinMessagesPickle(pickle, path, dialect, cucumberQuery)).collect(toList());
GherkinMessagesFeature messagesFeature = new GherkinMessagesFeature(feature, path, source, pickles, envelopes);
return Optional.of(messagesFeature);
}
use of io.cucumber.core.gherkin.Pickle in project cucumber-jvm by cucumber.
the class FeatureParserTest method backgrounds_can_occur_twice.
@Test
void backgrounds_can_occur_twice() 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/background.feature")));
Feature feature = parser.parse(uri, source, UUID::randomUUID).get();
Pickle pickle = feature.getPickles().get(0);
List<Step> steps = pickle.getSteps();
assertEquals(3, steps.size());
}
use of io.cucumber.core.gherkin.Pickle in project cucumber-jvm by cucumber.
the class FeatureParserTest method empty_table_is_parsed.
@Test
void empty_table_is_parsed() 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/empty-table.feature")));
Feature feature = parser.parse(uri, source, UUID::randomUUID).get();
Pickle pickle = feature.getPickles().get(0);
Step step = pickle.getSteps().get(0);
DataTableArgument argument = (DataTableArgument) step.getArgument();
assertEquals(5, argument.getLine());
}
use of io.cucumber.core.gherkin.Pickle in project cucumber-jvm by cucumber.
the class FeatureParserTest method empty_doc_string_media_type_is_null.
@Test
void empty_doc_string_media_type_is_null() 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/doc-string.feature")));
Feature feature = parser.parse(uri, source, UUID::randomUUID).get();
Pickle pickle = feature.getPickles().get(0);
List<Step> steps = pickle.getSteps();
assertAll(() -> {
assertNull(((DocStringArgument) steps.get(0).getArgument()).getContentType());
assertEquals("text/plain", ((DocStringArgument) steps.get(1).getArgument()).getContentType());
});
}
Aggregations