mirror of
https://github.com/encounter/ghidra-cli.git
synced 2026-07-10 03:18:56 -07:00
99 lines
2.3 KiB
Rust
99 lines
2.3 KiB
Rust
//! Tests for program operations.
|
|||
|
|
|
||
|
|
use assert_cmd::Command;
|
||
|
|
use predicates::prelude::*;
|
||
|
|
use serial_test::serial;
|
||
|
|
|
||
|
|
#[macro_use]
|
||
|
|
mod common;
|
||
|
|
use common::{ensure_test_project, DaemonTestHarness};
|
||
|
|
|
||
|
|
const TEST_PROJECT: &str = "program-test";
|
||
|
|
const TEST_PROGRAM: &str = "sample_binary";
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
#[serial]
|
||
|
|
fn test_program_info() {
|
||
|
|
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||
|
|
|
||
|
|
let harness = DaemonTestHarness::new(TEST_PROJECT, TEST_PROGRAM)
|
||
|
|
.expect("Failed to start daemon");
|
||
|
|
|
||
|
|
Command::cargo_bin("ghidra")
|
||
|
|
.unwrap()
|
||
|
|
.env("GHIDRA_CLI_SOCKET", harness.socket_path())
|
||
|
|
.arg("program")
|
||
|
|
.arg("info")
|
||
|
|
.arg("--program")
|
||
|
|
.arg(TEST_PROGRAM)
|
||
|
|
.assert()
|
||
|
|
.success()
|
||
|
|
.stdout(predicate::str::contains("name"))
|
||
|
|
.stdout(predicate::str::contains("format"));
|
||
|
|
|
||
|
|
drop(harness);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
#[serial]
|
||
|
|
fn test_program_export_json() {
|
||
|
|
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||
|
|
|
||
|
|
let harness = DaemonTestHarness::new(TEST_PROJECT, TEST_PROGRAM)
|
||
|
|
.expect("Failed to start daemon");
|
||
|
|
|
||
|
|
Command::cargo_bin("ghidra")
|
||
|
|
.unwrap()
|
||
|
|
.env("GHIDRA_CLI_SOCKET", harness.socket_path())
|
||
|
|
.arg("program")
|
||
|
|
.arg("export")
|
||
|
|
.arg("json")
|
||
|
|
.arg("--program")
|
||
|
|
.arg(TEST_PROGRAM)
|
||
|
|
.assert()
|
||
|
|
.success()
|
||
|
|
.stdout(predicate::str::contains("functions"));
|
||
|
|
|
||
|
|
drop(harness);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
#[serial]
|
||
|
|
fn test_program_close() {
|
||
|
|
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||
|
|
|
||
|
|
let harness = DaemonTestHarness::new(TEST_PROJECT, TEST_PROGRAM)
|
||
|
|
.expect("Failed to start daemon");
|
||
|
|
|
||
|
|
Command::cargo_bin("ghidra")
|
||
|
|
.unwrap()
|
||
|
|
.env("GHIDRA_CLI_SOCKET", harness.socket_path())
|
||
|
|
.arg("program")
|
||
|
|
.arg("close")
|
||
|
|
.arg("--program")
|
||
|
|
.arg(TEST_PROGRAM)
|
||
|
|
.assert()
|
||
|
|
.success();
|
||
|
|
|
||
|
|
drop(harness);
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
#[serial]
|
||
|
|
fn test_program_info_no_program() {
|
||
|
|
ensure_test_project(TEST_PROJECT, TEST_PROGRAM);
|
||
|
|
|
||
|
|
let harness = DaemonTestHarness::new(TEST_PROJECT, TEST_PROGRAM)
|
||
|
|
.expect("Failed to start daemon");
|
||
|
|
|
||
|
|
Command::cargo_bin("ghidra")
|
||
|
|
.unwrap()
|
||
|
|
.env("GHIDRA_CLI_SOCKET", harness.socket_path())
|
||
|
|
.arg("program")
|
||
|
|
.arg("info")
|
||
|
|
.assert()
|
||
|
|
.failure();
|
||
|
|
|
||
|
|
drop(harness);
|
||
|
|
}
|