use serde::Serialize;
#[derive(Serialize, Debug)]
pub struct PublishResult {
result: bool,
error: Option<String>,
stdout: String,
stderr: String,
}
impl PublishResult {
#[must_use]
pub fn new(result: bool, error: Option<String>, stdout: String, stderr: String) -> Self {
Self {
result,
error,
stdout,
stderr,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_publish_result_new_success() {
let result = PublishResult::new(true, None, "output".into(), String::new());
assert!(result.result);
assert!(result.error.is_none());
assert_eq!(result.stdout, "output");
assert!(result.stderr.is_empty());
}
#[test]
fn test_publish_result_new_failure() {
let result = PublishResult::new(
false,
Some("Error message".to_string()),
String::new(),
"err".into(),
);
assert!(!result.result);
assert_eq!(result.error, Some("Error message".to_string()));
assert_eq!(result.stderr, "err");
}
#[test]
fn test_publish_result_debug() {
let result = PublishResult::new(true, None, String::new(), String::new());
let debug_str = format!("{:?}", result);
assert!(debug_str.contains("PublishResult"));
}
}