name: "CLI tests"
cases:
  - name: "Basic echo"
    stdin: "echo hello world"
    expected_exit_code: 0
    expected_stdout: "hello world\n"

  - name: "Exit code propagates"
    stdin: "exit 42"
    expected_exit_code: 42
    # WASI 0.2's wasi-cli/exit interface only models success/failure, so any
    # non-zero exit code is clamped to 1 by the host (e.g., wasmtime).
    incompatible_platforms: ["wasi"]

  - name: "Echo via args"
    args:
      - "-c"
      - "echo from args"
    expected_exit_code: 0
    expected_stdout: "from args\n"

  - name: "Version flag succeeds"
    args:
      - "--version"
    expected_exit_code: 0
    # Note: can't easily check stdout content as it varies

  - name: "Help flag succeeds"
    args:
      - "--help"
    expected_exit_code: 0

  - name: "Invalid option fails"
    args:
      - "--unknown-argument-here"
    expected_exit_code: 2
    # Exit code 2 for argument parsing errors.
    # WASI 0.2's wasi-cli/exit interface only models success/failure, so any
    # non-zero exit code is clamped to 1 by the host (e.g., wasmtime).
    incompatible_platforms: ["wasi"]

  - name: "Explicit config file not found fails"
    removed_default_args:
      - "--no-config"
    args:
      - "--config"
      - "/nonexistent/path/to/config.toml"
      - "-c"
      - "echo should_not_run"
    expected_exit_code: 1

  - name: "Explicit config file valid"
    removed_default_args:
      - "--no-config"
    test_files:
      - path: "config.toml"
        contents: |
          [ui]
          syntax-highlighting = false

          [experimental]
          zsh-hooks = false
    args:
      - "--config"
      - "config.toml"
      - "-c"
      - "echo config_loaded"
    expected_exit_code: 0
    expected_stdout: "config_loaded\n"

  - name: "Config file with unknown fields succeeds"
    removed_default_args:
      - "--no-config"
    test_files:
      - path: "config.toml"
        contents: |
          [ui]
          syntax-highlighting = true
          future-setting = "ignored"

          [unknown-section]
          foo = "bar"
    args:
      - "--config"
      - "config.toml"
      - "-c"
      - "echo forward_compat"
    expected_exit_code: 0
    expected_stdout: "forward_compat\n"
