cargo-leptos 0.2.44

Build tool for Leptos.
Documentation
use crate::compile::{front_cargo_process, server_cargo_process};
use crate::config::{Config, Project};
use crate::ext::Paint;
use crate::internal_prelude::*;
use crate::logger::GRAY;

pub async fn test_all(conf: &Config) -> Result<()> {
    let mut first_failed_project = None;

    for proj in &conf.projects {
        if !test_proj(proj).await? && first_failed_project.is_none() {
            first_failed_project = Some(proj);
        }
    }

    if let Some(proj) = first_failed_project {
        Err(eyre!("Tests failed for {}", proj.name))
    } else {
        Ok(())
    }
}

pub async fn test_proj(proj: &Project) -> Result<bool> {
    let (envs, line, mut proc) = server_cargo_process("test", proj).dot()?;

    let server_exit_status = proc.wait().await.dot()?;
    debug!("Cargo envs: {}", GRAY.paint(envs));
    info!("Cargo server tests finished {}", GRAY.paint(line));

    let (envs, line, mut proc) = front_cargo_process("test", false, proj).dot()?;

    let front_exit_status = proc.wait().await.dot()?;
    debug!("Cargo envs: {}", GRAY.paint(envs));
    info!("Cargo front tests finished {}", GRAY.paint(line));

    Ok(server_exit_status.success() && front_exit_status.success())
}