diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 24f9b262..854bd8ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,9 @@ concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true +env: + CI: true + on: pull_request: paths: @@ -86,6 +89,15 @@ jobs: - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2 - name: Run Cargo Test run: cargo +${{ matrix.rust }} test -r --all-targets --all-features --workspace --examples + id: run_tests + env: + INSTA_UPDATE: new + - name: Upload snapshots of failed tests + if: ${{ failure() && steps.run_tests.outcome == 'failure' }} + uses: actions/upload-artifact@v3 + with: + name: failed-snapshots-${{ matrix.job.os }} + path: "**/snapshots/*.snap.new" docs: name: Build docs diff --git a/crates/core/tests/testdata/backup-data.tar.gz b/crates/core/tests/fixtures/backup-data.tar.gz similarity index 100% rename from crates/core/tests/testdata/backup-data.tar.gz rename to crates/core/tests/fixtures/backup-data.tar.gz diff --git a/crates/core/tests/fixtures/backup-data/0/9/0 b/crates/core/tests/fixtures/backup-data/0/9/0 new file mode 100644 index 00000000..187e73b7 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/0 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/1 b/crates/core/tests/fixtures/backup-data/0/9/1 new file mode 100644 index 00000000..fd161476 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/1 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/10 b/crates/core/tests/fixtures/backup-data/0/9/10 new file mode 100644 index 00000000..07ba19b6 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/10 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/11 b/crates/core/tests/fixtures/backup-data/0/9/11 new file mode 100644 index 00000000..c6777916 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/11 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/12 b/crates/core/tests/fixtures/backup-data/0/9/12 new file mode 100644 index 00000000..e29c9046 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/12 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/13 b/crates/core/tests/fixtures/backup-data/0/9/13 new file mode 100644 index 00000000..4a897209 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/13 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/14 b/crates/core/tests/fixtures/backup-data/0/9/14 new file mode 100644 index 00000000..89d20279 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/14 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/15 b/crates/core/tests/fixtures/backup-data/0/9/15 new file mode 100644 index 00000000..7aa90d69 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/15 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/16 b/crates/core/tests/fixtures/backup-data/0/9/16 new file mode 100644 index 00000000..3100f737 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/16 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/17 b/crates/core/tests/fixtures/backup-data/0/9/17 new file mode 100644 index 00000000..5832167a Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/17 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/18 b/crates/core/tests/fixtures/backup-data/0/9/18 new file mode 100644 index 00000000..9409bc40 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/18 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/19 b/crates/core/tests/fixtures/backup-data/0/9/19 new file mode 100644 index 00000000..f179b64e Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/19 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/2 b/crates/core/tests/fixtures/backup-data/0/9/2 new file mode 100644 index 00000000..20ae9eec Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/2 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/20 b/crates/core/tests/fixtures/backup-data/0/9/20 new file mode 100644 index 00000000..e7a97c9e Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/20 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/21 b/crates/core/tests/fixtures/backup-data/0/9/21 new file mode 100644 index 00000000..63ac50e7 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/21 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/22 b/crates/core/tests/fixtures/backup-data/0/9/22 new file mode 100644 index 00000000..e72d5e7e Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/22 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/23 b/crates/core/tests/fixtures/backup-data/0/9/23 new file mode 100644 index 00000000..ae522109 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/23 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/24 b/crates/core/tests/fixtures/backup-data/0/9/24 new file mode 100644 index 00000000..40f9000b Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/24 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/25 b/crates/core/tests/fixtures/backup-data/0/9/25 new file mode 100644 index 00000000..dd9f68a0 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/25 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/26 b/crates/core/tests/fixtures/backup-data/0/9/26 new file mode 100644 index 00000000..2d9d6f98 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/26 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/27 b/crates/core/tests/fixtures/backup-data/0/9/27 new file mode 100644 index 00000000..338a4ed4 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/27 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/28 b/crates/core/tests/fixtures/backup-data/0/9/28 new file mode 100644 index 00000000..caf4ef55 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/28 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/29 b/crates/core/tests/fixtures/backup-data/0/9/29 new file mode 100644 index 00000000..b35dded6 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/29 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/3 b/crates/core/tests/fixtures/backup-data/0/9/3 new file mode 100644 index 00000000..8f1ff817 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/3 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/30 b/crates/core/tests/fixtures/backup-data/0/9/30 new file mode 100644 index 00000000..5f48c086 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/30 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/31 b/crates/core/tests/fixtures/backup-data/0/9/31 new file mode 100644 index 00000000..5439e2b4 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/31 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/32 b/crates/core/tests/fixtures/backup-data/0/9/32 new file mode 100644 index 00000000..d864a459 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/32 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/33 b/crates/core/tests/fixtures/backup-data/0/9/33 new file mode 100644 index 00000000..91d8882d Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/33 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/34 b/crates/core/tests/fixtures/backup-data/0/9/34 new file mode 100644 index 00000000..ec1f46b4 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/34 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/35 b/crates/core/tests/fixtures/backup-data/0/9/35 new file mode 100644 index 00000000..0e59da10 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/35 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/36 b/crates/core/tests/fixtures/backup-data/0/9/36 new file mode 100644 index 00000000..d2093405 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/36 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/37 b/crates/core/tests/fixtures/backup-data/0/9/37 new file mode 100644 index 00000000..7e635b49 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/37 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/38 b/crates/core/tests/fixtures/backup-data/0/9/38 new file mode 100644 index 00000000..80d2d498 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/38 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/39 b/crates/core/tests/fixtures/backup-data/0/9/39 new file mode 100644 index 00000000..8142d4e9 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/39 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/4 b/crates/core/tests/fixtures/backup-data/0/9/4 new file mode 100644 index 00000000..bef45cce Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/4 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/40 b/crates/core/tests/fixtures/backup-data/0/9/40 new file mode 100644 index 00000000..06438593 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/40 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/41 b/crates/core/tests/fixtures/backup-data/0/9/41 new file mode 100644 index 00000000..3680b415 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/41 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/42 b/crates/core/tests/fixtures/backup-data/0/9/42 new file mode 100644 index 00000000..36633f22 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/42 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/43 b/crates/core/tests/fixtures/backup-data/0/9/43 new file mode 100644 index 00000000..15dff47c Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/43 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/44 b/crates/core/tests/fixtures/backup-data/0/9/44 new file mode 100644 index 00000000..f1994014 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/44 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/45 b/crates/core/tests/fixtures/backup-data/0/9/45 new file mode 100644 index 00000000..64296f1c Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/45 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/46 b/crates/core/tests/fixtures/backup-data/0/9/46 new file mode 100644 index 00000000..a860b151 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/46 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/47 b/crates/core/tests/fixtures/backup-data/0/9/47 new file mode 100644 index 00000000..390ea25d Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/47 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/48 b/crates/core/tests/fixtures/backup-data/0/9/48 new file mode 100644 index 00000000..d38114ca Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/48 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/49 b/crates/core/tests/fixtures/backup-data/0/9/49 new file mode 100644 index 00000000..66211998 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/49 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/5 b/crates/core/tests/fixtures/backup-data/0/9/5 new file mode 100644 index 00000000..f5a6028c Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/5 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/50 b/crates/core/tests/fixtures/backup-data/0/9/50 new file mode 100644 index 00000000..bf41444b Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/50 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/51 b/crates/core/tests/fixtures/backup-data/0/9/51 new file mode 100644 index 00000000..66830624 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/51 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/52 b/crates/core/tests/fixtures/backup-data/0/9/52 new file mode 100644 index 00000000..d1e6fc4c Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/52 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/53 b/crates/core/tests/fixtures/backup-data/0/9/53 new file mode 100644 index 00000000..7b3fe93f Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/53 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/54 b/crates/core/tests/fixtures/backup-data/0/9/54 new file mode 100644 index 00000000..cd5ad572 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/54 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/55 b/crates/core/tests/fixtures/backup-data/0/9/55 new file mode 100644 index 00000000..e1860e7f Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/55 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/56 b/crates/core/tests/fixtures/backup-data/0/9/56 new file mode 100644 index 00000000..46ebac48 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/56 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/57 b/crates/core/tests/fixtures/backup-data/0/9/57 new file mode 100644 index 00000000..5885e2ba Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/57 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/58 b/crates/core/tests/fixtures/backup-data/0/9/58 new file mode 100644 index 00000000..b6f1263b Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/58 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/59 b/crates/core/tests/fixtures/backup-data/0/9/59 new file mode 100644 index 00000000..f20db68f Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/59 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/6 b/crates/core/tests/fixtures/backup-data/0/9/6 new file mode 100644 index 00000000..203b4855 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/6 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/60 b/crates/core/tests/fixtures/backup-data/0/9/60 new file mode 100644 index 00000000..199da7fe Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/60 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/61 b/crates/core/tests/fixtures/backup-data/0/9/61 new file mode 100644 index 00000000..366ae659 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/61 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/62 b/crates/core/tests/fixtures/backup-data/0/9/62 new file mode 100644 index 00000000..0ced4d2e Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/62 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/63 b/crates/core/tests/fixtures/backup-data/0/9/63 new file mode 100644 index 00000000..6dc2c702 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/63 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/64 b/crates/core/tests/fixtures/backup-data/0/9/64 new file mode 100644 index 00000000..8cac6892 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/64 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/65 b/crates/core/tests/fixtures/backup-data/0/9/65 new file mode 100644 index 00000000..ec851232 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/65 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/66 b/crates/core/tests/fixtures/backup-data/0/9/66 new file mode 100644 index 00000000..32cecc6c Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/66 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/67 b/crates/core/tests/fixtures/backup-data/0/9/67 new file mode 100644 index 00000000..d3795b9b Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/67 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/68 b/crates/core/tests/fixtures/backup-data/0/9/68 new file mode 100644 index 00000000..ed1afe51 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/68 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/7 b/crates/core/tests/fixtures/backup-data/0/9/7 new file mode 100644 index 00000000..62f04f63 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/7 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/8 b/crates/core/tests/fixtures/backup-data/0/9/8 new file mode 100644 index 00000000..2a518174 Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/8 differ diff --git a/crates/core/tests/fixtures/backup-data/0/9/9 b/crates/core/tests/fixtures/backup-data/0/9/9 new file mode 100644 index 00000000..57904d2c Binary files /dev/null and b/crates/core/tests/fixtures/backup-data/0/9/9 differ diff --git a/crates/core/tests/fixtures/backup-data/tests/empty-file b/crates/core/tests/fixtures/backup-data/tests/empty-file new file mode 100644 index 00000000..e69de29b diff --git a/crates/core/tests/fixtures/backup-data/tests/testfile b/crates/core/tests/fixtures/backup-data/tests/testfile new file mode 100644 index 00000000..6de7b8c6 --- /dev/null +++ b/crates/core/tests/fixtures/backup-data/tests/testfile @@ -0,0 +1 @@ +This is a test file. diff --git a/crates/core/tests/fixtures/backup-data/tests/testfile-hardlink b/crates/core/tests/fixtures/backup-data/tests/testfile-hardlink new file mode 100644 index 00000000..6de7b8c6 --- /dev/null +++ b/crates/core/tests/fixtures/backup-data/tests/testfile-hardlink @@ -0,0 +1 @@ +This is a test file. diff --git a/crates/core/tests/fixtures/backup-data/tests/testfile-symlink b/crates/core/tests/fixtures/backup-data/tests/testfile-symlink new file mode 120000 index 00000000..e7cbb71a --- /dev/null +++ b/crates/core/tests/fixtures/backup-data/tests/testfile-symlink @@ -0,0 +1 @@ +testfile \ No newline at end of file diff --git a/crates/core/tests/integration.rs b/crates/core/tests/integration.rs index 344dadb2..5c12536a 100644 --- a/crates/core/tests/integration.rs +++ b/crates/core/tests/integration.rs @@ -1,23 +1,24 @@ -use std::{ - env, - fs::File, - path::{Path, PathBuf}, - str::FromStr, - sync::Arc, -}; - use anyhow::Result; use flate2::read::GzDecoder; use insta::assert_debug_snapshot; use pretty_assertions::assert_eq; +use rstest::fixture; +use rstest::rstest; use rustic_core::{ repofile::SnapshotFile, BackupOptions, ConfigOptions, InMemoryBackend, KeyOptions, NoProgressBars, OpenStatus, PathList, Repository, RepositoryBackends, RepositoryOptions, }; +use std::{ + env, + fs::File, + path::{Path, PathBuf}, + str::FromStr, + sync::Arc, +}; // uncomment for logging output // use simplelog::{Config, SimpleLogger}; use tar::Archive; -use tempfile::{tempdir, TempDir}; +use tempfile::tempdir; fn set_up_repo() -> Result> { let be = InMemoryBackend::new(); @@ -30,28 +31,35 @@ fn set_up_repo() -> Result> { Ok(repo) } -struct TestSource(TempDir); +struct TestSource(PathBuf); impl TestSource { - fn new(tmp: TempDir) -> Self { - Self(tmp) + fn new(tmp: impl Into) -> Self { + Self(tmp.into()) } - fn paths(&self) -> PathList { - PathList::from_iter(Some(self.0.path().to_path_buf())) + fn path_list(&self) -> PathList { + PathList::from_iter(Some(self.0.clone())) } } -fn set_up_testdata(path: impl AsRef) -> Result { +#[fixture] +fn tar_gz_testdata() -> Result { let dir = tempdir()?; - let path = Path::new("tests/testdata").join(path); + let path = Path::new("tests/fixtures/backup-data.tar.gz"); let tar_gz = File::open(path)?; let tar = GzDecoder::new(tar_gz); let mut archive = Archive::new(tar); archive.set_preserve_permissions(true); archive.set_preserve_mtime(true); archive.unpack(&dir)?; - Ok(TestSource::new(dir)) + Ok(TestSource::new(dir.as_ref())) +} + +#[fixture] +fn dir_testdata() -> Result { + let path = Path::new("tests/fixtures/backup-data/"); + Ok(TestSource::new(path)) } // Parts of the snapshot summary we want to test against references @@ -85,12 +93,53 @@ impl<'a> std::fmt::Debug for TestSummary<'a> { } } -#[test] -fn backup() -> Result<()> { +#[rstest] +fn test_backup_with_dir_passes(dir_testdata: Result) -> Result<()> { + // uncomment for logging output + // SimpleLogger::init(log::LevelFilter::Debug, Config::default())?; + let source = dir_testdata?; + let paths = &source.path_list(); + + let repo = set_up_repo()?.to_indexed_ids()?; + // we use as_path to not depend on the actual tempdir + let opts = BackupOptions::default().as_path(PathBuf::from_str("test")?); + + // first backup + let first_backup = repo.backup(&opts, paths, SnapshotFile::default())?; + assert_debug_snapshot!(TestSummary(&first_backup)); + assert_eq!(first_backup.parent, None); + + // get all snapshots and check them + let all_snapshots = repo.get_all_snapshots()?; + assert_eq!(vec![first_backup.clone()], all_snapshots); + // save list of pack files + let packs1: Vec<_> = repo.list(rustic_core::FileType::Pack)?.collect(); + + // re-read index + let repo = repo.to_indexed_ids()?; + // second backup + let snap2 = repo.backup(&opts, paths, SnapshotFile::default())?; + assert_debug_snapshot!(TestSummary(&snap2)); + assert_eq!(snap2.parent, Some(first_backup.id)); + assert_eq!(first_backup.tree, snap2.tree); + + // get all snapshots and check them + let mut all_snapshots = repo.get_all_snapshots()?; + all_snapshots.sort_unstable(); + assert_eq!(vec![first_backup, snap2], all_snapshots); + + // pack files should be unchanged + let packs2: Vec<_> = repo.list(rustic_core::FileType::Pack)?.collect(); + assert_eq!(packs1, packs2); + Ok(()) +} + +#[rstest] +fn test_backup_with_tar_gz_passes(tar_gz_testdata: Result) -> Result<()> { // uncomment for logging output // SimpleLogger::init(log::LevelFilter::Debug, Config::default())?; - let source = set_up_testdata("backup-data.tar.gz")?; - let paths = &source.paths(); + let source = tar_gz_testdata?; + let paths = &source.path_list(); let repo = set_up_repo()?.to_indexed_ids()?; // we use as_path to not depend on the actual tempdir @@ -126,10 +175,10 @@ fn backup() -> Result<()> { Ok(()) } -#[test] -fn backup_dry_run() -> Result<()> { - let source = &set_up_testdata("backup-data.tar.gz")?; - let paths = &source.paths(); +#[rstest] +fn test_backup_dry_run_with_tar_gz_passes(tar_gz_testdata: Result) -> Result<()> { + let source = tar_gz_testdata?; + let paths = &source.path_list(); let repo = set_up_repo()?.to_indexed_ids()?; // we use as_path to not depend on the actual tempdir let opts = BackupOptions::default() diff --git a/crates/core/tests/snapshots/integration__backup-2.snap b/crates/core/tests/snapshots/integration__backup-2.snap deleted file mode 100644 index 52a022e2..00000000 --- a/crates/core/tests/snapshots/integration__backup-2.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/core/tests/integration.rs -expression: TestSummary(&snap2) ---- -TestSnap { - hostname: "", - paths: StringList( - [ - "test", - ], - ), - label: "", - tags: StringList( - [], - ), - files_new: 0, - files_changed: 0, - files_unmodified: 73, - total_files_processed: 73, - total_bytes_processed: 1125682, - dirs_new: 0, - dirs_changed: 0, - dirs_unmodified: 6, - total_dirs_processed: 6, - data_blobs: 0, - tree_blobs: 0, - data_added_files: 0, - data_added_files_packed: 0, -} diff --git a/crates/core/tests/snapshots/integration__backup.snap b/crates/core/tests/snapshots/integration__backup.snap deleted file mode 100644 index 209647bb..00000000 --- a/crates/core/tests/snapshots/integration__backup.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/core/tests/integration.rs -expression: TestSummary(&snap1) ---- -TestSnap { - hostname: "", - paths: StringList( - [ - "test", - ], - ), - label: "", - tags: StringList( - [], - ), - files_new: 73, - files_changed: 0, - files_unmodified: 0, - total_files_processed: 73, - total_bytes_processed: 1125674, - dirs_new: 6, - dirs_changed: 0, - dirs_unmodified: 0, - total_dirs_processed: 6, - data_blobs: 70, - tree_blobs: 6, - data_added_files: 1125653, - data_added_files_packed: 78740, -} diff --git a/crates/core/tests/snapshots/integration__backup_dry_run-2.snap b/crates/core/tests/snapshots/integration__backup_dry_run-2.snap deleted file mode 100644 index 632d04ee..00000000 --- a/crates/core/tests/snapshots/integration__backup_dry_run-2.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/core/tests/integration.rs -expression: TestSummary(&snap_dry_run) ---- -TestSnap { - hostname: "", - paths: StringList( - [ - "test", - ], - ), - label: "", - tags: StringList( - [], - ), - files_new: 0, - files_changed: 0, - files_unmodified: 73, - total_files_processed: 73, - total_bytes_processed: 1125682, - dirs_new: 0, - dirs_changed: 0, - dirs_unmodified: 6, - total_dirs_processed: 6, - data_blobs: 0, - tree_blobs: 0, - data_added_files: 0, - data_added_files_packed: 0, -} diff --git a/crates/core/tests/snapshots/integration__backup_dry_run.snap b/crates/core/tests/snapshots/integration__backup_dry_run.snap deleted file mode 100644 index 5663f447..00000000 --- a/crates/core/tests/snapshots/integration__backup_dry_run.snap +++ /dev/null @@ -1,29 +0,0 @@ ---- -source: crates/core/tests/integration.rs -expression: TestSummary(&snap_dry_run) ---- -TestSnap { - hostname: "", - paths: StringList( - [ - "test", - ], - ), - label: "", - tags: StringList( - [], - ), - files_new: 73, - files_changed: 0, - files_unmodified: 0, - total_files_processed: 73, - total_bytes_processed: 1125674, - dirs_new: 6, - dirs_changed: 0, - dirs_unmodified: 0, - total_dirs_processed: 6, - data_blobs: 70, - tree_blobs: 6, - data_added_files: 1125653, - data_added_files_packed: 78740, -}