oci_spec/distribution/
tag.rs

1//! Tag types of the distribution spec.
2
3use crate::error::OciSpecError;
4use derive_builder::Builder;
5use getset::{Getters, Setters};
6use serde::{Deserialize, Serialize};
7
8#[derive(Builder, Clone, Debug, Deserialize, Eq, Getters, Setters, PartialEq, Serialize)]
9#[builder(
10    pattern = "owned",
11    setter(into, strip_option),
12    build_fn(error = "OciSpecError")
13)]
14#[getset(get = "pub", set = "pub")]
15/// A list of tags for a given repository.
16pub struct TagList {
17    /// The namespace of the repository.
18    name: String,
19
20    /// Each tags on the repository.
21    tags: Vec<String>,
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27    use crate::error::Result;
28
29    #[test]
30    fn tag_list_success() -> Result<()> {
31        let list = TagListBuilder::default()
32            .name("name")
33            .tags(vec![])
34            .build()?;
35        assert!(list.tags().is_empty());
36        assert_eq!(list.name(), "name");
37        Ok(())
38    }
39
40    #[test]
41    fn tag_list_failure() {
42        assert!(TagListBuilder::default().build().is_err());
43    }
44}