Add a test for multiple inputs

This commit is contained in:
Jelle van der Waa 2021-04-26 20:34:36 +02:00
parent 3b672014a7
commit eaf4d7c038
No known key found for this signature in database
GPG Key ID: C06086337C50773E
2 changed files with 59 additions and 2 deletions

View File

@ -308,3 +308,39 @@ pub fn dependency_cycle() -> (Vec<Package>, Option<String>, Vec<String>, TempDir
(packages, Some(dbpath), vec![reponame.to_string()], tempdir)
}
#[fixture]
pub fn multiple_pkgnames() -> (Vec<Package>, Option<String>, Vec<String>, TempDir) {
let testpkg = Package::new("testpkg1", "testpkg1", "1-1", vec![], vec![], vec![]);
let testpkg2 = Package::new(
"testpkg2",
"testpkg2",
"1-1",
vec![testpkg.name.clone()],
vec![],
vec![],
);
let testpkg3 = Package::new(
"testpkg3",
"testpkg3",
"1-1",
vec![testpkg.name.clone()],
vec![],
vec![],
);
let testpkg4 = Package::new(
"testpkg4",
"testpkg4",
"1-1",
vec![testpkg2.name.clone()],
vec![],
vec![],
);
let packages = vec![testpkg, testpkg2, testpkg3, testpkg4];
let reponame = "test";
let (tempdir, dbpath) = init_repodb(reponame.to_string(), packages.clone());
(packages, Some(dbpath), vec![reponame.to_string()], tempdir)
}

View File

@ -4,8 +4,8 @@ use tempfile::TempDir;
pub mod fixtures;
use fixtures::{
dependency_cycle, dependency_depth, invalid_dbpath, multiple_deps, no_reverse_deps,
provides_make_depends, reverse_deps, reverse_make_deps, Package,
dependency_cycle, dependency_depth, invalid_dbpath, multiple_deps, multiple_pkgnames,
no_reverse_deps, provides_make_depends, reverse_deps, reverse_make_deps, Package,
};
#[rstest]
@ -142,3 +142,24 @@ fn test_dependency_cycle(dependency_cycle: (Vec<Package>, Option<String>, Vec<St
let res_pkgs: Vec<&str> = res.trim().split_ascii_whitespace().collect();
assert_eq!(packages[0], res_pkgs[0]);
}
/// Given two packages names as input, with testpkg1 being a reverse dependency for testpkg2 and
/// testpkg3 and testpkg4 being a dependency of testpkg2. Providing "testpkg1 testpkg2" should
/// return "testpkg1 testpkg3 testpkg2 testpkg4"
#[rstest]
fn test_multiple_pkgnames(multiple_pkgnames: (Vec<Package>, Option<String>, Vec<String>, TempDir)) {
let packages = multiple_pkgnames.0;
let pkgname1 = &packages[0];
let pkgname2 = &packages[1];
let res = arch_rebuild_order::run(
vec![pkgname1.to_string(), pkgname2.to_string()],
multiple_pkgnames.1,
multiple_pkgnames.2,
None,
)
.unwrap();
let res_pkgs: Vec<&str> = res.trim().split_ascii_whitespace().collect();
let expected = vec!["testpkg1", "testpkg3", "testpkg2", "testpkg4"];
assert_eq!(res_pkgs, expected);
}