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.
"""