ostree/rust-bindings/tests/repo/checkout_at.rs

110 lines
3.3 KiB
Rust
Raw Normal View History

use crate::util::*;
use cap_std::fs::Dir;
use cap_tempfile::cap_std;
use ostree::*;
2019-05-26 20:18:12 +03:00
use std::os::unix::io::AsRawFd;
#[test]
2019-05-26 20:18:12 +03:00
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 dir = Dir::open_ambient_dir(checkout_dir.path(), cap_std::ambient_authority()).unwrap();
2019-05-26 20:18:12 +03:00
test_repo
.repo
.checkout_at(
None,
dir.as_raw_fd(),
2019-05-26 20:18:12 +03:00
"test-checkout",
&checksum,
gio::Cancellable::NONE,
2019-05-26 20:18:12 +03:00
)
.expect("checkout at");
assert_test_file(checkout_dir.path());
}
2019-05-31 21:02:02 +03:00
#[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 dir = Dir::open_ambient_dir(checkout_dir.path(), cap_std::ambient_authority()).unwrap();
2019-05-31 21:02:02 +03:00
test_repo
.repo
.checkout_at(
Some(&RepoCheckoutAtOptions::default()),
dir.as_raw_fd(),
2019-05-31 21:02:02 +03:00
"test-checkout",
&checksum,
gio::Cancellable::NONE,
2019-05-31 21:02:02 +03:00
)
.expect("checkout at");
assert_test_file(checkout_dir.path());
}
2019-05-26 20:18:12 +03:00
#[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 dir = Dir::open_ambient_dir(checkout_dir.path(), cap_std::ambient_authority()).unwrap();
2019-05-26 20:18:12 +03:00
test_repo
.repo
.checkout_at(
Some(&RepoCheckoutAtOptions {
mode: RepoCheckoutMode::User,
2019-05-31 21:02:02 +03:00
overwrite_mode: RepoCheckoutOverwriteMode::AddFiles,
enable_fsync: true,
devino_to_csum_cache: Some(RepoDevInoCache::new()),
2019-05-26 20:18:12 +03:00
..Default::default()
}),
dir.as_raw_fd(),
2019-05-26 20:18:12 +03:00
"test-checkout",
&checksum,
gio::Cancellable::NONE,
2019-05-26 20:18:12 +03:00
)
.expect("checkout at");
assert_test_file(checkout_dir.path());
2019-05-25 01:59:22 +03:00
}
#[test]
#[cfg(any(feature = "v2018_2", feature = "dox"))]
fn should_checkout_at_with_filter() {
use std::path::Path;
let test_repo = TestRepo::new();
let checksum = test_repo.test_commit("test");
let checkout_dir = tempfile::tempdir().expect("checkout dir");
let dir = Dir::open_ambient_dir(checkout_dir.path(), cap_std::ambient_authority()).unwrap();
test_repo
.repo
.checkout_at(
Some(&RepoCheckoutAtOptions {
filter: RepoCheckoutFilter::new(|_repo, path, _stat| {
if path == Path::new("/testdir/testfile") {
RepoCheckoutFilterResult::Skip
} else {
RepoCheckoutFilterResult::Allow
}
}),
..Default::default()
}),
dir.as_raw_fd(),
"test-checkout",
&checksum,
gio::Cancellable::NONE,
)
.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());
}