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