pub mod build;
pub mod product;
pub mod schema;
pub mod time;
pub mod verify;
pub use build::{build_document, BuildOptions};
pub use product::{detect_product, DetectResult};
pub use schema::{
Document, Justification, Product, Statement, Status, Subcomponent, Vulnerability,
OPENVEX_CONTEXT_V0_2_0,
};
pub use verify::{applied_patches, FailedPatch, VerifyOutcome};
#[cfg(test)]
mod conformance_tests;
#[cfg(test)]
mod reexport_tests {
use super::*;
#[test]
fn every_reexport_is_usable_from_vex_namespace() {
let _: &str = OPENVEX_CONTEXT_V0_2_0;
let _ = DetectResult::default();
let _ = VerifyOutcome::default();
let _ = FailedPatch {
purl: String::new(),
reason: String::new(),
};
let _ = BuildOptions {
product_id: String::new(),
doc_id: String::new(),
author: String::new(),
tooling: None,
};
let _ = Vulnerability {
name: "GHSA-x".to_string(),
aliases: Vec::new(),
};
let _ = Subcomponent {
id: "pkg:npm/x@1".to_string(),
identifiers: None,
hashes: None,
};
let _ = Product {
id: "pkg:npm/app@1.0".to_string(),
identifiers: None,
hashes: None,
subcomponents: Vec::new(),
};
let _ = Statement {
id: None,
vulnerability: Vulnerability {
name: "GHSA-x".to_string(),
aliases: Vec::new(),
},
timestamp: String::new(),
last_updated: None,
products: Vec::new(),
status: Status::NotAffected,
supplier: None,
justification: Some(Justification::InlineMitigationsAlreadyExist),
impact_statement: None,
action_statement: None,
};
let _ = Document {
context: OPENVEX_CONTEXT_V0_2_0.to_string(),
id: String::new(),
author: String::new(),
role: None,
timestamp: String::new(),
last_updated: None,
version: 1,
tooling: None,
statements: Vec::new(),
};
let _ = build_document as *const ();
let _ = detect_product as *const ();
let _ = applied_patches as *const ();
}
}