#![cfg(not(feature = "capi"))]
use std::fs::File;
use std::io::Read;
use std::path::PathBuf;
use toml::Table;
use rustls_ffi::rustls_version;
#[test]
fn rustls_version_match() {
let mut metadata_file =
File::open(PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("Cargo.toml"))
.expect("failed to open Cargo.toml");
let mut metadata_content = String::new();
metadata_file
.read_to_string(&mut metadata_content)
.expect("failed to read Cargo.toml");
let metadata = metadata_content.parse::<Table>().unwrap();
let rustls_crypto_provider = {
if cfg!(all(feature = "ring", not(feature = "aws-lc-rs"))) {
"ring"
} else {
"aws-lc-rs"
}
};
let deps = metadata["dependencies"].as_table().unwrap();
let rustls_dep = &deps["rustls"];
let rustls_dep_version = match rustls_dep.as_table() {
Some(table) => table["version"].as_str(),
None => rustls_dep.as_str(),
}
.expect("missing rustls dependency version")
.trim_start_matches("=");
let rustls_ffi_version = rustls_version();
let rustls_ffi_version = unsafe { rustls_ffi_version.to_str() };
let rustls_ffi_version_parts = rustls_ffi_version.split('/').collect::<Vec<_>>();
assert_eq!(
rustls_ffi_version_parts,
vec![
env!("CARGO_PKG_NAME"),
env!("CARGO_PKG_VERSION"),
"rustls",
rustls_dep_version,
rustls_crypto_provider,
]
);
}