//
// Syd: rock-solid unikernel
// tests/tests.rs: Integration tests
//
// Copyright (c) 2023, 2024 Ali Polatel <alip@chesswob.org>
// Copyright (c) 2023 Johannes Nixdorf <mixi@exherbo.org>
//
// SPDX-License-Identifier: GPL-3.0-or-later

use std::{env, process::Command};

const SYD_EXE: &'static str = env!("CARGO_BIN_EXE_syd");
const SYD_CHK_EXE: &'static str = env!("CARGO_BIN_EXE_syd-chk");
const SYD_EXEC_EXE: &'static str = env!("CARGO_BIN_EXE_syd-exec");
const SYD_HEX_EXE: &'static str = env!("CARGO_BIN_EXE_syd-hex");
const SYD_SIZE_EXE: &'static str = env!("CARGO_BIN_EXE_syd-size");
const SYD_ELF_EXE: &'static str = env!("CARGO_BIN_EXE_syd-elf");
const SYD_CPU_EXE: &'static str = env!("CARGO_BIN_EXE_syd-cpu");
const SYD_TOR_EXE: &'static str = env!("CARGO_BIN_EXE_syd-tor");
const SYD_TEST_EXE: &'static str = env!("CARGO_BIN_EXE_syd-test");
const SYD_TEST_DO_EXE: &'static str = env!("CARGO_BIN_EXE_syd-test-do");

#[test]
fn syd_test() {
    env::set_var("CARGO_BIN_EXE_syd", SYD_EXE);
    env::set_var("CARGO_BIN_EXE_syd-chk", SYD_CHK_EXE);
    env::set_var("CARGO_BIN_EXE_syd-exec", SYD_EXEC_EXE);
    env::set_var("CARGO_BIN_EXE_syd-hex", SYD_HEX_EXE);
    env::set_var("CARGO_BIN_EXE_syd-size", SYD_SIZE_EXE);
    env::set_var("CARGO_BIN_EXE_syd-elf", SYD_ELF_EXE);
    env::set_var("CARGO_BIN_EXE_syd-cpu", SYD_CPU_EXE);
    env::set_var("CARGO_BIN_EXE_syd-tor", SYD_TOR_EXE);
    env::set_var("CARGO_BIN_EXE_syd-test-do", SYD_TEST_DO_EXE);
    let status = Command::new(SYD_TEST_EXE)
        .status()
        .expect("execute syd-test");
    assert!(
        status.success(),
        "{} tests failed!",
        status.code().unwrap_or(-1)
    );
}
