File: loader.rs

package info (click to toggle)
remrun 0.2.4-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 444 kB
  • sloc: python: 775; sh: 629; makefile: 55
file content (35 lines) | stat: -rw-r--r-- 1,311 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
// SPDX-License-Identifier: BSD-2-Clause
//! Load the test definitions.

use std::fs;

use anyhow::{bail, Context as _, Result};
use camino::Utf8Path;
use tracing::debug;

use crate::defs::TestData;

const PATH_TESTS: &str = "tests/test-data/tests.json";

/// Load the test definitions from the JSON file.
pub fn load_defs() -> Result<TestData> {
    let test_defs = Utf8Path::new(PATH_TESTS)
        .canonicalize_utf8()
        .with_context(|| format!("Could not canonicalize the test defs path {PATH_TESTS}"))?;
    debug!("about to read {test_defs}");
    let contents = fs::read_to_string(&test_defs)
        .with_context(|| format!("Could not read the test definitions from {test_defs}"))?;
    let fver = typed_format_version::get_version_from_str(&contents, serde_json::from_str)
        .with_context(|| format!("Could not get the format version from {test_defs}"))?;
    if (fver.major(), fver.minor()) != (0, 1) {
        bail!(format!(
            "Unexpected test definitions format version {major}.{minor}",
            major = fver.major(),
            minor = fver.minor()
        ));
    }

    serde_json::from_str::<TestData>(&contents)
        .with_context(|| format!("Could not load the test definitions from {test_defs}"))
}