ephemeris_forge_forgejo/api/
error.rs1use ephemeris_forge::{EmptyUserName, TransportError, VariableNameError};
2
3#[derive(Debug, thiserror::Error)]
5pub enum ForgeError {
6 #[error(transparent)]
9 Transport(#[from] TransportError),
10 #[error("the repository is archived, so this write is refused")]
12 Archived,
13 #[error("branch rule {name:?} already exists")]
16 RuleExists {
17 name: String,
19 },
20 #[error(transparent)]
22 VariableName(#[from] VariableNameError),
23 #[error("branch rule {name:?} appeared during create but could not be read back")]
26 RuleDisappeared {
27 name: String,
29 },
30 #[error("the forge answered the current user request with an empty login")]
32 EmptyCallerLogin(#[from] EmptyUserName),
33}
34
35#[cfg(test)]
36mod tests {
37 use ephemeris_forge::{RequestLabel, TransportError};
38 use reqwest::Method;
39
40 use super::ForgeError;
41
42 #[test]
43 fn transport_failures_are_wrapped_and_keep_their_message() {
44 let error: ForgeError = TransportError::NotFound {
45 request: RequestLabel::new(&Method::GET, "/x"),
46 }
47 .into();
48 assert!(matches!(error, ForgeError::Transport(_)));
49 assert!(error.to_string().contains("not there"));
50 }
51}