use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GradleFailures {
#[serde(default)]
pub build_failures: Vec<GradleBuildFailure>,
pub test_failures: Option<Vec<TestFailure>>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GradleBuildFailure {
pub header: String,
pub message: String,
pub relevant_log: Option<String>,
pub location: Option<String>,
pub task_path: Option<String>,
pub stacktrace: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct TestFailure {
pub id: TestId,
pub message: String,
pub stacktrace: Option<String>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct TestId {
pub work_unit_name: String,
pub suite_name: String,
pub test_name: Option<String>,
}
impl TestId {
pub fn display_name(&self) -> String {
match &self.test_name {
Some(name) => format!("{} > {}", self.suite_name, name),
None => self.suite_name.clone(),
}
}
}