Skip to content

Robustness debt: zero tests, dual orchestrators, ignored step failures, half-finished exec hardening, dead code #98

Description

@PascalTemel

Robustness/test debt batch for a package whose entire job is mutating developer machines (git config, credentials, shell tools, ~/.claude/~/.gemini/~/.codex):

  • Zero tests. No test script, no test files ever committed; CI is eslint + prettier only (.github/workflows/npm.yml).
  • runFullSetup ignores every step's return value (bin/cli.js:62-108) — failed steps still end in the "Setup Complete!" banner. Similarly configureGrafanaCli returns success when context verification fails (grafanactl.js:348-355).
  • Two parallel orchestrators maintain the same tool list twice: bin/cli.js:57-112 (hardcoded [1/12] labels) vs. lib/index.js:127-253 (CLI_TOOLS) — drift by design.
  • Half-finished exec hardening: newer installers use spawnSync + arg arrays + input validation (esq, discord, logcli); older ones interpolate into execSync shell strings — ${binary} breaks on spaced paths (atl.js:64,267,303, n8n.js:50,260), hcloud context create ${name} interpolates user input into a shell (hcloud.js:83), grafanactl uses a fixed /tmp dir + unvalidated tag_name in a pipeline (grafanactl.js:189-192) while logcli does it right (logcli.js:69,81-84). Finish the migration in one pass.
  • Slow status probes: isPlaywrightConfigured launches a real headless-Chromium screenshot (up to 15 s) and is called twice per menu render (playwright.js:29-49; lib/index.js:229-234,301-305).
  • Dead code: writeFileSecure, ensureSourceLine/removeSourceLine (both summaries still tell users to source a profile nothing edits — bin/cli.js:219-221, lib/index.js:340-342), removeBlock, execCommand, detectExistingConfig, SUPPORTED_TOOLS duplication.

Suggested first step: a smoke-test suite around the pure logic (block splice, asset-name construction, config detection) — the grafanactl asset-name bug (sibling issue) would have been caught by a 5-line test.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions