cucumber / language-service

Cucumber Language Service
MIT License
18 stars 27 forks source link

Support for step parameters in Behave seems to be broken #230

Open Cavaler opened 2 months ago

Cavaler commented 2 months ago

πŸ‘“ What did you see?

The way the service parses Behave step definitions is in total disagreement with how Behave itself does.

In Behave tutorial, parameters in e.g. @then have the same name as the actual function parameter, and that is the way Behave later calls the step.

Example feature file:

Feature: Sending declarations

  Scenario: Declaration is sent at start
    Given Module "iot-modbus" is running
    Then Declaration for "iot-modbus" is present

and steps file:

from behave import given, then

@given('Module "{module}" is running')
def step_impl(context, module):
  pass

@then('Declaration for "{module}" is present')
def get_vmc_declaration(context, module):
  pass

Runs OK with Behave, but gives parsing errors in VS Code:

[Error - 2:10:20 PM] * Step Definition errors: Error: This Cucumber Expression has a problem at column 9:

Module "{module}" is running
        ^------^
Undefined parameter type 'module'.

βœ… What did you expect to see?

Expected to properly parse the feature and steps files

πŸ“¦ Which tool/library version are you using?

behave 1.2.6 VS Code 1.92.2 Cucumber extension 1.10

πŸ”¬ How could we reproduce it?

  1. Install VS Code
  2. Install Cucumber Extension
  3. Open folder containing the files from above

πŸ“š Any additional context?

No response

Cavaler commented 2 months ago

Alternatively, when trying to generate steps from VS Code, this is what we get:

@then('Declaration for {string} contains {string}')
def step_then(context, string, string2):
  pass

And it is not recognized by Behave as a valid step because of parameter name mismatch. Declaration for {string} contains {string2} works in Behave, but not in VS Code.

jenisys commented 2 months ago

@Cavaler

PROCEDURE:

SEE ALSO:

Cavaler commented 2 months ago

OK, this seems to be a duplicate for https://github.com/cucumber/language-service/issues/205 then