cucumber / cucumber-jvm

Cucumber for the JVM
https://cucumber.io
MIT License
2.7k stars 2.02k forks source link

Parsing exception of feature file in French with two scenario outlines #1471

Closed Dapangma closed 6 years ago

Dapangma commented 6 years ago

Hi, I have written the following feature file:

Feature: Consulter les habilitations par SIREN

    Afin de vérifier l'état des habilitations pour une entreprise
    En tant que agent de profil SG
    Je veux voir les habilitations

    Scenario Outline: Devrait lister les habilitations liées à un SIREN valide
        Given Je me suis connecté avec l'id agent '<idAgent>' de profil '<profil>'
        When Je cherche les habilitations liées à un SIREN '<numeroSiren>'
        Then Je devrais voir les informations de la société '<sirenFormate>'
        And Je devrais voir les habilitations de la société '<numeroSiren>'

    Examples:
        |idAgent     |profil|numeroSiren|sirenFormate|
        |1005603255-0|SG    |531221331  |531 221 331 |

It was parsed. I translated into pure French:

# language: fr
Fonctionnalité: Consulter les habilitations par SIREN

    Afin de vérifier l'état des habilitations pour une entreprise
    En tant que agent de profil SG
    Je veux voir les habilitations

    Plan du Scénario: Devrait lister les habilitations liées à un SIREN valide
        Etant donné que Je me suis connecté avec l'id agent '<idAgent>' de profil '<profil>'
        Lorsque Je cherche les habilitations liées à un SIREN '<numeroSiren>'
        Alors Je devrais voir les informations de la société '<sirenFormate>'
        Et Je devrais voir les habilitations de la société '<numeroSiren>'

    Exemples:
        |idAgent     |profil|numeroSiren|sirenFormate|
        |1005603255-0|SG    |531221331  |531 221 331 |

It was parsed.

I added a second scenario outline:

# language: fr
Fonctionnalité: Consulter les habilitations par SIREN

    Afin de vérifier l'état des habilitations pour une entreprise
    En tant que agent de profil SG
    Je veux voir les habilitations

    Plan du Scénario: Devrait lister les habilitations liées à un SIREN valide
        Etant donné que Je me suis connecté avec l'id agent '<idAgent>' de profil '<profil>'
        Lorsque Je cherche les habilitations liées à un SIREN '<numeroSiren>'
        Alors Je devrais voir les informations de la société '<sirenFormate>'
        Et Je devrais voir les habilitations de la société '<numeroSiren>'

    Exemples:
        |idAgent     |profil|numeroSiren|sirenFormate|
        |1005603255-0|SG    |531221331  |531 221 331 |

    Plan du scenario: Devrait afficher une erreur à la saisie d'un SIREN invalide
        Etant donné que Je me suis connecté avec l'id agent '<idAgent>' de profil '<profil>'
        Lorsque Je cherche les habilitations liées à un SIREN '<numeroSiren>'
        Alors Je devrais voir un message d'erreur

    Exemples:
        |idAgent     |profil|numeroSiren|
        |1005603255-0|SG    |faux       |

I had a parsing exception:

cucumber.runtime.CucumberException: gherkin.ParserException$CompositeParserException: Parser errors:
(18:5): expected: #EOF, #TableRow, #TagLine, #ExamplesLine, #ScenarioLine, #ScenarioOutlineLine, #Comment, #Empty, got 'Plan du scenario: Devrait afficher une erreur à la saisie d'un SIREN invalide'
(19:9): expected: #EOF, #TableRow, #TagLine, #ExamplesLine, #ScenarioLine, #ScenarioOutlineLine, #Comment, #Empty, got 'Etant donné que Je me suis connecté avec l'id agent '<idAgent>' de profil '<profil>''
(20:9): expected: #EOF, #TableRow, #TagLine, #ExamplesLine, #ScenarioLine, #ScenarioOutlineLine, #Comment, #Empty, got 'Lorsque Je cherche les habilitations liées à un SIREN '<numeroSiren>''
(21:9): expected: #EOF, #TableRow, #TagLine, #ExamplesLine, #ScenarioLine, #ScenarioOutlineLine, #Comment, #Empty, got 'Alors Je devrais voir un message d'erreur'
    at cucumber.runtime.FeatureBuilder.parse(FeatureBuilder.java:60)
    at cucumber.runtime.model.CucumberFeature.loadFromFeaturePath(CucumberFeature.java:113)
    at cucumber.runtime.model.CucumberFeature.load(CucumberFeature.java:49)
    at cucumber.runtime.model.CucumberFeature.load(CucumberFeature.java:31)
    at cucumber.runtime.RuntimeOptions.cucumberFeatures(RuntimeOptions.java:311)
    at cucumber.api.junit.Cucumber.<init>(Cucumber.java:80)
    at net.serenitybdd.cucumber.CucumberWithSerenity.<init>(CucumberWithSerenity.java:38)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: gherkin.ParserException$CompositeParserException: Parser errors:
(18:5): expected: #EOF, #TableRow, #TagLine, #ExamplesLine, #ScenarioLine, #ScenarioOutlineLine, #Comment, #Empty, got 'Plan du scenario: Devrait afficher une erreur à la saisie d'un SIREN invalide'
(19:9): expected: #EOF, #TableRow, #TagLine, #ExamplesLine, #ScenarioLine, #ScenarioOutlineLine, #Comment, #Empty, got 'Etant donné que Je me suis connecté avec l'id agent '<idAgent>' de profil '<profil>''
(20:9): expected: #EOF, #TableRow, #TagLine, #ExamplesLine, #ScenarioLine, #ScenarioOutlineLine, #Comment, #Empty, got 'Lorsque Je cherche les habilitations liées à un SIREN '<numeroSiren>''
(21:9): expected: #EOF, #TableRow, #TagLine, #ExamplesLine, #ScenarioLine, #ScenarioOutlineLine, #Comment, #Empty, got 'Alors Je devrais voir un message d'erreur'
    at gherkin.Parser.parse(Parser.java:143)
    at gherkin.Parser.parse(Parser.java:118)
    at gherkin.Parser.parse(Parser.java:114)
    at cucumber.runtime.FeatureBuilder.parse(FeatureBuilder.java:56)
    ... 23 more

Just to check, I translated it back into English:

Feature: Consulter les habilitations par SIREN

    Afin de vérifier l'état des habilitations pour une entreprise
    En tant que agent de profil SG
    Je veux voir les habilitations

    Scenario Outline: Devrait lister les habilitations liées à un SIREN valide
        Given Je me suis connecté avec l'id agent '<idAgent>' de profil '<profil>'
        When Je cherche les habilitations liées à un SIREN '<numeroSiren>'
        Then Je devrais voir les informations de la société '<sirenFormate>'
        And Je devrais voir les habilitations de la société '<numeroSiren>'

    Examples:
        |idAgent     |profil|numeroSiren|sirenFormate|
        |1005603255-0|SG    |531221331  |531 221 331 |

    Scenario Outline: Devrait afficher une erreur à la saisie d'un SIREN invalide
        Given Je me suis connecté avec l'id agent '<idAgent>' de profil '<profil>'
        When Je cherche les habilitations liées à un SIREN '<numeroSiren>'
        Then Je devrais voir un message d'erreur

    Examples:
        |idAgent     |profil|numeroSiren|
        |1005603255-0|SG    |faux       |

It was parsed. Seems that multi-scenarii feature files are a privilege for English speakers ;-)

mpkorstanje commented 6 years ago

I believe that for the second scenario out line it should be "Plan du Scénario" and not "Plan du scenario".

Dapangma commented 6 years ago

You got it @mpkorstanje. As my editor does not highlight French keywords I had not spotted it. My fault.

Thanks a lot.

mpkorstanje commented 6 years ago

De rien.

lock[bot] commented 5 years ago

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.