mirror of
https://github.com/encounter/ghidra-cli.git
synced 2026-07-10 03:18:56 -07:00
fix: add require_ghidra!() guard to all integration tests
Tests that use DaemonTestHarness or ensure_test_project were missing the require_ghidra!() macro, causing them to attempt bridge startup in CI where Ghidra is not installed, resulting in 120s timeouts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
e26634c03c
commit
5b595ab58a
@@ -23,6 +23,7 @@ fn create_batch_file(content: &str) -> PathBuf {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_batch_multiple_queries() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -54,6 +55,7 @@ query --function main
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_batch_empty_file() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -85,6 +87,7 @@ fn test_batch_empty_file() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_batch_with_comments() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -118,6 +121,7 @@ query --address 0x100000
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_batch_invalid_file() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -139,6 +143,7 @@ fn test_batch_invalid_file() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_batch_with_invalid_command() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -14,6 +14,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_comment_set_and_get() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -54,6 +55,7 @@ fn test_comment_set_and_get() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_comment_list() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -90,6 +92,7 @@ fn test_comment_list() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_comment_delete() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -14,6 +14,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_diff_programs() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -37,6 +38,7 @@ fn test_diff_programs() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_diff_functions() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -27,6 +27,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_disasm_at_main() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -74,6 +75,7 @@ fn test_disasm_at_main() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_disasm_with_instruction_limit() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -122,6 +124,7 @@ fn test_disasm_with_instruction_limit() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_disasm_small_count() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -160,6 +163,7 @@ fn test_disasm_small_count() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_disasm_instruction_fields() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -221,6 +225,7 @@ fn test_disasm_instruction_fields() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_disasm_invalid_address() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -255,6 +260,7 @@ fn test_disasm_invalid_address() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_disasm_missing_program() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -274,6 +280,7 @@ fn test_disasm_missing_program() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_disasm_zero_instructions() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -310,6 +317,7 @@ fn test_disasm_zero_instructions() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_disasm_output_format_snapshot() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -14,6 +14,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_find_string() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -38,6 +39,7 @@ fn test_find_string() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_find_bytes() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -62,6 +64,7 @@ fn test_find_bytes() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_find_function() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -86,6 +89,7 @@ fn test_find_function() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_find_function_glob() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -110,6 +114,7 @@ fn test_find_function_glob() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_find_calls() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -133,6 +138,7 @@ fn test_find_calls() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_find_crypto() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -156,6 +162,7 @@ fn test_find_crypto() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_find_interesting() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -179,6 +186,7 @@ fn test_find_interesting() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_find_string_no_matches() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -14,6 +14,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_graph_calls() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -38,6 +39,7 @@ fn test_graph_calls() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_graph_callers() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -62,6 +64,7 @@ fn test_graph_callers() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_graph_callees() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -86,6 +89,7 @@ fn test_graph_callees() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_graph_export_dot() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -26,6 +26,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_bytes_success() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -66,6 +67,7 @@ fn test_patch_bytes_success() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_nop_success() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -98,6 +100,7 @@ fn test_patch_nop_success() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_export() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -136,6 +139,7 @@ fn test_patch_export() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_at_function_boundary() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -162,6 +166,7 @@ fn test_patch_at_function_boundary() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_invalid_address_fails() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -196,6 +201,7 @@ fn test_patch_invalid_address_fails() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_invalid_hex_fails() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -220,6 +226,7 @@ fn test_patch_invalid_hex_fails() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_odd_hex_length() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -249,6 +256,7 @@ fn test_patch_odd_hex_length() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_missing_program_arg() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -277,6 +285,7 @@ fn test_patch_missing_program_arg() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_patch_output_format_snapshot() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -14,6 +14,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_program_info() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -38,6 +39,7 @@ fn test_program_info() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_program_export_json() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -62,6 +64,7 @@ fn test_program_export_json() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_program_close() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -84,6 +87,7 @@ fn test_program_close() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_program_info_no_program() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -33,6 +33,7 @@ static HARNESS: Lazy<DaemonTestHarness> = Lazy::new(|| {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_function_list_schema_validation() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
@@ -65,6 +66,7 @@ fn test_function_list_schema_validation() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_function_list_contains_expected_functions() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
@@ -99,6 +101,7 @@ fn test_function_list_contains_expected_functions() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_function_list_limit() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let limit = 3;
|
||||
@@ -129,6 +132,7 @@ fn test_function_list_limit() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_function_list_filter() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
@@ -169,6 +173,7 @@ fn test_function_list_filter() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_strings_list_schema_validation() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
@@ -199,6 +204,7 @@ fn test_strings_list_schema_validation() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_memory_map_schema_validation() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
@@ -242,6 +248,7 @@ fn test_memory_map_schema_validation() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_summary_contains_expected_fields() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
@@ -263,6 +270,7 @@ fn test_summary_contains_expected_fields() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_decompile_by_name() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
@@ -288,6 +296,7 @@ fn test_decompile_by_name() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_decompile_by_address() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
// Get main's address dynamically
|
||||
@@ -312,6 +321,7 @@ fn test_decompile_by_address() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_decompile_nonexistent_function() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
@@ -341,6 +351,7 @@ fn test_decompile_nonexistent_function() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_xref_to() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let main_addr = get_function_address(harness, TEST_PROJECT, TEST_PROGRAM, "main");
|
||||
@@ -361,6 +372,7 @@ fn test_xref_to() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_xref_from() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let main_addr = get_function_address(harness, TEST_PROJECT, TEST_PROGRAM, "main");
|
||||
@@ -384,6 +396,7 @@ fn test_xref_from() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_function_list_snapshot() {
|
||||
require_ghidra!();
|
||||
let harness = &*HARNESS;
|
||||
|
||||
let result = ghidra(harness)
|
||||
|
||||
@@ -39,6 +39,7 @@ print("Test script executed")
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_script_list() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -62,6 +63,7 @@ fn test_script_list() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_script_run() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let script_path = create_test_script();
|
||||
@@ -90,6 +92,7 @@ fn test_script_run() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_script_python_inline() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -114,6 +117,7 @@ fn test_script_python_inline() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_script_run_nonexistent() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -14,6 +14,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_stats_normal() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -38,6 +39,7 @@ fn test_stats_normal() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_stats_has_all_fields() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -67,6 +69,7 @@ fn test_stats_has_all_fields() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_stats_json_format() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -14,6 +14,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_symbol_list() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -37,6 +38,7 @@ fn test_symbol_list() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_symbol_create_and_get() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -74,6 +76,7 @@ fn test_symbol_create_and_get() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_symbol_rename() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -111,6 +114,7 @@ fn test_symbol_rename() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_symbol_get_nonexistent() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
@@ -14,6 +14,7 @@ const TEST_PROGRAM: &str = "sample_binary";
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_type_list() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -37,6 +38,7 @@ fn test_type_list() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_type_get_primitive() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -61,6 +63,7 @@ fn test_type_get_primitive() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_type_create() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -84,6 +87,7 @@ fn test_type_create() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_type_apply() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
@@ -108,6 +112,7 @@ fn test_type_apply() {
|
||||
#[test]
|
||||
#[serial]
|
||||
fn test_type_get_nonexistent() {
|
||||
require_ghidra!();
|
||||
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||||
|
||||
let harness =
|
||||
|
||||
Reference in New Issue
Block a user