josh-compose
Run integration tests in this repo using "josh compose" tool. Use when the user requests to run integration tests.
ソース情報
- リポジトリ
- josh-project/josh
- ソースの最終更新活動
- 2026年10月4日 19:49
- 検出された SKILL.md の言語
- 英語
- スター
- 1,969
- フォーク
- 85
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
SKILL.md を表示中
SKILL.md
ソースの指示 · 読み取り専用プレビュー- name
- josh-compose
- description
- Run integration tests in this repo using "josh compose" tool. Use when the user requests to run integration tests.
"josh compose" is a subcommand of "josh" CLI that runs a set of commands in defined environments. The commands
and environments are defined in `.josh` files, most of which are in the root of the repo in the `/ws` directory.
## Obtaining access to `josh` binary
When `josh` is available in current environment, use that command. When it's not available, use
`cargo run --bin josh -- compose ...` to run the command.
## Test organization
This repo uses `scrut` tool to run integration tests. `scrut` is a tool for snapshot testing.
The tool takes cram-style .t files where shell commands are defined along with their expected output.
When the output changes, `scrut` detects it.
Test files live under `tests/` and are organized by subsystem:
- `tests/filter/` — filter language tests (largest suite)
- `tests/proxy/` — git proxy tests
- `tests/cli/` — CLI tests
- `tests/experimental/` — excluded from release tests
## Running tests via `josh compose run`
Tests run inside an isolated podman container. Step results are cached; the cache key is the SHA of
the filtered workspace tree, so the cache is automatically invalidated when source files change.
### Running all tests
```
josh compose run
```
To test a specific commit instead of the working tree, pass `--revision` (or `-r`):
```
josh compose run --revision HEAD
```
Other values you can pass include:
- `.` (default) — working tree, including uncommitted changes
- `+` — staged files (git index); useful to test only what you've `git add`ed
- `HEAD` — last commit, ignoring any local changes
### Inspecting test output
Each test file prints a result line in the `josh compose run` output:
```
Result: 1 document(s) with N testcase(s): N succeeded, 0 failed and 0 skipped
```
Followed at the end by `SUCCESS: <sha>` or `FAILED: <name>`.
For failing tests, the scrut diff format shows the shell expression that failed, expected output (preceded
by `-`), and actual output (preceded by `+`). The updated `.t` files are written back to the working
directory, so you can inspect them directly.
### Iterating on a failing test
1. Edit the `.t` test file or the relevant source code.
2. Re-run `josh compose run` — the changed working tree produces a new SHA, so the cache is bypassed automatically.
### Do not use compose clean
Never run `josh compose clean` or `josh compose clean --all`. The cache is reliable; clearing it
just forces a full rebuild and wastes time. If something seems wrong that you believe a cache wipe
would fix, stop and ask the user to run the clean in a separate terminal — do not run it yourself,
ever.
GitHubで見る