summaryrefslogtreecommitdiff
path: root/fuzz/atom/vercmp/gencorpus.rs
diff options
context:
space:
mode:
Diffstat (limited to 'fuzz/atom/vercmp/gencorpus.rs')
-rw-r--r--fuzz/atom/vercmp/gencorpus.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/fuzz/atom/vercmp/gencorpus.rs b/fuzz/atom/vercmp/gencorpus.rs
new file mode 100644
index 0000000..6d5eeef
--- /dev/null
+++ b/fuzz/atom/vercmp/gencorpus.rs
@@ -0,0 +1,43 @@
+use std::{
+ env,
+ error::Error,
+ fs::{self, OpenOptions},
+ io::Write,
+ path::PathBuf,
+};
+
+use gentoo_utils::ebuild::repo::Repo;
+
+fn main() -> Result<(), Box<dyn Error>> {
+ let corpus_dir = PathBuf::from(
+ env::args()
+ .nth(1)
+ .expect("expected corpus directory as first argument"),
+ );
+
+ fs::create_dir_all(&corpus_dir)?;
+
+ let repo = Repo::new("/var/db/repos/gentoo");
+ let mut versions = Vec::new();
+
+ for category in repo.categories()? {
+ for ebuild in category?.ebuilds()? {
+ let version = ebuild?.version().clone();
+
+ versions.push(version);
+ }
+ }
+
+ for (i, version) in versions.iter().enumerate() {
+ let path = corpus_dir.as_path().join(i.to_string());
+ let mut file = OpenOptions::new()
+ .write(true)
+ .truncate(true)
+ .create(true)
+ .open(path)?;
+
+ write!(file, "{version}")?;
+ }
+
+ Ok(())
+}