Skip to content

Commit

Permalink
rust: Add "test-c-from-rust" feature-gate.
Browse files Browse the repository at this point in the history
Due to linker issues (#25386) when testing Rust code which calls C,
all tests which touch FFI code should now be feature-gated behind the
"test-c-from-rust" flag.  To run this test code, cargo must be called
with `cargo test --features="test-c-from-rust"`.

 * FIXES #26398: https://bugs.torproject.org/26398
  • Loading branch information
isislovecruft committed Jun 18, 2018
1 parent bcc1368 commit 508332f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/rust/Cargo.toml
Expand Up @@ -14,3 +14,12 @@ members = [
debug = true
panic = "abort"

[features]
default = []
# If this feature is enabled, test code which calls Tor C code from Rust will
# execute with `cargo test`. Due to numerous linker issues (#25386), this is
# currently disabled by default. Crates listed here are those which, in their
# unittests, doctests, and/or integration tests, call C code.
test-c-from-rust = [
"crypto/test-c-from-rust",
]
4 changes: 4 additions & 0 deletions src/rust/crypto/Cargo.toml
Expand Up @@ -26,4 +26,8 @@ rand_core = { version = "=0.2.0-pre.0", default-features = false }

[features]
testing = ["tor_log/testing"]
# If this feature is enabled, test code which calls Tor C code from Rust will
# execute with `cargo test`. Due to numerous linker issues (#25386), this is
# currently disabled by default.
test-c-from-rust = []

6 changes: 6 additions & 0 deletions src/rust/crypto/digests/sha2.rs
Expand Up @@ -165,15 +165,19 @@ impl FixedOutput for Sha512 {

#[cfg(test)]
mod test {
#[cfg(feature = "test-c-from-rust")]
use digest::Digest;

#[cfg(feature = "test-c-from-rust")]
use super::*;

#[cfg(feature = "test-c-from-rust")]
#[test]
fn sha256_default() {
let _: Sha256 = Sha256::default();
}

#[cfg(feature = "test-c-from-rust")]
#[test]
fn sha256_digest() {
let mut h: Sha256 = Sha256::new();
Expand All @@ -190,11 +194,13 @@ mod test {
assert_eq!(&result[..], &b"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"[..]);
}

#[cfg(feature = "test-c-from-rust")]
#[test]
fn sha512_default() {
let _: Sha512 = Sha512::default();
}

#[cfg(feature = "test-c-from-rust")]
#[test]
fn sha512_digest() {
let mut h: Sha512 = Sha512::new();
Expand Down

0 comments on commit 508332f

Please sign in to comment.