diff --git a/rust-bindings/rust/tests/repo.rs b/rust-bindings/rust/tests/repo/checkout_at.rs similarity index 54% rename from rust-bindings/rust/tests/repo.rs rename to rust-bindings/rust/tests/repo/checkout_at.rs index 560b0087..27e4c97c 100644 --- a/rust-bindings/rust/tests/repo.rs +++ b/rust-bindings/rust/tests/repo/checkout_at.rs @@ -1,105 +1,9 @@ -extern crate gio; -extern crate glib; -extern crate openat; -extern crate ostree; -extern crate tempfile; -#[macro_use] -extern crate maplit; - -mod util; -use util::*; - -use gio::prelude::*; +use crate::util::*; use gio::NONE_CANCELLABLE; -use glib::prelude::*; -use ostree::ObjectType; use ostree::*; -#[cfg(feature = "v2016_8")] use std::os::unix::io::AsRawFd; #[test] -fn should_commit_content_to_repo_and_list_refs_again() { - let test_repo = TestRepo::new(); - - let mtree = create_mtree(&test_repo.repo); - let checksum = commit(&test_repo.repo, &mtree, "test"); - - let repo = ostree::Repo::new_for_path(test_repo.dir.path()); - repo.open(NONE_CANCELLABLE).expect("OSTree test_repo"); - let refs = repo - .list_refs(None, NONE_CANCELLABLE) - .expect("failed to list refs"); - assert_eq!(1, refs.len()); - assert_eq!(checksum, refs["test"]); -} - -#[test] -fn should_traverse_commit() { - let test_repo = TestRepo::new(); - let checksum = test_repo.test_commit("test"); - - let objects = test_repo - .repo - .traverse_commit(&checksum, -1, NONE_CANCELLABLE) - .expect("traverse commit"); - - assert_eq!( - hashset!( - ObjectName::new( - "89f84ca9854a80e85b583e46a115ba4985254437027bad34f0b113219323d3f8", - ObjectType::File - ), - ObjectName::new( - "5280a884f930cae329e2e39d52f2c8e910c2ef4733216b67679db32a2b56c4db", - ObjectType::DirTree - ), - ObjectName::new( - "c81acde323d73f8639fc84f1ded17bbafc415e645f845e9f3b16a4906857c2d4", - ObjectType::DirTree - ), - ObjectName::new( - "ad49a0f4e3bc165361b6d17e8a865d479b373ee67d89ac6f0ce871f27da1be6d", - ObjectType::DirMeta - ), - ObjectName::new(checksum, ObjectType::Commit) - ), - objects - ); -} - -#[test] -fn should_checkout_tree() { - let test_repo = TestRepo::new(); - let _ = test_repo.test_commit("test"); - - let checkout_dir = tempfile::tempdir().expect("checkout dir"); - let file = test_repo - .repo - .read_commit("test", NONE_CANCELLABLE) - .expect("read commit") - .0 - .downcast::() - .expect("RepoFile"); - let info = file - .query_info("*", gio::FileQueryInfoFlags::NONE, NONE_CANCELLABLE) - .expect("file info"); - test_repo - .repo - .checkout_tree( - ostree::RepoCheckoutMode::User, - ostree::RepoCheckoutOverwriteMode::None, - &gio::File::new_for_path(checkout_dir.path().join("test-checkout")), - &file, - &info, - NONE_CANCELLABLE, - ) - .expect("checkout tree"); - - assert_test_file(checkout_dir.path()); -} - -#[test] -#[cfg(feature = "v2016_8")] fn should_checkout_at_with_none_options() { let test_repo = TestRepo::new(); let checksum = test_repo.test_commit("test"); @@ -121,7 +25,6 @@ fn should_checkout_at_with_none_options() { } #[test] -#[cfg(feature = "v2016_8")] fn should_checkout_at_with_default_options() { let test_repo = TestRepo::new(); let checksum = test_repo.test_commit("test"); @@ -143,7 +46,6 @@ fn should_checkout_at_with_default_options() { } #[test] -#[cfg(feature = "v2016_8")] fn should_checkout_at_with_options() { let test_repo = TestRepo::new(); let checksum = test_repo.test_commit("test"); @@ -176,7 +78,6 @@ fn should_checkout_at_with_options() { } #[test] -#[cfg(feature = "v2016_8")] fn should_checkout_at_with_filter() { let test_repo = TestRepo::new(); let checksum = test_repo.test_commit("test"); diff --git a/rust-bindings/rust/tests/repo/mod.rs b/rust-bindings/rust/tests/repo/mod.rs new file mode 100644 index 00000000..c0385ba8 --- /dev/null +++ b/rust-bindings/rust/tests/repo/mod.rs @@ -0,0 +1,90 @@ +use crate::util::*; +use gio::prelude::*; +use gio::NONE_CANCELLABLE; +use glib::prelude::*; +use ostree::ObjectType; +use ostree::*; + +#[cfg(feature = "v2016_8")] +mod checkout_at; + +#[test] +fn should_commit_content_to_repo_and_list_refs_again() { + let test_repo = TestRepo::new(); + + let mtree = create_mtree(&test_repo.repo); + let checksum = commit(&test_repo.repo, &mtree, "test"); + + let repo = ostree::Repo::new_for_path(test_repo.dir.path()); + repo.open(NONE_CANCELLABLE).expect("OSTree test_repo"); + let refs = repo + .list_refs(None, NONE_CANCELLABLE) + .expect("failed to list refs"); + assert_eq!(1, refs.len()); + assert_eq!(checksum, refs["test"]); +} + +#[test] +fn should_traverse_commit() { + let test_repo = TestRepo::new(); + let checksum = test_repo.test_commit("test"); + + let objects = test_repo + .repo + .traverse_commit(&checksum, -1, NONE_CANCELLABLE) + .expect("traverse commit"); + + assert_eq!( + hashset!( + ObjectName::new( + "89f84ca9854a80e85b583e46a115ba4985254437027bad34f0b113219323d3f8", + ObjectType::File + ), + ObjectName::new( + "5280a884f930cae329e2e39d52f2c8e910c2ef4733216b67679db32a2b56c4db", + ObjectType::DirTree + ), + ObjectName::new( + "c81acde323d73f8639fc84f1ded17bbafc415e645f845e9f3b16a4906857c2d4", + ObjectType::DirTree + ), + ObjectName::new( + "ad49a0f4e3bc165361b6d17e8a865d479b373ee67d89ac6f0ce871f27da1be6d", + ObjectType::DirMeta + ), + ObjectName::new(checksum, ObjectType::Commit) + ), + objects + ); +} + +#[test] +fn should_checkout_tree() { + let test_repo = TestRepo::new(); + let _ = test_repo.test_commit("test"); + + let checkout_dir = tempfile::tempdir().expect("checkout dir"); + let file = test_repo + .repo + .read_commit("test", NONE_CANCELLABLE) + .expect("read commit") + .0 + .downcast::() + .expect("RepoFile"); + let info = file + .query_info("*", gio::FileQueryInfoFlags::NONE, NONE_CANCELLABLE) + .expect("file info"); + test_repo + .repo + .checkout_tree( + ostree::RepoCheckoutMode::User, + ostree::RepoCheckoutOverwriteMode::None, + &gio::File::new_for_path(checkout_dir.path().join("test-checkout")), + &file, + &info, + NONE_CANCELLABLE, + ) + .expect("checkout tree"); + + assert_test_file(checkout_dir.path()); +} diff --git a/rust-bindings/rust/tests/tests.rs b/rust-bindings/rust/tests/tests.rs new file mode 100644 index 00000000..3a8502de --- /dev/null +++ b/rust-bindings/rust/tests/tests.rs @@ -0,0 +1,10 @@ +extern crate gio; +extern crate glib; +extern crate openat; +extern crate ostree; +extern crate tempfile; +#[macro_use] +extern crate maplit; + +mod repo; +mod util;