Skip to content

Starter Hints

# This file is executed by the acceptance test suite (living documentation)
#
# Rules:
#   - Step definitions live in: <test-source-root>/steps/ (or equivalent per language)
#   - Keep scenarios focused: one behaviour per scenario.
#   - Use exact terms from specs/glossary.md.

Feature: Hints for developers on how to get started with a generated project
    As a software developer
    I want the README.md in my generated project to include hints on how to get started
    So that I can quickly understand how to build and run the project

    Scenario: Hints for all sorts of projects
        Given a generated README.md for <language>/<artifact_type> projects:
            | Language | Artifact Type |
            | cpp      | tool          |
            | cpp      | library       |
            | cpp      | service       |
            | go       | tool          |
            | go       | library       |
            | go       | service       |
            | java     | library       |
            | java     | service       |
        Then README.md includes the following sections, in exactly this order: Prerequisites, Getting Started, and Next Steps.

    Scenario: Prerequisites for C++/Go/Java CLI tool and library projects
        Given a generated README.md for <language>/<artifact_type> projects:
            | Language | Artifact Type |
            | cpp      | tool          |
            | cpp      | library       |
            | go       | tool          |
            | go       | library       |
            | java     | library       |
        Then README.md includes the following section:
            """
            ## Prerequisites

            - [Devbox](https://devbox.sh/) installed locally
            - PWD is the project root (cloned repository, pre-populated by the generator)

            ```sh
            devbox shell   # activate tooling
            ```
            """

    Scenario: Prerequisites for C++/Go/Java service projects
        Given a generated README.md for <language>/<artifact_type> projects:
            | Language | Artifact Type |
            | cpp      | service       |
            | go       | service       |
            | java     | service       |
        Then README.md includes the following section:
            """
            ## Prerequisites

            - [Devbox](https://devbox.sh/) installed locally
            - [Docker](https://www.docker.com) installed locally
            - PWD is the project root (cloned repository, pre-populated by the generator)

            ```sh
            devbox shell   # activate tooling
            ```
            """

    Scenario: Getting started for Go projects
        Given a generated README.md for <language>/<artifact_type> projects:
            | Language | Artifact Type |
            | go       | tool          |
            | go       | library       |
            | go       | service       |
        Then README.md includes the following section:
            """
            ## Getting Started

            ```sh
            make init   # Run once after cloning (go mod tidy)
            ```

            ```sh
            make build   # debug build for development
            ```
            """

    Scenario: Getting started for C++/Java projects
        # The init target is available for all languages.
        # However, it is an empty target for C++ and Java projects.
        # It might be used in the future to set up language-specific actions required upfront.
        Given a generated README.md for <language>/<artifact_type> projects:
            | Language | Artifact Type |
            | cpp      | tool          |
            | cpp      | library       |
            | cpp      | service       |
            | java     | library       |
            | java     | service       |
        Then README.md includes the following section:
            """
            ## Getting Started

            ```sh
            make init   # Optional: Run once after cloning
            ```

            ```sh
            make build   # debug build for development
            ```
            """

    Scenario: Next steps for all sort of projects
        Given a generated README.md for <language>/<artifact_type> projects:
            | Language | Artifact Type |
            | cpp      | tool          |
            | cpp      | library       |
            | cpp      | service       |
            | go       | tool          |
            | go       | library       |
            | go       | service       |
            | java     | library       |
            | java     | service       |
        Then README.md includes the following section:
            """
            ## Next Steps

            Watch out for **TODO comments** in the generated codebase.
            They are to be populated by the developer to customize the project and make it fully functional.

            Write specifications for the project in the `specs/` directory first.
            Then implement the code to make the specifications pass. Always in this order.
            """