Luigit
repositories / termux-janitor

termux-janitor

Interactive cleanup assistant for Termux: transparent, safe, confirmed disk reclamation.

owned by admin

spec/fixtures/cli/version.md

Raw
Rendered preview

Command version

Fixture: fixture-cli-version@1

Given

The built termux-janitor executable starts with standard input disconnected from a terminal and an empty isolated working directory.

The executable receives exactly one argument, --version.

When

The executable starts.

Required invariants

  • INV-VERSION-SUCCESS: The process exits with the registered success status.
  • INV-VERSION-STDOUT: Standard output names the executable and the one canonical package version.
  • INV-VERSION-CHARSET: The reported version is nonempty and uses only ASCII letters, digits, ., -, _, and +.

Forbidden effects

  • NO-VERSION-STDERR: Standard error remains empty.
  • NO-VERSION-FIXTURE-MUTATION: The isolated working directory remains empty.

Instrumentation

try fixture.given_program("termux-janitor");
try fixture.given_standard_input(.ignored);
try fixture.given_working_directory(.empty);
try fixture.given_arguments(&.{"--version"});
try fixture.when_run();
try fixture.then_inv_version_success();
try fixture.then_inv_version_stdout();
try fixture.then_inv_version_charset();
try fixture.forbid_no_version_stderr();
try fixture.forbid_no_version_fixture_mutation();

Variations

Rejected invocations, including --version combined with any other argument, belong to the usage fixture. Manual-page and release-archive version synchronization are separate scenarios.

Limitations

This fixture observes the version reported by the locally built executable. It does not prove that a published release tag, archive name, or downstream package version carries the same value.

# Command version

**Fixture:** `fixture-cli-version@1`

## Given

The built `termux-janitor` executable starts with standard input disconnected from a terminal and an
empty isolated working directory.

The executable receives exactly one argument, `--version`.

## When

The executable starts.

## Required invariants

- **`INV-VERSION-SUCCESS`:** The process exits with the registered success status.
- **`INV-VERSION-STDOUT`:**
  Standard output names the executable and the one canonical package version.
- **`INV-VERSION-CHARSET`:**
  The reported version is nonempty and uses only ASCII letters, digits, `.`, `-`, `_`, and `+`.

## Forbidden effects

- **`NO-VERSION-STDERR`:** Standard error remains empty.
- **`NO-VERSION-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_arguments(&.{"--version"});
try fixture.when_run();
try fixture.then_inv_version_success();
try fixture.then_inv_version_stdout();
try fixture.then_inv_version_charset();
try fixture.forbid_no_version_stderr();
try fixture.forbid_no_version_fixture_mutation();
```

## Variations

Rejected invocations, including `--version` combined with any other argument, belong to the usage
fixture. Manual-page and release-archive version synchronization are separate scenarios.

## Limitations

This fixture observes the version reported by the locally built executable. It does not prove that a
published release tag, archive name, or downstream package version carries the same value.