#!/usr/bin/env bash set -euo pipefail : "${GHIDR_ANALYZE_HEADLESS:?set by the Nix check or dev shell}" : "${GHIDR_ADAPTER_PATH:?set by the Nix check or dev shell}" : "${GHIDR_FIXTURES:?set by the Nix check}" test_root="${TMPDIR:?}/ghidr-adapter-e2e" mkdir -p "$test_root/project" "$test_root/invocation" doctor_request="$test_root/invocation/doctor-request.json" doctor_response="$test_root/invocation/doctor-response.json" request="$test_root/invocation/request.json" response="$test_root/invocation/response.json" sample="$GHIDR_FIXTURES/elf-x86_64/known.elf" cp tests/data/adapter-doctor-request.json "$doctor_request" "$GHIDR_ANALYZE_HEADLESS" "$test_root" doctor-probe \ -noanalysis \ -scriptPath "$GHIDR_ADAPTER_PATH" \ -postScript GhidrAdapter.java "$doctor_request" "$doctor_response" \ -deleteProject jq -e ' .operation == "doctor" and .result.status == "success" and .result.data.ready == true and .result.data.ghidra_version == "12.1.2" and .result.data.java_version == 21 ' "$doctor_response" sed \ -e "s|@SAMPLE@|$sample|g" \ -e "s|@ANALYSIS@|$test_root/project|g" \ tests/data/adapter-inspect-request.json > "$request" "$GHIDR_ANALYZE_HEADLESS" "$test_root/project" analysis \ -import "$sample" \ -analysisTimeoutPerFile 60 \ -max-cpu 2 \ -scriptPath "$GHIDR_ADAPTER_PATH" \ -postScript GhidrAdapter.java "$request" "$response" jq -e ' .protocol_version == 1 and .invocation_id == "0123456789abcdef0123456789abcdef" and .operation == "inspect" and .result.status == "success" and .result.data.context.target.processor_language == "x86:LE:64:default" and (.result.data.context.analyzer_options | length) > 0 ' "$response" test ! -e "$response.tmp"