You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 1e40451
Browse filesBrowse the repository at this point in the historyBrowse files
|`--matrix`| String |`debian:12-slim,ubuntu:22.04,ubuntu:24.04,alpine:3.20`| Comma-separated list of Docker images |
161
163
|`--timeout`| Integer |`60`| Hard timeout per container in seconds |
162
164
|`--format`| Choice |`table`| Output format: `table`, `markdown`, or `json`|
165
+
|`--shell`| Choice |`posix`| Execution mode: `posix` (default), `shebang`, or `auto`|
163
166
|`--version`| Flag | - | Show version number |
164
167
|`-h, --help`| Flag | - | Show argument help |
165
168
169
+
### Shell Execution Modes (`--shell`)
170
+
171
+
-**`posix`** (default): Strictly executes with `/bin/sh`, ignoring any script shebang. Ideal for verifying that your script runs in minimal POSIX-compliant environments (e.g. Alpine BusyBox).
172
+
-**`shebang`**: Strictly honors the interpreter specified in the script's shebang (`#!/bin/sh`, `#!/bin/bash`, `#!/usr/bin/sh`, `#!/usr/bin/bash`, `#!/usr/bin/env sh`, `#!/usr/bin/env bash`). If the shebang is missing, malformed, or specifies an unsupported interpreter/flag, the check fails immediately with an error before running containers.
173
+
-**`auto`**: Honors recognized shebangs if present; falls back to `/bin/sh` if no shebang is declared. Scripts with explicit unsupported or malformed shebangs fail immediately with an error (does not silently execute as POSIX).
174
+
166
175
### Exit Code Convention
167
176
-**`0`**: All distributions passed (`PASS`).
168
177
-**`1`**: At least one distribution failed (`FAIL`), timed out (`TIMED_OUT`), or errored (`ERROR`).
@@ -202,7 +211,7 @@ pytest -v
202
211
## Current limitations
203
212
204
213
- Requires access to a Docker daemon.
205
-
- Scripts are currently executed with `/bin/sh`, regardless of their shebang.
214
+
- Scripts are executed with `/bin/sh` by default; use `--shell shebang` or `--shell auto` for shebang-aware execution.
206
215
- Distribution runs are currently sequential.
207
216
- Containers use bridge networking by default.
208
217
- Failure reports currently include only a tail of captured output.
@@ -213,7 +222,6 @@ pytest -v
213
222
## Roadmap
214
223
215
224
See [ROADMAP.md](ROADMAP.md) for planned capabilities, including:
Copy file name to clipboardExpand all lines: ROADMAP.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,8 +9,8 @@ This roadmap tracks features being considered for future releases.
9
9
## Planned Features
10
10
11
11
### 1. Execution Modes (`--shell`)
12
-
-[]**Shebang-aware execution (`--shell shebang | auto`)**: Under consideration. Parse and honor `#!/usr/bin/env bash` or `#!/bin/bash` in distributions where Bash is present, while maintaining unprivileged container defaults.
13
-
-[]**Explicit POSIX mode (`--shell posix`)**: Retain the current baseline of `/bin/sh` across all containers to verify portability.
12
+
-[x]**Shebang-aware execution (`--shell shebang | auto`)**: Implemented on branch `feat/shell-mode` (upcoming release). Parses and honors recognized shebang forms (`sh`, `bash`) across distributions using fixed trusted container commands.
13
+
-[x]**Explicit POSIX mode (`--shell posix`)**: Implemented on branch `feat/shell-mode` (upcoming release). Retains `/bin/sh`baseline across all containers to verify strict POSIX portability.
14
14
15
15
### 2. Resource Constraints
16
16
-[ ]**Memory limits (`--mem-limit`)**: Planned. Constrain container memory usage for scripts under test.
0 commit comments