tests: reorganise repo tests so they have fewer feature flags
This commit is contained in:
1 parent
eb602d8546
commit
6776c819f1
3 files changed
+101
-100
No files matched your search
@@ -0,0 +1,110 @@
|
||||
use crate::util::*;
|
||||
use gio::NONE_CANCELLABLE;
|
||||
use ostree::*;
|
||||
use std::os::unix::io::AsRawFd;
|
||||
|
||||
#[test]
|
||||
fn should_checkout_at_with_none_options() {
|
||||
let test_repo = TestRepo::new();
|
||||
let checksum = test_repo.test_commit("test");
|
||||
let checkout_dir = tempfile::tempdir().expect("checkout dir");
|
||||
|
||||
let dirfd = openat::Dir::open(checkout_dir.path()).expect("openat");
|
||||
test_repo
|
||||
.repo
|
||||
.checkout_at(
|
||||
None,
|
||||
dirfd.as_raw_fd(),
|
||||
"test-checkout",
|
||||
&checksum,
|
||||
NONE_CANCELLABLE,
|
||||
)
|
||||
.expect("checkout at");
|
||||
|
||||
assert_test_file(checkout_dir.path());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_checkout_at_with_default_options() {
|
||||
let test_repo = TestRepo::new();
|
||||
let checksum = test_repo.test_commit("test");
|
||||
let checkout_dir = tempfile::tempdir().expect("checkout dir");
|
||||
|
||||
let dirfd = openat::Dir::open(checkout_dir.path()).expect("openat");
|
||||
test_repo
|
||||
.repo
|
||||
.checkout_at(
|
||||
Some(&RepoCheckoutAtOptions::default()),
|
||||
dirfd.as_raw_fd(),
|
||||
"test-checkout",
|
||||
&checksum,
|
||||
NONE_CANCELLABLE,
|
||||
)
|
||||
.expect("checkout at");
|
||||
|
||||
assert_test_file(checkout_dir.path());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_checkout_at_with_options() {
|
||||
let test_repo = TestRepo::new();
|
||||
let checksum = test_repo.test_commit("test");
|
||||
let checkout_dir = tempfile::tempdir().expect("checkout dir");
|
||||
|
||||
let dirfd = openat::Dir::open(checkout_dir.path()).expect("openat");
|
||||
test_repo
|
||||
.repo
|
||||
.checkout_at(
|
||||
Some(&RepoCheckoutAtOptions {
|
||||
mode: RepoCheckoutMode::User,
|
||||
overwrite_mode: RepoCheckoutOverwriteMode::AddFiles,
|
||||
enable_fsync: true,
|
||||
force_copy: true,
|
||||
force_copy_zerosized: true,
|
||||
devino_to_csum_cache: Some(RepoDevInoCache::new()),
|
||||
filter: Some(Box::new(|_repo, _path, _stat| {
|
||||
RepoCheckoutFilterResult::Allow
|
||||
})),
|
||||
..Default::default()
|
||||
}),
|
||||
dirfd.as_raw_fd(),
|
||||
"test-checkout",
|
||||
&checksum,
|
||||
NONE_CANCELLABLE,
|
||||
)
|
||||
.expect("checkout at");
|
||||
|
||||
assert_test_file(checkout_dir.path());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn should_checkout_at_with_filter() {
|
||||
let test_repo = TestRepo::new();
|
||||
let checksum = test_repo.test_commit("test");
|
||||
let checkout_dir = tempfile::tempdir().expect("checkout dir");
|
||||
|
||||
let dirfd = openat::Dir::open(checkout_dir.path()).expect("openat");
|
||||
test_repo
|
||||
.repo
|
||||
.checkout_at(
|
||||
Some(&RepoCheckoutAtOptions {
|
||||
filter: Some(Box::new(|_repo, path, _stat| {
|
||||
if let Some("testfile") = path.file_name().map(|s| s.to_str().unwrap()) {
|
||||
RepoCheckoutFilterResult::Skip
|
||||
} else {
|
||||
RepoCheckoutFilterResult::Allow
|
||||
}
|
||||
})),
|
||||
..Default::default()
|
||||
}),
|
||||
dirfd.as_raw_fd(),
|
||||
"test-checkout",
|
||||
&checksum,
|
||||
NONE_CANCELLABLE,
|
||||
)
|
||||
.expect("checkout at");
|
||||
|
||||
let testdir = checkout_dir.path().join("test-checkout").join("testdir");
|
||||
assert!(std::fs::read_dir(&testdir).is_ok());
|
||||
assert!(std::fs::File::open(&testdir.join("testfile")).is_err());
|
||||
}
|
||||
@@ -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::<ostree::RepoFile>()
|
||||
.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());
|
||||
}
|
||||
Reference in new issue
Block a user