diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-12-12 04:15:12 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-12-14 01:37:49 +0000 |
| commit | 985f0332762fbe5b57ed6527f156899b7afe2a87 (patch) | |
| tree | d6ffba8d5f58db1da211a360f259177ddc86b6d5 | |
| parent | a09241dc8940d0a9b01a698d3e71d08f71fadea4 (diff) | |
| download | gentoo-utils-985f0332762fbe5b57ed6527f156899b7afe2a87.tar.gz | |
add mockrepo tests
21 files changed, 99 insertions, 0 deletions
diff --git a/tests/profile/meson.build b/tests/profile/meson.build index 2a2a541..47ab3bb 100644 --- a/tests/profile/meson.build +++ b/tests/profile/meson.build @@ -1 +1,7 @@ tests += {meson.current_source_dir() / 'read_all_profiles.rs': []} +tests += { + meson.current_source_dir() / 'read_mock_profile.rs': [ + meson.current_source_dir() / 'mockrepo', + ], +} + diff --git a/tests/profile/mockrepo/profiles/base/make.defaults b/tests/profile/mockrepo/profiles/base/make.defaults new file mode 100644 index 0000000..7e93612 --- /dev/null +++ b/tests/profile/mockrepo/profiles/base/make.defaults @@ -0,0 +1 @@ +USE="base"
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/base/use.force b/tests/profile/mockrepo/profiles/base/use.force new file mode 100644 index 0000000..8681f8b --- /dev/null +++ b/tests/profile/mockrepo/profiles/base/use.force @@ -0,0 +1 @@ +base
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/emacs/gui/package.use b/tests/profile/mockrepo/profiles/features/emacs/gui/package.use new file mode 100644 index 0000000..71f6be2 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/emacs/gui/package.use @@ -0,0 +1 @@ +app-editors/emacs gui
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/emacs/gui/parent b/tests/profile/mockrepo/profiles/features/emacs/gui/parent new file mode 100644 index 0000000..a96aa0e --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/emacs/gui/parent @@ -0,0 +1 @@ +..
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/emacs/gui/use.force b/tests/profile/mockrepo/profiles/features/emacs/gui/use.force new file mode 100644 index 0000000..f9242d2 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/emacs/gui/use.force @@ -0,0 +1 @@ +gui
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/emacs/make.defaults b/tests/profile/mockrepo/profiles/features/emacs/make.defaults new file mode 100644 index 0000000..76bbc0a --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/emacs/make.defaults @@ -0,0 +1 @@ +USE="emacs"
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/emacs/package.mask b/tests/profile/mockrepo/profiles/features/emacs/package.mask new file mode 100644 index 0000000..11ca885 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/emacs/package.mask @@ -0,0 +1 @@ +app-editors/vim
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/emacs/package.use b/tests/profile/mockrepo/profiles/features/emacs/package.use new file mode 100644 index 0000000..ca6f712 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/emacs/package.use @@ -0,0 +1 @@ +app-editors/emacs default
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/emacs/packages b/tests/profile/mockrepo/profiles/features/emacs/packages new file mode 100644 index 0000000..2f4b446 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/emacs/packages @@ -0,0 +1 @@ +*app-editors/emacs
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/emacs/use.force b/tests/profile/mockrepo/profiles/features/emacs/use.force new file mode 100644 index 0000000..331d858 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/emacs/use.force @@ -0,0 +1 @@ +default
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/selinux/make.defaults b/tests/profile/mockrepo/profiles/features/selinux/make.defaults new file mode 100644 index 0000000..6abe718 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/selinux/make.defaults @@ -0,0 +1,2 @@ +USE="selinux" +SELINUX_TYPE="sys.subj.portage"
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/selinux/packages b/tests/profile/mockrepo/profiles/features/selinux/packages new file mode 100644 index 0000000..920d332 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/selinux/packages @@ -0,0 +1 @@ +*sec-policy/selinux-base
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/selinux/use.force b/tests/profile/mockrepo/profiles/features/selinux/use.force new file mode 100644 index 0000000..767c305 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/selinux/use.force @@ -0,0 +1 @@ +caps
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/features/selinux/use.mask b/tests/profile/mockrepo/profiles/features/selinux/use.mask new file mode 100644 index 0000000..ce02645 --- /dev/null +++ b/tests/profile/mockrepo/profiles/features/selinux/use.mask @@ -0,0 +1 @@ +jit
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/gentoo-desktop/make.defaults b/tests/profile/mockrepo/profiles/gentoo-desktop/make.defaults new file mode 100644 index 0000000..f767bd0 --- /dev/null +++ b/tests/profile/mockrepo/profiles/gentoo-desktop/make.defaults @@ -0,0 +1 @@ +USE="-base"
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/gentoo-desktop/package.use b/tests/profile/mockrepo/profiles/gentoo-desktop/package.use new file mode 100644 index 0000000..39a006d --- /dev/null +++ b/tests/profile/mockrepo/profiles/gentoo-desktop/package.use @@ -0,0 +1 @@ +app-editors/emacs -default
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/gentoo-desktop/parent b/tests/profile/mockrepo/profiles/gentoo-desktop/parent new file mode 100644 index 0000000..eebec22 --- /dev/null +++ b/tests/profile/mockrepo/profiles/gentoo-desktop/parent @@ -0,0 +1,3 @@ +../base +../features/selinux +../features/emacs/gui
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/gentoo-desktop/use.mask b/tests/profile/mockrepo/profiles/gentoo-desktop/use.mask new file mode 100644 index 0000000..7fff956 --- /dev/null +++ b/tests/profile/mockrepo/profiles/gentoo-desktop/use.mask @@ -0,0 +1 @@ +-jit
\ No newline at end of file diff --git a/tests/profile/mockrepo/profiles/repo_name b/tests/profile/mockrepo/profiles/repo_name new file mode 100644 index 0000000..e1c92af --- /dev/null +++ b/tests/profile/mockrepo/profiles/repo_name @@ -0,0 +1 @@ +mockrepo
\ No newline at end of file diff --git a/tests/profile/read_mock_profile.rs b/tests/profile/read_mock_profile.rs new file mode 100644 index 0000000..82c3c1c --- /dev/null +++ b/tests/profile/read_mock_profile.rs @@ -0,0 +1,71 @@ +use std::env::args; + +use gentoo_utils::{atom::Atom, repo::Repo, useflag::UseFlag}; +use itertools::Itertools; + +fn main() { + let repo_path = args() + .nth(1) + .expect("expected path to mockrepo as first argument"); + let repo = Repo::new(&repo_path).expect("failed to read repo"); + let profile = repo + .evaluate_profile("gentoo-desktop") + .expect("failed to evaluate profile"); + + let r#use = profile.make_defaults()["USE"] + .split_ascii_whitespace() + .sorted() + .collect::<Vec<_>>(); + + assert_eq!(r#use, vec!["emacs", "selinux",]); + + let packages = profile + .packages() + .iter() + .map(Atom::to_string) + .sorted() + .collect::<Vec<_>>(); + + assert_eq!( + packages, + vec!["app-editors/emacs", "sec-policy/selinux-base"] + ); + + let packages_mask = profile + .package_mask() + .iter() + .map(Atom::to_string) + .sorted() + .collect::<Vec<_>>(); + + assert_eq!(packages_mask, vec!["app-editors/vim"]); + + let emacs_use = profile + .package_use() + .iter() + .find_map(|(atom, flags)| { + if atom.clone().into_cp().to_string() == "app-editors/emacs" { + Some(flags) + } else { + None + } + }) + .unwrap() + .iter() + .map(UseFlag::to_string) + .sorted() + .collect::<Vec<_>>(); + + assert_eq!(emacs_use, vec!["gui"]); + + let use_force = profile + .use_force() + .iter() + .map(UseFlag::to_string) + .sorted() + .collect::<Vec<_>>(); + + assert_eq!(use_force, vec!["base", "caps", "default", "gui"]); + + assert!(profile.use_mask().is_empty()); +} |
