use crate::buildsystem::{BuildSystem, Error};
use crate::fix_build::{iterate_with_build_fixers, BuildFixer, InterimError};
use crate::installer::{Error as InstallerError, Installer};
use crate::logs::{wrap, LogManager};
use crate::session::Session;
pub fn run_test(
session: &dyn Session,
buildsystems: &[&dyn BuildSystem],
installer: &dyn Installer,
fixers: &[&dyn BuildFixer<InstallerError>],
log_manager: &mut dyn LogManager,
) -> Result<(), Error> {
session.create_home()?;
if let Some(buildsystem) = buildsystems.iter().next() {
return Ok(iterate_with_build_fixers(
fixers,
|| -> Result<_, InterimError<Error>> {
Ok(wrap(log_manager, || -> Result<_, Error> {
buildsystem.test(session, installer)
})?)
},
None,
)?);
}
Err(Error::NoBuildSystemDetected)
}