diff --git a/Cargo.lock b/Cargo.lock index bf79776..705f824 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,7 @@ dependencies = [ "log", "regex", "simplelog", + "tempfile", ] [[package]] @@ -137,6 +138,17 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "getrandom" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "hermit-abi" version = "0.1.17" @@ -204,6 +216,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + [[package]] name = "proc-macro2" version = "1.0.24" @@ -222,6 +240,53 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + [[package]] name = "regex" version = "1.3.9" @@ -240,6 +305,15 @@ version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + [[package]] name = "simplelog" version = "0.8.0" @@ -268,6 +342,20 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "tempfile" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +dependencies = [ + "cfg-if", + "libc", + "rand", + "redox_syscall", + "remove_dir_all", + "winapi", +] + [[package]] name = "termcolor" version = "1.1.0" @@ -293,7 +381,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", - "wasi", + "wasi 0.10.0+wasi-snapshot-preview1", "winapi", ] @@ -303,6 +391,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.10.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index 58e0ed7..108e30d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,4 +13,7 @@ log = "0.4" simplelog = "0.8" chrono = "0.4" env_logger = "0.8" -derive_builder = "0.9" \ No newline at end of file +derive_builder = "0.9" + +[dev-dependencies] +tempfile = "3.1" \ No newline at end of file diff --git a/tests/delete_user_test.rs b/tests/delete_user_test.rs new file mode 100644 index 0000000..bc08727 --- /dev/null +++ b/tests/delete_user_test.rs @@ -0,0 +1,7 @@ +extern crate adduser; +mod testfiles; + +#[test] +fn test_test() { + assert_eq!(1, 1); +} diff --git a/tests/testfiles.rs b/tests/testfiles.rs new file mode 100644 index 0000000..ddf9a1f --- /dev/null +++ b/tests/testfiles.rs @@ -0,0 +1,46 @@ +use std::{env, path::Path}; +use std::{fs, path::PathBuf}; + +use tempfile::TempDir; + +use std::ops::Deref; + +struct Fixture { + path: PathBuf, + source: PathBuf, + _tempdir: TempDir, +} + +impl Fixture { + fn blank(fixture_filename: &str) -> Self { + // First, figure out the right file in `tests/fixtures/`: + let root_dir = &env::var("CARGO_MANIFEST_DIR").expect("$CARGO_MANIFEST_DIR"); + let mut source = PathBuf::from(root_dir); + source.push("tests/fixtures"); + source.push(&fixture_filename); + + // The "real" path of the file is going to be under a temporary directory: + let tempdir = tempfile::tempdir().unwrap(); + let mut path = PathBuf::from(&tempdir.path()); + path.push(&fixture_filename); + + Fixture { + _tempdir: tempdir, + source, + path, + } + } + fn copy(fixture_filename: &str) -> Self { + let fixture = Fixture::blank(fixture_filename); + fs::copy(&fixture.source, &fixture.path).unwrap(); + fixture + } +} + +impl Deref for Fixture { + type Target = Path; + + fn deref(&self) -> &Self::Target { + self.path.deref() + } +}