use super::{RunnerConfig, result};
use crate::snippets::session::SessionPreparationError;
use crate::snippets::types::{Language, Snippet, SnippetStatus, ValidationResult};
use std::collections::HashMap;
pub(super) fn session_preparation_error<'a>(
snippet: &Snippet,
sessions: &HashMap<String, crate::snippets::session::ValidationSession>,
errors: &'a HashMap<String, SessionPreparationError>,
) -> Option<&'a SessionPreparationError> {
let target = snippet
.metadata
.target
.as_ref()
.map(|target| Language::normalize_session_target(target));
if let Some(target) = target.as_deref() {
if let Some(error) = errors.get(target) {
return Some(error);
}
if sessions.contains_key(target) {
return None;
}
}
errors.get(&snippet.language.to_string())
}
pub(super) fn session_preparation_result(
snippet: &Snippet,
config: &RunnerConfig,
error: &SessionPreparationError,
) -> ValidationResult {
let status = if error.ordering {
SnippetStatus::Unavailable
} else {
SnippetStatus::Error
};
let mut outcome = result(
snippet,
status,
config.level,
config.level,
Some(error.message.clone()),
0,
);
outcome.unresolved_dependency = error.ordering;
outcome
}