Fix tests

This commit is contained in:
Till Wegmueller 2021-04-19 21:34:40 -03:00
parent 463c69ae10
commit d557773763
3 changed files with 219 additions and 88 deletions

152
Cargo.lock generated
View file

@ -61,14 +61,35 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
[[package]]
name = "block-buffer"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
dependencies = [
"block-padding 0.1.5",
"byte-tools",
"byteorder",
"generic-array 0.12.4",
]
[[package]]
name = "block-buffer"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
dependencies = [
"block-padding",
"generic-array",
"block-padding 0.2.1",
"generic-array 0.14.4",
]
[[package]]
name = "block-padding"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
dependencies = [
"byte-tools",
]
[[package]]
@ -77,6 +98,18 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae"
[[package]]
name = "byte-tools"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
[[package]]
name = "byteorder"
version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "cfg-if"
version = "1.0.0"
@ -130,13 +163,22 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "digest"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
dependencies = [
"generic-array 0.12.4",
]
[[package]]
name = "digest"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
dependencies = [
"generic-array",
"generic-array 0.14.4",
]
[[package]]
@ -161,6 +203,12 @@ dependencies = [
"synstructure",
]
[[package]]
name = "fake-simd"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
[[package]]
name = "flate2"
version = "1.0.20"
@ -173,6 +221,15 @@ dependencies = [
"miniz_oxide",
]
[[package]]
name = "generic-array"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd"
dependencies = [
"typenum",
]
[[package]]
name = "generic-array"
version = "0.14.4"
@ -246,8 +303,10 @@ name = "libips"
version = "0.0.2-placeholder"
dependencies = [
"failure",
"maplit",
"maplit 0.1.6",
"object",
"pest",
"pest_derive",
"regex",
"sha2",
"sha3",
@ -259,6 +318,12 @@ version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22593015b8df7747861c69c28acd32589fb96c1686369f3b661d12e409d4cf65"
[[package]]
name = "maplit"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
[[package]]
name = "memchr"
version = "2.3.4"
@ -285,6 +350,12 @@ dependencies = [
"wasmparser",
]
[[package]]
name = "opaque-debug"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
[[package]]
name = "opaque-debug"
version = "0.3.0"
@ -297,6 +368,49 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "afb2e1c3ee07430c2cf76151675e583e0f19985fa6efae47d6848a3e2c824f85"
[[package]]
name = "pest"
version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
dependencies = [
"ucd-trie",
]
[[package]]
name = "pest_derive"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0"
dependencies = [
"pest",
"pest_generator",
]
[[package]]
name = "pest_generator"
version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55"
dependencies = [
"pest",
"pest_meta",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "pest_meta"
version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d"
dependencies = [
"maplit 1.0.2",
"pest",
"sha-1",
]
[[package]]
name = "pkg6depotd"
version = "0.0.1-placeholder"
@ -380,17 +494,29 @@ version = "0.1.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232"
[[package]]
name = "sha-1"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"
dependencies = [
"block-buffer 0.7.3",
"digest 0.8.1",
"fake-simd",
"opaque-debug 0.2.3",
]
[[package]]
name = "sha2"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12de"
dependencies = [
"block-buffer",
"block-buffer 0.9.0",
"cfg-if",
"cpuid-bool",
"digest",
"opaque-debug",
"digest 0.9.0",
"opaque-debug 0.3.0",
]
[[package]]
@ -399,10 +525,10 @@ version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809"
dependencies = [
"block-buffer",
"digest",
"block-buffer 0.9.0",
"digest 0.9.0",
"keccak",
"opaque-debug",
"opaque-debug 0.3.0",
]
[[package]]
@ -458,6 +584,12 @@ version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
[[package]]
name = "ucd-trie"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
[[package]]
name = "unicode-segmentation"
version = "1.7.1"

View file

@ -10,14 +10,12 @@ use std::collections::{HashMap};
use std::fs::File as OsFile;
use std::io::BufRead;
use std::io::BufReader;
use failure::Error;
use crate::payload::Payload;
use std::clone::Clone;
use crate::digest::Digest;
use std::str::FromStr;
use std::path::{Path};
use std::fmt;
use pest::Parser;
use crate::errors::Result;
pub trait FacetedAction {
@ -189,8 +187,9 @@ impl Manifest {
self.files.push(f);
}
pub fn parse_file(&mut self, f: Path) -> Result<Manifest> {
pub fn parse_file(&mut self, f: String) -> Result<()> {
Ok(())
}
}
@ -231,7 +230,7 @@ pub enum ManifestError {
}
#[derive(Parser)]
#[grammar = "manifest.pest"]
#[grammar = "actions/manifest.pest"]
struct ManifestParser;
pub fn parse_manifest_file(filename: String) -> Result<Manifest> {
@ -411,12 +410,14 @@ fn parse_file_action(line: String, line_nr: usize) -> Result<File> {
r#"([^ ]+)="(.+)"#
])?;
let mut p = Payload::default();
for (pat, idx) in regex_set.matches(line.trim_start()).into_iter().map(|match_idx| (&regex_set.patterns()[match_idx], match_idx)) {
let regex = Regex::new(&pat)?;
for cap in regex.captures_iter(line.clone().trim_start()) {
if idx == 0 {
act.payload.primary_identifier = Digest::from_str(&cap[1])?;
p.primary_identifier = Digest::from_str(&cap[1])?;
continue;
}
@ -434,13 +435,13 @@ fn parse_file_action(line: String, line_nr: usize) -> Result<File> {
"sysattr" => act.sys_attr = clean_string_value(&cap[val_cap_idx]),
"overlay" => act.overlay = match string_to_bool(&cap[val_cap_idx]) {
Ok(b) => b,
Err(e) => return Err(ManifestError::InvalidAction {action: line, line: line_nr, message: e?})?
},/
Err(e) => return Err(ManifestError::InvalidAction {action: line, line: line_nr, message: e.to_string()})?
},
"preserve" => act.preserve = match string_to_bool(&cap[val_cap_idx]) {
Ok(b) => b,
Err(e) => return Err(ManifestError::InvalidAction {action: line, line: line_nr, message: e?})?
Err(e) => return Err(ManifestError::InvalidAction {action: line, line: line_nr, message: e.to_string()})?
},
"chash" | "pkg.content-hash" => act.payload.additional_identifiers.push(match Digest::from_str(clean_string_value(&cap[val_cap_idx]).as_str()) {
"chash" | "pkg.content-hash" => p.additional_identifiers.push(match Digest::from_str(clean_string_value(&cap[val_cap_idx]).as_str()) {
Ok(d) => d,
Err(e) => return Err(e)?
}),
@ -459,6 +460,7 @@ fn parse_file_action(line: String, line_nr: usize) -> Result<File> {
}
}
act.payload = Some(p);
Ok(act)
}

View file

@ -14,10 +14,9 @@ mod errors {
pub type Result<T> = StdResult<T, Error>;
}
use errors::Result;
#[macro_use]
extern crate failure;
extern crate pest;
#[macro_use] extern crate pest_derive;
#[macro_use] extern crate failure;
extern crate maplit;
#[cfg(test)]
@ -25,11 +24,11 @@ mod tests {
use crate::actions::{Manifest, Property, Dir, File, Dependency, Facet};
use crate::actions::{parse_manifest_string, Attr};
use std::collections::HashSet;
use std::collections::{HashMap};
use crate::payload::Payload;
use crate::digest::{Digest, DigestAlgorithm, DigestSource};
use std::str::FromStr;
use failure::_core::ptr::hash;
use maplit::hashmap;
#[test]
fn parse_attributes() {
@ -51,80 +50,80 @@ mod tests {
set name=info.source-url value=http://www.pgpool.net/download.php?f=pgpool-II-3.3.1.tar.gz
set name=pkg.summary value=\\\"'XZ Utils - loss-less file compression application and library.'\\\"");
let mut optional_hash = HashSet::new();
optional_hash.insert(Property{key: String::from("optional"), value:String::from("testing")});
optional_hash.insert(Property{key: String::from("optionalWithString"), value:String::from("test ing")});
let mut optional_hash = HashMap::new();
optional_hash.insert(String::from("optional"), Property{key: String::from("optional"), value:String::from("testing")});
optional_hash.insert(String::from("optionalWithString"), Property{key: String::from("optionalWithString"), value:String::from("test ing")});
let test_results = vec![
Attr{
key: String::from("pkg.fmri"),
values: vec![String::from("pkg://openindiana.org/web/server/nginx@1.18.0,5.11-2020.0.1.0:20200421T195136Z")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("com.oracle.info.name"),
values: vec![String::from("nginx"), String::from("test")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("userland.info.git-remote"),
values: vec![String::from("git://github.com/OpenIndiana/oi-userland.git")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("userland.info.git-branch"),
values: vec![String::from("HEAD")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("userland.info.git-rev"),
values: vec![String::from("1665491ba61bd494bf73e2916cd2250f3024260e")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("pkg.summary"),
values: vec![String::from("Nginx Webserver")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("info.classification"),
values: vec![String::from("org.opensolaris.category.2008:Web Services/Application and Web Servers")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("info.upstream-url"),
values: vec![String::from("http://nginx.net/")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("info.source-url"),
values: vec![String::from("http://nginx.org/download/nginx-1.18.0.tar.gz")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("org.opensolaris.consolidation"),
values: vec![String::from("userland")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("com.oracle.info.version"),
values: vec![String::from("1.18.0")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("pkg.summary"),
values: vec![String::from("provided mouse accessibility enhancements")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("info.upstream"),
values: vec![String::from("X.Org Foundation")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("pkg.description"),
values: vec![String::from("Latvian language support's extra files")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("variant.arch"),
@ -134,12 +133,12 @@ mod tests {
Attr{
key: String::from("info.source-url"),
values: vec![String::from("http://www.pgpool.net/download.php?f=pgpool-II-3.3.1.tar.gz")],
properties: HashSet::new(),
properties: HashMap::new(),
},
Attr{
key: String::from("pkg.summary"),
values: vec![String::from("'XZ Utils - loss-less file compression application and library.'")], //TODO knock out the single quotes
properties: HashSet::new(),
properties: HashMap::new(),
}
];
@ -247,7 +246,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
let test_results = vec![
File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("4b76e83bb4bb7c87176b72ef805fe78ecae60d2c"),
..Digest::default()
@ -269,7 +268,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "555".to_string(),
owner: "root".to_string(),
@ -285,7 +284,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("72e0496a02e72e7380b0b62cdc8410108302876f"),
..Digest::default()
@ -307,7 +306,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "sys".to_string(),
mode: "0444".to_string(),
owner: "root".to_string(),
@ -326,7 +325,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("95de71d58b37f9f74bede0e91bc381d6059fc2d7"),
..Digest::default()
@ -348,7 +347,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0444".to_string(),
owner: "root".to_string(),
@ -364,7 +363,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("7dd71afcfb14e105e80b0c0d7fce370a28a41f0a"),
..Digest::default()
@ -386,7 +385,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0444".to_string(),
owner: "root".to_string(),
@ -402,7 +401,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("cbf596ddb3433a8e0d325f3c188bec9c1bb746b3"),
..Digest::default()
@ -424,7 +423,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -441,7 +440,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("da38e2a0dded838afbe0eade6cb837ac30fd8046"),
..Digest::default()
@ -463,7 +462,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -480,7 +479,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("407cb51b397ba4ad90a2246640a81af18e2e917a"),
..Digest::default()
@ -502,7 +501,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -519,7 +518,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("19ec7fb71e7f00d7e8a1cfc1013490f0cfee572b"),
..Digest::default()
@ -541,7 +540,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -558,7 +557,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("e39dbc36680b717ec902fadc805a302f1cf62245"),
..Digest::default()
@ -580,7 +579,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -597,7 +596,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("d143ca7a6aac765d28724af54d969a4bd2202383"),
..Digest::default()
@ -619,7 +618,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -636,7 +635,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("379c1e2a2a5ffb8c91a07328d4c9be2bc58799fd"),
..Digest::default()
@ -658,7 +657,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -675,7 +674,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("cc2fcdb4605dcac23d59f667889ccbdfdc6e3668"),
..Digest::default()
@ -697,7 +696,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -714,7 +713,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("e10f2d42c9e581901d810928d01a3bf8f3372838"),
..Digest::default()
@ -736,7 +735,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0644".to_string(),
owner: "root".to_string(),
@ -753,7 +752,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
],
..File::default()
}, File{
payload: Payload{
payload: Some(Payload{
primary_identifier: Digest {
hash: String::from("6d5f820bb1d67594c7b757c79ef6f9242df49e98"),
..Digest::default()
@ -785,7 +784,7 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
}
],
..Payload::default()
},
}),
group: "bin".to_string(),
mode: "0555".to_string(),
owner: "root".to_string(),
@ -812,7 +811,6 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
},
];
let mut manifest = Manifest::new();
let res = parse_manifest_string(manifest_string);
assert!(res.is_ok(), "error during Manifest parsing: {:?}", res);
let manifest = res.unwrap();
@ -820,23 +818,23 @@ file 6d5f820bb1d67594c7b757c79ef6f9242df49e98 chash=3ab17dde089f1eac7abd37d8efd7
assert_eq!(manifest.files.len(), test_results.len());
for (pos, file) in manifest.files.iter().enumerate() {
println!("action: {}", file.payload.primary_identifier.hash);
println!("action: {}", file.payload.as_ref().unwrap().primary_identifier.hash);
assert_eq!(file.group, test_results[pos].group);
assert_eq!(file.mode, test_results[pos].mode);
assert_eq!(file.owner, test_results[pos].owner);
assert_eq!(file.path, test_results[pos].path);
assert_eq!(file.preserve, test_results[pos].preserve);
assert_eq!(file.payload.primary_identifier.hash, test_results[pos].payload.primary_identifier.hash);
assert_eq!(file.payload.as_ref().unwrap().primary_identifier.hash, test_results[pos].payload.as_ref().unwrap().primary_identifier.hash);
for (vpos, val) in file.properties.iter().enumerate() {
assert_eq!(val.key, test_results[pos].properties[vpos].key);
assert_eq!(val.value, test_results[pos].properties[vpos].value);
}
for (vpos, val) in file.payload.additional_identifiers.iter().enumerate() {
assert_eq!(val.hash, test_results[pos].payload.additional_identifiers[vpos].hash);
assert_eq!(val.source, test_results[pos].payload.additional_identifiers[vpos].source);
assert_eq!(val.algorithm, test_results[pos].payload.additional_identifiers[vpos].algorithm);
for (vpos, val) in file.payload.as_ref().unwrap().additional_identifiers.iter().enumerate() {
assert_eq!(val.hash, test_results[pos].payload.as_ref().unwrap().additional_identifiers[vpos].hash);
assert_eq!(val.source, test_results[pos].payload.as_ref().unwrap().additional_identifiers[vpos].source);
assert_eq!(val.algorithm, test_results[pos].payload.as_ref().unwrap().additional_identifiers[vpos].algorithm);
}
}
}
@ -863,8 +861,8 @@ depend facet.version-lock.system/mozilla-nss=true fmri=system/mozilla-nss@3.51.1
Dependency{
fmri: "pkg:/system/data/hardware-registry@2020.2.22,5.11-2020.0.1.19951".to_string(),
dependency_type: "incorporate".to_string(),
facets: hashset!{
Facet{
facets: hashmap!{
"version-lock.system/data/hardware-registry".to_string() => Facet{
name: "version-lock.system/data/hardware-registry".to_string(),
value: "true".to_string(),
}
@ -874,8 +872,8 @@ depend facet.version-lock.system/mozilla-nss=true fmri=system/mozilla-nss@3.51.1
Dependency{
fmri: "xvm@0.5.11-2015.0.2.0".to_string(),
dependency_type: "incorporate".to_string(),
facets: hashset!{
Facet{
facets: hashmap!{
"version-lock.xvm".to_string() => Facet{
name: "version-lock.xvm".to_string(),
value: "true".to_string(),
}
@ -885,8 +883,8 @@ depend facet.version-lock.system/mozilla-nss=true fmri=system/mozilla-nss@3.51.1
Dependency{
fmri: "system/mozilla-nss@3.51.1-2020.0.1.0".to_string(),
dependency_type: "incorporate".to_string(),
facets: hashset!{
Facet{
facets: hashmap!{
"version-lock.system/mozilla-nss".to_string() => Facet{
name: "version-lock.system/mozilla-nss".to_string(),
value: "true".to_string(),
}
@ -895,7 +893,6 @@ depend facet.version-lock.system/mozilla-nss=true fmri=system/mozilla-nss@3.51.1
},
];
let mut manifest = Manifest::new();
let res = parse_manifest_string(manifest_string);
assert!(res.is_ok(), "error during Manifest parsing: {:?}", res);
let manifest = res.unwrap();
@ -904,8 +901,8 @@ depend facet.version-lock.system/mozilla-nss=true fmri=system/mozilla-nss@3.51.1
for (pos, dependency) in manifest.dependencies.iter().enumerate() {
assert_eq!(dependency.fmri, test_results[pos].fmri);
assert_eq!(dependency.dependency_type, test_results[pos].dependency_type);
for (vpos, facet) in dependency.facets.iter().enumerate() {
let fres = test_results[pos].facets.get(facet);
for (_, (key, facet)) in dependency.facets.iter().enumerate() {
let fres = test_results[pos].facets.get(key);
assert!(fres.is_some(), "error no facet with name: {:?} found", facet.name);
let f = fres.unwrap();
assert_eq!(facet.name, f.name);