#!/bin/sh
# Smoke test for the installed args library; runs offline.
set -eu

work=$(mktemp -d)
export HOME="$work"
trap 'rm -rf "$work"' EXIT INT TERM

DART=$(command -v dart 2>/dev/null || true)
[ -n "$DART" ] || DART=/usr/lib/dart/bin/dart

mkdir -p "$work/.dart_tool"
cat > "$work/.dart_tool/package_config.json" <<'EOF'
{"configVersion":2,"packages":[{"name":"args","rootUri":"file:///usr/share/dart/packages/args","packageUri":"lib/","languageVersion":"3.3"}]}
EOF

cat > "$work/main.dart" <<'EOF'
import "package:args/args.dart";

void main() {
  final parser = ArgParser()
    ..addFlag("verbose", abbr: "v")
    ..addOption("output", abbr: "o", defaultsTo: "out.txt");

  final result = parser.parse(["-v", "-o", "result.txt"]);
  if (result["verbose"] != true) {
    throw "the flag was not parsed";
  }
  if (result["output"] != "result.txt") {
    throw "the option was not parsed";
  }

  var rejected = false;
  try {
    parser.parse(["--no-such-option"]);
  } on FormatException {
    rejected = true;
  }
  if (!rejected) {
    throw "an unknown option was not rejected";
  }

  print("args smoke test passed");
}
EOF

cd "$work"
"$DART" run main.dart
