CVRF: 处理 documentnotes

Signed-off-by: Jia Chao <jiac13@chinaunicom.cn>
This commit is contained in:
Jia Chao 2024-06-07 12:05:25 +08:00
parent c9709a6d3a
commit d0f9a3f288
2 changed files with 38 additions and 3 deletions

View File

@ -182,7 +182,7 @@ impl CVRF {
if xmlreader.depth < 2 {
break;
}
self.documentnotes.push(note)
self.documentnotes.push(note);
}
}
}
@ -415,7 +415,7 @@ impl Generator {
#[instrument(skip(self, xmlreader))]
fn load_from_xmlreader(&mut self, xmlreader: &mut XmlReader) {
loop {
let key = if let Some(key) = xmlreader.next_start_name_under_depth(1) {
let key = if let Some(key) = xmlreader.next_start_name_under_depth(2) {
key
} else {
break;
@ -458,8 +458,32 @@ impl Note {
}
}
#[instrument(skip(self, xmlreader))]
fn load_from_xmlreader(&mut self, xmlreader: &mut XmlReader) {
unimplemented!();
loop {
match xmlreader.next() {
Ok(XmlEvent::StartElement { attributes, .. }) => {
for attr in attributes {
match attr.name.local_name.as_str() {
"Title" => self.title = attr.value.clone(),
"Type" => self.r#type = attr.value.clone(),
"Ordinal" => self.ordinal = attr.value.clone(),
_ => {}
}
}
self.content = xmlreader.next_characters();
}
Ok(XmlEvent::EndElement { .. }) => {
trace!("Note read end.");
break;
}
Err(e) => {
error!("XmlReader Error: {e}");
break;
}
_ => {}
}
}
}
}

View File

@ -37,4 +37,15 @@ fn cvrf_works() {
assert_eq!(cvrf.documenttracking.currentreleasedate, date);
assert_eq!(cvrf.documenttracking.generator.engine, engine);
assert_eq!(cvrf.documenttracking.generator.date, date);
// notes
let note_title = "Synopsis";
let note_type = "General";
let note_ordinal = "1";
let note_content = "An update for golang is now available for openEuler-20.03-LTS-SP1,openEuler-20.03-LTS-SP4,openEuler-22.03-LTS,openEuler-22.03-LTS-SP1,openEuler-22.03-LTS-SP2 and openEuler-22.03-LTS-SP3.";
assert_eq!(cvrf.documentnotes.len(), 6);
assert_eq!(cvrf.documentnotes[0].title, note_title);
assert_eq!(cvrf.documentnotes[0].r#type, note_type);
assert_eq!(cvrf.documentnotes[0].ordinal, note_ordinal);
assert_eq!(cvrf.documentnotes[1].content, note_content);
}