diff --git a/.gitignore b/.gitignore index 0251ae90..5e6ef8ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # Build files -/target +target # Code Editor related files .idea diff --git a/Cargo.lock b/Cargo.lock index 3ff03d99..1a2901ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -150,9 +150,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "4cd2405b3ac1faab2990b74d728624cd9fd115651fcecc7c2d8daf01376275ba" dependencies = [ "anstyle", "anstyle-parse", @@ -830,7 +830,7 @@ dependencies = [ "bs58 0.4.0", "camino", "cargo_metadata", - "clap 4.4.6", + "clap 4.4.16", "color-eyre", "colored", "derive_more", @@ -857,6 +857,7 @@ dependencies = [ "strum", "strum_macros", "symbolic-debuginfo", + "wasmcov", "zstd", ] @@ -867,7 +868,7 @@ dependencies = [ "borsh 1.1.0", "camino", "cargo-near 0.5.0", - "clap 4.4.6", + "clap 4.4.16", "color-eyre", "const_format", "function_name", @@ -1020,23 +1021,23 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.6" +version = "4.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" +checksum = "58e54881c004cec7895b0068a0a954cd5d62da01aef83fa35b1e594497bf5445" dependencies = [ "clap_builder", - "clap_derive 4.4.2", + "clap_derive 4.4.7", ] [[package]] name = "clap_builder" -version = "4.4.6" +version = "4.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" +checksum = "59cb82d7f531603d2fd1f507441cdd35184fa81beff7bd489570de7f773460bb" dependencies = [ "anstream", "anstyle", - "clap_lex 0.5.1", + "clap_lex 0.6.0", "strsim", ] @@ -1055,9 +1056,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.2" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck 0.4.1", "proc-macro2", @@ -1076,9 +1077,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "color-eyre" @@ -1397,7 +1398,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6ee87af31d84ef885378aebca32be3d682b0e0dc119d5b4860a2c5bb5046730" dependencies = [ - "uuid", + "uuid 0.8.2", ] [[package]] @@ -1995,6 +1996,12 @@ dependencies = [ "url", ] +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "goblin" version = "0.5.4" @@ -2737,6 +2744,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minicov" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39f85413e6e1b67d6addd3c64e9dae468845c941448b2007675236d3b3f23858" +dependencies = [ + "cc", + "walkdir", +] + [[package]] name = "minifier" version = "0.2.3" @@ -2888,7 +2905,7 @@ dependencies = [ "bs58 0.5.0", "bytesize", "cargo-util", - "clap 4.4.6", + "clap 4.4.16", "color-eyre", "derive_more", "dirs", @@ -3070,7 +3087,7 @@ checksum = "af7d35397b02b131c188c72f3885e97daeccab134ec2fc8cc0073a94cf1cfe19" dependencies = [ "actix", "atty", - "clap 4.4.6", + "clap 4.4.16", "near-crypto 0.17.0", "near-primitives-core 0.17.0", "once_cell", @@ -3854,7 +3871,7 @@ checksum = "13f4d162ecaaa1467de5afbe62d597757b674b51da8bb4e587430c5fdb2af7aa" dependencies = [ "fallible-iterator", "scroll 0.10.2", - "uuid", + "uuid 0.8.2", ] [[package]] @@ -5037,7 +5054,7 @@ dependencies = [ "debugid", "memmap2", "stable_deref_trait", - "uuid", + "uuid 0.8.2", ] [[package]] @@ -5720,6 +5737,15 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +[[package]] +name = "uuid" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +dependencies = [ + "getrandom 0.2.10", +] + [[package]] name = "valuable" version = "0.1.0" @@ -5841,6 +5867,20 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +[[package]] +name = "wasmcov" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809701d4b9fcf57dd88256a08f0f9758b70a8d3c974d6052dd6420f175245ff7" +dependencies = [ + "anyhow", + "clap 4.4.16", + "glob", + "minicov", + "regex", + "uuid 1.6.1", +] + [[package]] name = "wasmparser" version = "0.83.0" diff --git a/cargo-near/Cargo.toml b/cargo-near/Cargo.toml index 289e83c4..963c0433 100644 --- a/cargo-near/Cargo.toml +++ b/cargo-near/Cargo.toml @@ -32,6 +32,7 @@ near-abi = { version = "0.4.0", features = ["__chunked-entries"] } libloading = "0.7.3" zstd = "0.11" atty = "0.2.14" +wasmcov = { version = "0.1" } color-eyre = "0.6" inquire = "0.6" @@ -49,3 +50,4 @@ near-primitives = "0.17.0" near-jsonrpc-client = "0.6.0" near-jsonrpc-primitives = "0.17.0" dunce = "1" + diff --git a/cargo-near/src/util/mod.rs b/cargo-near/src/util/mod.rs index c425eced..c2ea9626 100644 --- a/cargo-near/src/util/mod.rs +++ b/cargo-near/src/util/mod.rs @@ -194,6 +194,24 @@ pub(crate) fn compile_project( } } + //#[cfg(feature = "wasmcov")] + // final env: {"CARGO_PROFILE_DEV_DEBUG": "0", "CARGO_PROFILE_DEV_LTO": "off", "CARGO_PROFILE_DEV_OPT_LEVEL": "0", "RUSTFLAGS": "-Awarnings"} + // wasmcov env: export WASMCOV_DIR=/home/noah/cargo-near-new-project-template/wasmcov; export CARGO_TARGET_DIR=/home/noah/cargo-near-new-project-template/wasmcov/target; export RUSTC_BOOTSTRAP=1; export RUSTFLAGS="-Cinstrument-coverage -Zno-profiler-runtime -Zlocation-detail=none --emit=llvm-ir -Clto=no" + + // parse wasmcov setup output (which is a series of export ENVVARNAME=value commands) into the same format as final_env, then merge them + wasmcov::setup(None).expect("Failed to setup wasmcov"); + // let wasmcov_env = wasmcov_env + // .split("; ") + // .map(|s| { + // let mut split = s.splitn(2, '='); + // let key = split.next().unwrap(); + // let value = split.next().unwrap(); + // (key, value) + // }) + // .collect::>(); + + // println!("wasmcov_env: {:?}", wasmcov_env); + let artifacts = invoke_cargo( "build", [&["--message-format=json-render-diagnostics"], args].concat(),