]>
Commit | Line | Data |
---|---|---|
2b7f8dd5 WB |
1 | use std::process::Command; |
2 | ||
f7d4e4b5 | 3 | use anyhow::{Error}; |
3200579c | 4 | |
2b7f8dd5 | 5 | use pbs_client::pxar::*; |
3200579c DM |
6 | |
7 | fn run_test(dir_name: &str) -> Result<(), Error> { | |
8 | ||
23c8415d | 9 | println!("run pxar test {}", dir_name); |
3200579c DM |
10 | |
11 | Command::new("casync") | |
12 | .arg("make") | |
13 | .arg("test-casync.catar") | |
14 | .arg(dir_name) | |
15 | .status() | |
16 | .expect("failed to execute casync"); | |
17 | ||
c443f58b | 18 | let writer = std::fs::OpenOptions::new() |
3200579c DM |
19 | .create(true) |
20 | .write(true) | |
21 | .truncate(true) | |
22 | .open("test-proxmox.catar")?; | |
c443f58b | 23 | let writer = pxar::encoder::sync::StandardWriter::new(writer); |
3200579c | 24 | |
c443f58b | 25 | let dir = nix::dir::Dir::open( |
3200579c DM |
26 | dir_name, nix::fcntl::OFlag::O_NOFOLLOW, |
27 | nix::sys::stat::Mode::empty())?; | |
28 | ||
77486a60 FG |
29 | let options = PxarCreateOptions { |
30 | entries_max: ENCODER_MAX_ENTRIES, | |
31 | ..PxarCreateOptions::default() | |
32 | }; | |
33 | ||
6afb60ab SR |
34 | let rt = tokio::runtime::Runtime::new().unwrap(); |
35 | rt.block_on(create_archive( | |
c443f58b WB |
36 | dir, |
37 | writer, | |
5444fa94 | 38 | Flags::DEFAULT, |
c443f58b | 39 | |_| Ok(()), |
c443f58b | 40 | None, |
77486a60 | 41 | options, |
6afb60ab | 42 | ))?; |
3200579c DM |
43 | |
44 | Command::new("cmp") | |
45 | .arg("--verbose") | |
46 | .arg("test-casync.catar") | |
47 | .arg("test-proxmox.catar") | |
48 | .status() | |
49 | .expect("test failed - archives are different"); | |
50 | ||
51 | Ok(()) | |
52 | } | |
53 | ||
54 | fn run_all_tests() -> Result<(), Error> { | |
55 | ||
56 | run_test("tests/catar_data/test_file")?; | |
57 | ||
58 | run_test("tests/catar_data/test_symlink")?; | |
59 | ||
60 | run_test("tests/catar_data/test_subdir")?; | |
61 | ||
a147acfa | 62 | run_test("tests/catar_data/test_goodbye_sort_order")?; |
0866748d | 63 | |
37ea44a5 DM |
64 | run_test("tests/catar_data/test_files_and_subdirs")?; |
65 | ||
3200579c DM |
66 | Ok(()) |
67 | } | |
68 | ||
a10bb8b9 | 69 | #[test] #[ignore] |
a147acfa | 70 | fn catar_simple() { |
3200579c DM |
71 | |
72 | if let Err(err) = run_all_tests() { | |
73 | eprintln!("Error: {}", err); | |
74 | std::process::exit(1); | |
75 | } | |
76 | } |