summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/profile/meson.build6
-rw-r--r--tests/profile/mockrepo/profiles/base/make.defaults1
-rw-r--r--tests/profile/mockrepo/profiles/base/use.force1
-rw-r--r--tests/profile/mockrepo/profiles/features/emacs/gui/package.use1
-rw-r--r--tests/profile/mockrepo/profiles/features/emacs/gui/parent1
-rw-r--r--tests/profile/mockrepo/profiles/features/emacs/gui/use.force1
-rw-r--r--tests/profile/mockrepo/profiles/features/emacs/make.defaults1
-rw-r--r--tests/profile/mockrepo/profiles/features/emacs/package.mask1
-rw-r--r--tests/profile/mockrepo/profiles/features/emacs/package.use1
-rw-r--r--tests/profile/mockrepo/profiles/features/emacs/packages1
-rw-r--r--tests/profile/mockrepo/profiles/features/emacs/use.force1
-rw-r--r--tests/profile/mockrepo/profiles/features/selinux/make.defaults2
-rw-r--r--tests/profile/mockrepo/profiles/features/selinux/packages1
-rw-r--r--tests/profile/mockrepo/profiles/features/selinux/use.force1
-rw-r--r--tests/profile/mockrepo/profiles/features/selinux/use.mask1
-rw-r--r--tests/profile/mockrepo/profiles/gentoo-desktop/make.defaults1
-rw-r--r--tests/profile/mockrepo/profiles/gentoo-desktop/package.use1
-rw-r--r--tests/profile/mockrepo/profiles/gentoo-desktop/parent3
-rw-r--r--tests/profile/mockrepo/profiles/gentoo-desktop/use.mask1
-rw-r--r--tests/profile/mockrepo/profiles/repo_name1
-rw-r--r--tests/profile/read_mock_profile.rs71
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());
+}