this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 165 lines 5.9 kB view raw
1use assert_cmd::prelude::*; 2use assert_fs::prelude::*; 3use predicates::prelude::*; 4use std::process::Command; 5 6mod common; 7use common::*; 8 9mod tar { 10 use super::*; 11 12 mod roundtrip { 13 use super::*; 14 15 /// Tar roundtrip with a single file 16 /// 17 /// ``` bash 18 /// cmprss tar test.txt archive.tar 19 /// cmprss tar --extract archive.tar . 20 /// ``` 21 #[test] 22 fn explicit() -> Result<(), Box<dyn std::error::Error>> { 23 let file = create_test_file("test.txt", "garbage data for testing")?; 24 let working_dir = create_working_dir()?; 25 let archive = working_dir.child("archive.tar"); 26 archive.assert(predicate::path::missing()); 27 28 let mut compress = Command::cargo_bin("cmprss")?; 29 compress.arg("tar").arg(file.path()).arg(archive.path()); 30 compress.assert().success(); 31 archive.assert(predicate::path::is_file()); 32 33 let mut extract = Command::cargo_bin("cmprss")?; 34 extract 35 .arg("tar") 36 .arg("--extract") 37 .arg(archive.path()) 38 .arg(working_dir.path()); 39 extract.assert().success(); 40 41 // Assert the files are identical 42 assert_files_equal(file.path(), &working_dir.child("test.txt")); 43 44 Ok(()) 45 } 46 47 /// Tar roundtrip with multiple files 48 /// 49 /// ``` bash 50 /// cmprss tar test.txt test2.txt archive.tar 51 /// cmprss tar --extract archive.tar . 52 /// ``` 53 #[test] 54 fn explicit_two() -> Result<(), Box<dyn std::error::Error>> { 55 let file = create_test_file("test.txt", "garbage data for testing")?; 56 let file2 = create_test_file("test2.txt", "more garbage data for testing")?; 57 let working_dir = create_working_dir()?; 58 let archive = working_dir.child("archive.tar"); 59 archive.assert(predicate::path::missing()); 60 61 let mut compress = Command::cargo_bin("cmprss")?; 62 compress 63 .arg("tar") 64 .arg(file.path()) 65 .arg(file2.path()) 66 .arg(archive.path()); 67 compress.assert().success(); 68 archive.assert(predicate::path::is_file()); 69 70 let mut extract = Command::cargo_bin("cmprss")?; 71 extract 72 .arg("tar") 73 .arg("--extract") 74 .arg(archive.path()) 75 .arg(working_dir.path()); 76 extract.assert().success(); 77 78 // Assert the files are identical 79 assert_files_equal(file.path(), &working_dir.child("test.txt")); 80 assert_files_equal(file2.path(), &working_dir.child("test2.txt")); 81 82 Ok(()) 83 } 84 85 /// Tar roundtrip with a single file inferring output filename 86 /// Compressing: output = './test.txt.tar' 87 /// Extracting: output = '.' 88 /// 89 /// ``` bash 90 /// cmprss tar test.txt 91 /// cmprss tar --extract test.txt.tar 92 /// ``` 93 #[test] 94 fn implicit() -> Result<(), Box<dyn std::error::Error>> { 95 let file = create_test_file("test.txt", "garbage data for testing")?; 96 let working_dir = create_persistent_working_dir()?; 97 let archive = working_dir.child("test.txt.tar"); 98 archive.assert(predicate::path::missing()); 99 100 let mut compress = Command::cargo_bin("cmprss")?; 101 compress 102 .current_dir(&working_dir) 103 .arg("tar") 104 .arg("--ignore-pipes") 105 .arg(file.path()); 106 compress.assert().success(); 107 archive.assert(predicate::path::is_file()); 108 109 let mut extract = Command::cargo_bin("cmprss")?; 110 extract 111 .current_dir(&working_dir) 112 .arg("tar") 113 .arg("--ignore-pipes") 114 .arg("--extract") 115 .arg(archive.path()); 116 extract.assert().success(); 117 118 // Assert the files are identical 119 assert_files_equal(file.path(), &working_dir.child("test.txt")); 120 121 Ok(()) 122 } 123 124 /// Tar roundtrip with multiple files inferring output 125 /// Uses the first file's name to generate the output filename 126 /// Compressing: output = './test.txt.tar' 127 /// Extracting: output = '.' 128 /// 129 /// ``` bash 130 /// cmprss tar test.txt test2.txt 131 /// cmprss tar test.txt.tar 132 /// ``` 133 #[test] 134 fn implicit_two() -> Result<(), Box<dyn std::error::Error>> { 135 let file = create_test_file("test.txt", "garbage data for testing")?; 136 let file2 = create_test_file("test2.txt", "more garbage data for testing")?; 137 let working_dir = create_persistent_working_dir()?; 138 let archive = working_dir.child("test.txt.tar"); 139 archive.assert(predicate::path::missing()); 140 141 let mut compress = Command::cargo_bin("cmprss")?; 142 compress 143 .current_dir(&working_dir) 144 .arg("tar") 145 .arg("--ignore-pipes") 146 .arg(file.path()) 147 .arg(file2.path()); 148 compress.assert().success(); 149 archive.assert(predicate::path::is_file()); 150 151 let mut extract = Command::cargo_bin("cmprss")?; 152 extract 153 .current_dir(&working_dir) 154 .arg("--ignore-pipes") 155 .arg(archive.path()); 156 extract.assert().success(); 157 158 // Assert the files are identical 159 assert_files_equal(file.path(), &working_dir.child("test.txt")); 160 assert_files_equal(file2.path(), &working_dir.child("test2.txt")); 161 162 Ok(()) 163 } 164 } 165}