オンチェーン上でランダムロジック(randomness)が実装できる Verifiable Random Function (VRF) を試していたときに発生したエラー。
現象
rootディレクトリで以下を実行。
% cargo build-sbf
% cargo test-sbf --features test-sbf
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/test.rs (target/debug/deps/test-08f9f6240c3e085c)
running 1 test
[2025-04-13T15:01:23.640719000Z INFO solana_program_test] "ephemeral_vrf_program" SBF program from /Users/256hax/Desktop/tmp/ephemeral-vrf/target/deploy/ephemeral_vrf_program.so, modified 17 minutes, 57 seconds, 369 ms, 423 µs and 380 ns ago
test run_test ... FAILED
failures:
---- run_test stdout ----
thread 'run_test' panicked at /Users/256hax/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/solana-program-test-2.1.16/src/lib.rs:467:31:
Failed to open "tests/integration/use-randomness/target/deploy/use_randomness.so": No such file or directory (os error 2)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
run_test
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
error: test failed, to rerun pass `--test test`
原因
実行ディレクトリが誤っているため。
対策
programsに移動して実行する。
% cd programs
% cargo build-sbf
% cargo test-sbf --features test-sbf
test run_test ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
Doc-tests ephemeral_vrf_program
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
備考
anchor testも実行できる。
% cd program/tests/integration/use-randomness
% npm i
% anchor test
use-randomness
Request randomness Z37DbLBGi2w5Pco6LiEKjLYkeGxrrn3YZXWBaZifjTMm1NP3BDsVcihetDvLNwGK5qhqXyu6U5cThFqdFwoQ3Tk
✔ Request randomness (411ms)
Request randomness 5iDcCzb9BNqW87Rj3iaYR7mMhbmfXU8grddbg6YwmSkZFbYfEH2qff3YjooFnP3b6wzzhz8JP8N3gCYPNrHGnXqv
✔ Simpler request randomness (464ms)
2 passing (878ms)
✨ Done in 3.13s.