Skip to content

Extract CLI to it's own module #3217

Description

@mpkorstanje

🤔 What's the problem you're trying to solve?

There are several way to run Cucumber. Through JUnit with cucumber-junit-platform-engine, TestNG through cucumber-testng or the CLI which is built directly into cucumber-core.

erDiagram
    "CLI" ||--|{ "cucumber-core" : ""
    "JUnit" ||--|{ "cucumber-junit-platform-engine" : ""
    "cucumber-junit-platform-engine" ||--|{ "cucumber-core" : "" 
    "TestNG" ||--|{ "cucumber-testng" : ""
    "cucumber-testng" ||--|{ "cucumber-core" : ""
Loading

As a consequence, some properties that are only used by the CLI such as cucumber.execution.limit, cucumber.execution.wip, and cucumber.execution.threads are part of cucumber-core as well as several other classes such as the CommandlineOptionsParser.

Additionally, the current CLI is hand written. This means we're stuck with a rather simple syntax and can't have sub commands.

✨ What's your proposed solution?

  • Create a cucumber-cli module.
  • Use PicoCli to generate a CLI.

⛏ Have you considered any alternatives or workarounds?

We can leave things as is.

📚 Any additional context?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions