in yaml_test_runner/src/main.rs [126:152]
fn branch_suite_and_version_from_elasticsearch(
url: &str,
) -> anyhow::Result<(String, TestSuite, String, semver::Version)> {
let client = reqwest::blocking::ClientBuilder::new()
.danger_accept_invalid_certs(true)
.build()?;
let suite = match std::env::var("TEST_SUITE") {
Err(_) => panic!("Env var TEST_SUITE is not defined"),
Ok(ref s) if s == "free" => TestSuite::Free,
_ => TestSuite::XPack,
};
let response = client.get(url).send()?;
let json: Value = response.json()?;
let branch = json["version"]["build_hash"].as_str().unwrap().to_string();
// any prerelease part needs to be trimmed because the semver crate only allows
// a version with a prerelease to match against predicates, if at least one predicate
// has a prerelease. See
// https://github.com/steveklabnik/semver/blob/afa5fc853cb4d6d2b1329579e5528f86f3b550f9/src/version_req.rs#L319-L331
let version = json["version"]["number"].as_str().unwrap().to_string();
let sem_version =
semver::Version::parse(version.trim_end_matches(|c: char| c.is_alphabetic() || c == '-'))?;
Ok((branch, suite, version, sem_version))
}