in yaml_test_runner/src/main.rs [43:124]
fn main() -> anyhow::Result<()> {
simple_logger::SimpleLogger::new()
.with_level(LevelFilter::Info)
.init()
.unwrap();
let matches = Command::new(env!("CARGO_PKG_NAME"))
.about(env!("CARGO_PKG_DESCRIPTION"))
.arg(Arg::new("url")
.short('u')
.long("url")
.value_name("ELASTICSEARCH_URL")
.help("The url of a running Elasticsearch cluster. Used to determine the version, test suite and branch to use to compile tests")
.required(true))
.get_matches();
let url = matches
.get_one::<String>("url")
.expect("missing 'url' argument");
let (branch, suite, version, sem_version) =
match branch_suite_and_version_from_elasticsearch(url) {
Ok(v) => v,
Err(e) => {
error!(
"Problem getting values from Elasticsearch at {}. {:?}",
url, e
);
exit(1);
}
};
info!("Using version {}", &version);
info!("Using branch {}", &branch);
info!("Using test_suite {:?}", &suite);
let stack_version = std::env::var("STACK_VERSION").expect("Missing STACK_VERSION env var");
if version != stack_version {
bail!(
"ES server version {} is inconsistent with STACK_VERSION={}",
version,
stack_version
);
}
let rest_specs_dir = PathBuf::from(format!("./checkout/{}/rest-api-spec/api", stack_version));
if !rest_specs_dir.is_dir() {
bail!("No specs found at {:?}", rest_specs_dir);
}
let download_dir = PathBuf::from(format!("./checkout/{}/rest-api-spec/test", stack_version));
let generated_dir = PathBuf::from(format!("./{}/tests", env!("CARGO_PKG_NAME")));
let api = api_generator::generator::read_api(&rest_specs_dir)?;
// delete everything under the generated_dir except common dir
if generated_dir.exists() {
let entries = fs::read_dir(&generated_dir)?;
for entry in entries.flatten() {
if let Ok(f) = entry.file_type() {
if entry.file_name() != "common" {
if f.is_dir() {
fs::remove_dir_all(entry.path())?;
} else if f.is_file() {
fs::remove_file(entry.path())?;
}
}
}
}
}
generator::generate_tests_from_yaml(
&api,
&suite,
&sem_version,
&download_dir,
&download_dir,
&generated_dir,
)?;
Ok(())
}