language-service icon indicating copy to clipboard operation
language-service copied to clipboard

Support for step parameters in Behave seems to be broken

Open Cavaler opened this issue 1 year ago • 3 comments

👓 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 avatar Sep 10 '24 11:09 Cavaler