The built termux-janitor executable starts with standard input disconnected from a terminal and an
empty isolated working directory. The executable receives no arguments, causing interactive mode
to be attempted.
When
The executable starts.
Required invariants
INV-TERM-STATUS: The process exits with the failure status (code 1).
INV-TERM-DIAGNOSTIC: Standard error contains one concise diagnostic that names the executable,
states that interactive mode requires a terminal stdin, and repeats the usage summary.
Forbidden effects
NO-TERM-STDOUT: Standard output remains empty.
NO-TERM-FIXTURE-MUTATION: The isolated working directory remains empty.
Running with TERM=dumb or with TERM unset exercises the TERM‑environment checks. Running
with terminal stdin/stdout present is a separate scenario.
Limitations
This fixture observes exit status, stderr, and that stdout remains empty. It does not trace
system calls and therefore cannot prove that no other path was read.
# Terminal admission
**Fixture:** `fixture-cli-terminal@1`
## Given
The built `termux-janitor` executable starts with standard input disconnected from a terminal and an
empty isolated working directory. The executable receives no arguments, causing interactive mode
to be attempted.
## When
The executable starts.
## Required invariants
- **`INV-TERM-STATUS`:** The process exits with the failure status (code 1).
- **`INV-TERM-DIAGNOSTIC`:** Standard error contains one concise diagnostic that names the executable,
states that interactive mode requires a terminal stdin, and repeats the usage summary.
## Forbidden effects
- **`NO-TERM-STDOUT`:** Standard output remains empty.
- **`NO-TERM-FIXTURE-MUTATION`:** The isolated working directory remains empty.
## Instrumentation
```zig tj-test
try fixture.given_program("termux-janitor");
try fixture.given_standard_input(.ignored);
try fixture.given_working_directory(.empty);
try fixture.given_no_arguments();
try fixture.when_run_each();
try fixture.then_inv_term_status();
try fixture.then_inv_term_diagnostic();
try fixture.forbid_no_term_stdout();
try fixture.forbid_no_term_fixture_mutation();
```
## Variations
Running with `TERM=dumb` or with `TERM` unset exercises the TERM‑environment checks. Running
with terminal stdin/stdout present is a separate scenario.
## Limitations
This fixture observes exit status, stderr, and that stdout remains empty. It does not trace
system calls and therefore cannot prove that no other path was read.