whitaker-installer 0.2.7

Installer CLI for Whitaker Dylint lint libraries
Documentation
Feature: Dependency binary installation
  Repository-hosted dependency binaries are preferred before Cargo fallback.

  Scenario: Install cargo-dylint from the repository release
    Given the missing tool is "cargo-dylint"
    And the repository installer succeeds
    When dependency installation runs
    Then the install succeeds
    And stderr contains "Installed cargo-dylint from repository release."

  Scenario: Install dylint-link from the repository release
    Given the missing tool is "dylint-link"
    And the repository installer succeeds
    When dependency installation runs
    Then the install succeeds
    And stderr contains "Installed dylint-link from repository release."

  Scenario: Repository asset is unavailable and cargo install builds from source
    Given the missing tool is "cargo-dylint"
    And the repository installer fails with "not found"
    And cargo binstall is available
    When dependency installation runs
    Then the install succeeds
    And stderr contains "Installed cargo-dylint from source with cargo install."

  Scenario: Repository asset is unavailable and cargo install failure propagates
    Given the missing tool is "cargo-dylint"
    And the repository installer fails with "not found"
    And cargo binstall is available
    And cargo binstall fails with "binstall failed"
    And cargo install fails with "cargo install failed"
    When dependency installation runs
    Then the install fails for "cargo-dylint" with message containing "cargo install failed"

  Scenario: Repository asset and cargo binstall are unavailable and cargo install succeeds
    Given the missing tool is "cargo-dylint"
    And the repository installer fails with "not found"
    And cargo binstall is unavailable
    When dependency installation runs
    Then the install succeeds
    And stderr contains "Installed cargo-dylint from source with cargo install."

  Scenario: Repository asset and cargo binstall are unavailable and cargo install fails
    Given the missing tool is "cargo-dylint"
    And the repository installer fails with "not found"
    And cargo binstall is unavailable
    And cargo install fails with "cargo install failed"
    When dependency installation runs
    Then the install fails for "cargo-dylint" with message containing "cargo install failed"

  Scenario: Repository install fails verification and cargo binstall is used
    Given the missing tool is "cargo-dylint"
    And the repository installer succeeds but verification fails
    And cargo binstall is available
    When dependency installation runs
    Then the install succeeds
    And stderr contains "failed verification"
    And stderr contains "Installed cargo-dylint with cargo binstall."

  Scenario: Unsupported target skips the repository path and uses cargo binstall
    Given the missing tool is "cargo-dylint"
    And the target is unsupported
    And cargo binstall is available
    When dependency installation runs
    Then the install succeeds
    And stderr contains "Installed cargo-dylint with cargo binstall."

  Scenario: Repository install succeeds when cargo binstall is unavailable
    Given the missing tool is "cargo-dylint"
    And the repository installer succeeds
    And cargo binstall is unavailable
    When dependency installation runs
    Then the install succeeds
    And stderr contains "Installed cargo-dylint from repository release."

  Scenario: Provenance document lists both dependencies
    Given the dependency manifest is loaded
    When provenance markdown is rendered
    Then the provenance contains "https://github.com/trailofbits/dylint"
    And the provenance contains "cargo-dylint"
    And the provenance contains "dylint-link"

  Scenario: dylint-link remains unavailable after cargo install
    Given the missing tool is "dylint-link"
    And the repository installer fails with "not found"
    And cargo binstall is unavailable
    And dylint-link is missing from PATH after installation
    When dependency installation runs
    Then the install fails for "dylint-link" with message containing "still unavailable"