1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
use crate::{build_contracts::build_contract, opts::RunTestsCmd};
use std::{
io,
process::{Command, ExitStatus},
};
use util::get_target_dir;
const CONTRACTS: &[&str] = &["bios", "msig", "token", "wrap"];
fn eosio_contract_tests() -> io::Result<ExitStatus> {
let target_dir = get_target_dir()?;
let mut cmd = Command::new("docker");
cmd.arg("run").arg("--rm");
for name in CONTRACTS {
let crate_name = format!("eosio_{}", name);
let contract_name = format!("eosio.{}", name);
build_contract(&crate_name);
let volume = {
let name = format!("{}_gc.wasm", crate_name);
let path = target_dir.join(name);
format!(
"{}:/eosio.contracts/build/contracts/{}/{}.wasm:ro",
path.to_string_lossy(),
contract_name,
contract_name
)
};
cmd.arg("--volume").arg(volume);
}
cmd.arg("--entrypoint")
.arg("/eosio.contracts/build/tests/unit_test")
.arg("sagansoftware/eosio.contracts:1.9.0")
.arg("--show_progress=yes");
for name in CONTRACTS {
cmd.arg(format!("--run_test=eosio_{}_tests", name));
}
cmd.status()
}
pub fn run_test(_opts: RunTestsCmd) {
eosio_contract_tests().unwrap();
}