allure-rust-core 0.0.1

Allure test report generation library for Rust
Documentation
use crate::models::TestResult;
use std::env;
use std::fs;
use std::path::PathBuf;
use uuid::Uuid;

const DEFAULT_RESULTS_DIR: &str = "allure-results";

fn get_results_dir() -> PathBuf {
    env::var("ALLURE_RESULTS_DIR")
        .map(PathBuf::from)
        .unwrap_or_else(|_| PathBuf::from(DEFAULT_RESULTS_DIR))
}

pub fn write_test_result(test_result: &TestResult) {
    let dir = get_results_dir();
    if !dir.exists() {
        fs::create_dir_all(&dir).expect("Failed to create allure-results directory");
    }
    let filename = dir.join(format!("{}-result.json", test_result.uuid));
    let json = serde_json::to_string_pretty(test_result).expect("Failed to serialize TestResult");
    fs::write(filename, json).expect("Failed to write TestResult to file");
}

pub fn write_attachment(source: &[u8], extension: &str) -> String {
    let dir = get_results_dir();
    if !dir.exists() {
        fs::create_dir_all(&dir).expect("Failed to create allure-results directory");
    }
    let filename = format!("{}.{}", Uuid::new_v4(), extension);
    let filepath = dir.join(&filename);
    fs::write(filepath, source).expect("Failed to write attachment file");
    filename
}