///|
/// A two-project offline mirror audit. Both METADATA and PEP 691 responses
/// come from the checked-in PyPI corpus; only the PEP 751 lock is a small,
/// explicit scenario input. The wheel names and sha256 values in that lock
/// are copied from the committed index responses, not invented hashes.
fn main {
let mut flask_metadata = ""
let mut jinja_metadata = ""
for (name, document) in @fixtures.metadata_pypi_cases {
if name == "flask-0.12.5" {
flask_metadata = document
} else if name == "jinja2-2.10.1" {
jinja_metadata = document
}
}
let mut flask_index = ""
let mut jinja_index = ""
for (name, document, _projection) in @fixtures.index_pypi_cases {
if name == "flask" {
flask_index = document
} else if name == "jinja2" {
jinja_index = document
}
}
if flask_metadata.is_empty() ||
jinja_metadata.is_empty() ||
flask_index.is_empty() ||
jinja_index.is_empty() {
abort("checked-in PyPI fixtures for the bundle are missing")
}
let lock = "lock-version = \"1.0\"\ncreated-by = \"bundle-audit-example\"\n" +
"[[packages]]\nname = \"Flask\"\nversion = \"0.12.5\"\n" +
"wheels = [{name = \"Flask-0.12.5-py2.py3-none-any.whl\", url = \"https://files.pythonhosted.org/example/flask.whl\", hashes = {sha256 = \"2c710d1d42317c802c43000daa16de9de6026146b344ab3376cbc6d18846b863\"}}]\n" +
"[[packages]]\nname = \"Jinja2\"\nversion = \"2.10.1\"\n" +
"wheels = [{name = \"Jinja2-2.10.1-py2.py3-none-any.whl\", url = \"https://files.pythonhosted.org/example/jinja2.whl\", hashes = {sha256 = \"14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b\"}}]\n"
let environment = @pyversion.MarkerEnvironment::new()
environment.set("python_version", "3.11")
environment.set("python_full_version", "3.11.9")
environment.set("sys_platform", "linux")
let report = @pyversion.audit_bundle(
[
@pyversion.AuditInput::{
requirement_text: "Flask==0.12.5",
metadata_text: flask_metadata,
index_json: flask_index,
},
@pyversion.AuditInput::{
requirement_text: "Jinja2>=2.4",
metadata_text: jinja_metadata,
index_json: jinja_index,
},
],
lock,
environment,
"3.11.9",
["py3-none-any"],
require_lock_coverage=true,
) catch {
error => {
println("bundle input rejected: " + error.to_string())
abort("bundle input rejected")
}
}
println(report.render())
if report.disposition() != @pyversion.Ready {
abort("two-package mirror audit must be ready")
}
}