this repo has no description
0
fork

Configure Feed

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

at main 139 lines 4.8 kB view raw
1use assert_cmd::prelude::*; 2use assert_fs::prelude::*; 3use predicates::prelude::*; 4use std::{ 5 fs::File, 6 process::{Command, Stdio}, 7}; 8 9mod common; 10use common::*; 11 12mod bzip2 { 13 use super::*; 14 15 mod roundtrip { 16 use super::*; 17 18 /// Bzip2 roundtrip using files 19 /// Compressing: input = test.txt, output = test.txt.bz2 20 /// Extracting: input = test.txt.bz2, output = test.txt 21 /// 22 /// ``` bash 23 /// cmprss bzip2 test.txt test.txt.bz2 24 /// cmprss bzip2 --extract --ignore-pipes test.txt.bz2 25 /// ``` 26 #[test] 27 fn explicit() -> Result<(), Box<dyn std::error::Error>> { 28 let file = create_test_file("test.txt", "garbage data for testing")?; 29 let working_dir = create_working_dir()?; 30 let archive = working_dir.child("test.txt.bz2"); 31 archive.assert(predicate::path::missing()); 32 33 let mut compress = Command::cargo_bin("cmprss")?; 34 compress 35 .current_dir(&working_dir) 36 .arg("bzip2") 37 .arg(file.path()) 38 .arg(archive.path()); 39 compress.assert().success(); 40 archive.assert(predicate::path::is_file()); 41 42 let mut extract = Command::cargo_bin("cmprss")?; 43 extract 44 .current_dir(&working_dir) 45 .arg("bzip2") 46 .arg("--ignore-pipes") 47 .arg("--extract") 48 .arg(archive.path()); 49 extract.assert().success(); 50 51 // Assert the files are identical 52 assert_files_equal(file.path(), &working_dir.child("test.txt")); 53 54 Ok(()) 55 } 56 57 /// Bzip2 roundtrip using stdin 58 /// Compressing: input = stdin, output = test.txt.bz2 59 /// Extracting: input = stdin(test.txt.bz2), output = test.txt 60 /// 61 /// ``` bash 62 /// cat test.txt | cmprss bzip2 test.txt.bz2 63 /// cat test.txt.bz2 | cmprss bzip2 --extract out.txt 64 /// ``` 65 #[test] 66 fn stdin() -> Result<(), Box<dyn std::error::Error>> { 67 let file = create_test_file("test.txt", "garbage data for testing")?; 68 let working_dir = create_working_dir()?; 69 let archive = working_dir.child("test.txt.bz2"); 70 archive.assert(predicate::path::missing()); 71 72 // Pipe file to stdin 73 let mut compress = Command::cargo_bin("cmprss")?; 74 compress 75 .current_dir(&working_dir) 76 .arg("bzip2") 77 .arg("test.txt.bz2") 78 .stdin(Stdio::from(File::open(file.path())?)); 79 compress.assert().success(); 80 archive.assert(predicate::path::is_file()); 81 82 let mut extract = Command::cargo_bin("cmprss")?; 83 extract 84 .current_dir(&working_dir) 85 .arg("bzip2") 86 .stdin(Stdio::from(File::open(archive.path())?)) 87 .arg("--extract") 88 .arg("out.txt"); 89 extract.assert().success(); 90 91 // Assert the files are identical 92 assert_files_equal(file.path(), &working_dir.child("out.txt")); 93 94 Ok(()) 95 } 96 97 /// Bzip2 roundtrip using stdout 98 /// Compressing: input = test.txt, output = stdout 99 /// Extracting: input = test.txt.bz2, output = stdout 100 /// 101 /// ``` bash 102 /// cmprss bzip2 test.txt > test.txt.bz2 103 /// cmprss bzip2 --extract test.txt.bz2 > out.txt 104 /// ``` 105 #[test] 106 fn stdout() -> Result<(), Box<dyn std::error::Error>> { 107 let file = create_test_file("test.txt", "garbage data for testing")?; 108 let working_dir = create_working_dir()?; 109 let archive = working_dir.child("test.txt.bz2"); 110 archive.assert(predicate::path::missing()); 111 112 // Compress file to stdout 113 let mut compress = Command::cargo_bin("cmprss")?; 114 compress 115 .current_dir(&working_dir) 116 .arg("bzip2") 117 .arg(file.path()) 118 .stdout(Stdio::from(File::create(archive.path())?)); 119 compress.assert().success(); 120 archive.assert(predicate::path::is_file()); 121 122 // Extract file to stdout 123 let mut extract = Command::cargo_bin("cmprss")?; 124 extract 125 .current_dir(&working_dir) 126 .arg("bzip2") 127 .arg("--ignore-stdin") 128 .arg("--extract") 129 .arg(archive.path()) 130 .arg("out.txt"); 131 extract.assert().success(); 132 133 // Assert the files are identical 134 assert_files_equal(file.path(), &working_dir.child("out.txt")); 135 136 Ok(()) 137 } 138 } 139}