I'm using https://github.com/near/workspaces-rs/ and have lines in my functions like log!("Removed {} from {}", &key, &recipient);
(using use near_sdk::{env, log};
)
But those log messages don't appear in the terminal when I run my integration tests.
How to initialize the logger for integration tests? pointed me to https://docs.rs/env_logger/0.9.0/env_logger/index.html#capturing-logs-in-tests which gives this example:
#[cfg(test)]
mod tests {
fn init() {
let _ = env_logger::builder().is_test(true).try_init();
}
#[test]
fn it_works() {
init();
info!("This record will be captured by `cargo test`");
assert_eq!(2, 1 + 1);
}
}
But even when I create and call that init()
function and also replace my log!()
calls with info!()
, I get nothing.
(I can see the log outputs of the tests themselves but not the logging from within the main implementation code.)
Logs will be shown in the outcome from .call()
and can be retrieved from the receipts
element in the returned data structure (receipts -> ExecutionOutcome -> logs
).
To prove this works, I created a new project in my projects directory with npx create-near-app
which comes with a basic get-set string contract in TypeScript. I deleted the integration-tests
folder since the implementation was in JS/TS and created a new tests folder in instead, with a similar structure to that seen here: https://github.com/near-examples/NFT/tree/master/integration-tests/rs
Here are the files that I modified: https://gist.github.com/idea404/5ecbcfaa2b1e41b9e33df15dfdaa0dae
Upon running the tests with npm test
from the project's root directory, I get the following output:
cargo run --example test
Compiling ryan-ex v0.1.0 (/Users/dennis/Code/ryan-ex/tests)
Finished dev [unoptimized + debuginfo] target(s) in 1.24s
Running `target/debug/examples/test`
starting test
set_greeting outcome: ExecutionFinalResult {
total_gas_burnt: 10898323344200,
transaction: ExecutionOutcome {
block_hash: `7gFBcM8paTWx9FnDVhZvLdYwHAS5YEyGpQYp9Ve8cEq9`,
logs: [],
receipt_ids: [
`4E4cw7uXM31xpifF1tiDgrfaBV8yTuvDa86ucZHDey2o`,
],
gas_burnt: 2428003729558,
tokens_burnt: 242800372955800000000,
executor_id: AccountId(
"dev-20221025122820-11314570895307",
),
status: SuccessReceiptId(4E4cw7uXM31xpifF1tiDgrfaBV8yTuvDa86ucZHDey2o),
},
receipts: [
ExecutionOutcome {
block_hash: `7gFBcM8paTWx9FnDVhZvLdYwHAS5YEyGpQYp9Ve8cEq9`,
logs: [
"Saving greeting hello there",
],
receipt_ids: [
`ExWePuAjosnbJRQSXzWczfWmbqcu9RwRzQqTsjnssVdo`,
],
gas_burnt: 8247137052142,
tokens_burnt: 824713705214200000000,
executor_id: AccountId(
"dev-20221025122820-11314570895307",
),
status: SuccessValue(``),
},
ExecutionOutcome {
block_hash: `Ed1wmpFgMQEtFAs5RgBzVBmwvyc3Tow2JBHh2mmD9HiC`,
logs: [],
receipt_ids: [],
gas_burnt: 223182562500,
tokens_burnt: 0,
executor_id: AccountId(
"dev-20221025122820-11314570895307",
),
status: SuccessValue(``),
},
],
status: SuccessValue(``),
}
--------------
"hello there"
Dev Account ID: dev-20221025122820-11314570895307