diff --git a/.envrc b/.envrc index be81fed..e3fecb3 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,2 @@ -eval "$(lorri direnv)" \ No newline at end of file +use flake + diff --git a/.gitignore b/.gitignore index 1c736be..f40ebe6 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ perf* flame* .gdb* + +.direnv/ + diff --git a/Cargo.lock b/Cargo.lock index f2451ca..5618939 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "ansi_term" version = "0.12.1" @@ -11,9 +13,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.40" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" +checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" [[package]] name = "atomicwrites" @@ -61,7 +63,7 @@ dependencies = [ "nix", "pretty_assertions", "proptest", - "rand 0.8.3", + "rand 0.8.4", "rayon", "reed-solomon", "rust-crypto", @@ -114,9 +116,9 @@ dependencies = [ [[package]] name = "bstr" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ "lazy_static", "memchr", @@ -126,9 +128,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.6.1" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" +checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" [[package]] name = "byteorder" @@ -144,18 +146,18 @@ checksum = "7b02b629252fe8ef6460461409564e2c21d0c8e77e0944f3d189ff06c4e932ad" [[package]] name = "cast" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57cdfa5d50aad6cb4d44dcab6101a7f79925bd59d82ca42f38a9856a28865374" +checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a" dependencies = [ "rustc_version", ] [[package]] name = "cc" -version = "1.0.67" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" [[package]] name = "cfg-if" @@ -182,25 +184,25 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.1.4" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" dependencies = [ "libc", ] [[package]] name = "criterion" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab327ed7354547cc2ef43cbe20ef68b988e70b4b593cbd66a2a61733123a3d23" +checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10" dependencies = [ "atty", "cast", "clap", "criterion-plot", "csv", - "itertools 0.10.0", + "itertools", "lazy_static", "num-traits", "oorandom", @@ -217,12 +219,12 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022feadec601fba1649cfa83586381a4ad31c6bf3a9ab7d408118b05dd9889d" +checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57" dependencies = [ "cast", - "itertools 0.9.0", + "itertools", ] [[package]] @@ -237,9 +239,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", @@ -248,9 +250,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" +checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -261,11 +263,10 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" +checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db" dependencies = [ - "autocfg", "cfg-if 1.0.0", "lazy_static", ] @@ -294,9 +295,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d" +checksum = "ccc0a48a9b826acdf4028595adc9db92caea352f7af011a3034acd172a52a0aa" dependencies = [ "quote", "syn", @@ -401,9 +402,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" dependencies = [ "cfg-if 1.0.0", "libc", @@ -418,15 +419,15 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "half" -version = "1.7.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "hermit-abi" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] @@ -439,33 +440,24 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "itertools" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319" +checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" dependencies = [ "either", ] [[package]] name = "itoa" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "js-sys" -version = "0.3.51" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" +checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" dependencies = [ "wasm-bindgen", ] @@ -478,9 +470,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.94" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" +checksum = "7b2f96d100e1cf1929e7719b7edb3b90ab5298072638fccd77be9ce942ecdfce" [[package]] name = "log" @@ -494,29 +486,30 @@ dependencies = [ [[package]] name = "memchr" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memoffset" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" +checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" dependencies = [ "autocfg", ] [[package]] name = "nix" -version = "0.20.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" +checksum = "f5e06129fb611568ef4e868c14b326274959aa70ff7776e9d55323531c374945" dependencies = [ "bitflags", "cc", "cfg-if 1.0.0", "libc", + "memoffset", ] [[package]] @@ -559,20 +552,11 @@ dependencies = [ "winapi", ] -[[package]] -name = "pest" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" -dependencies = [ - "ucd-trie", -] - [[package]] name = "plotters" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ca0ae5f169d0917a7c7f5a9c1a3d3d9598f18f529dd2b8373ed988efea307a" +checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a" dependencies = [ "num-traits", "plotters-backend", @@ -583,24 +567,24 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07fffcddc1cb3a1de753caa4e4df03b79922ba43cf882acc1bdd7e8df9f4590" +checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c" [[package]] name = "plotters-svg" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b38a02e23bd9604b842a812063aec4ef702b57989c37b655254bb61c471ad211" +checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9" dependencies = [ "plotters-backend", ] [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "c3ca011bd0129ff4ae15cd04c4eef202cadf6c51c21e47aba319b4e0501db741" [[package]] name = "pretty_assertions" @@ -616,9 +600,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.26" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" +checksum = "edc3358ebc67bc8b7fa0c007f945b0b18226f78437d61bec735a9eb96b61ee70" dependencies = [ "unicode-xid", ] @@ -635,8 +619,8 @@ dependencies = [ "lazy_static", "num-traits", "quick-error 2.0.1", - "rand 0.8.3", - "rand_chacha 0.3.0", + "rand 0.8.4", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -657,9 +641,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quote" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ "proc-macro2", ] @@ -702,14 +686,14 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" dependencies = [ "libc", - "rand_chacha 0.3.0", - "rand_core 0.6.2", - "rand_hc 0.3.0", + "rand_chacha 0.3.1", + "rand_core 0.6.3", + "rand_hc 0.3.1", ] [[package]] @@ -724,12 +708,12 @@ dependencies = [ [[package]] name = "rand_chacha" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.2", + "rand_core 0.6.3", ] [[package]] @@ -758,11 +742,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", ] [[package]] @@ -776,11 +760,11 @@ dependencies = [ [[package]] name = "rand_hc" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" dependencies = [ - "rand_core 0.6.2", + "rand_core 0.6.3", ] [[package]] @@ -789,14 +773,14 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.6.2", + "rand_core 0.6.3", ] [[package]] name = "rayon" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", "crossbeam-deque", @@ -806,9 +790,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -828,9 +812,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ "bitflags", ] @@ -852,12 +836,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" -dependencies = [ - "byteorder", -] +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" [[package]] name = "regex-syntax" @@ -895,9 +876,9 @@ checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" [[package]] name = "rustc_version" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] @@ -937,36 +918,24 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "semver" -version = "0.11.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" [[package]] name = "serde" -version = "1.0.126" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" dependencies = [ "serde_derive", ] [[package]] name = "serde_cbor" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" dependencies = [ "half", "serde", @@ -974,9 +943,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" dependencies = [ "proc-macro2", "quote", @@ -985,9 +954,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +checksum = "0f690853975602e1bfe1ccbf50504d67174e3bcf340f23b5ea9992e0587a52d8" dependencies = [ "itoa", "ryu", @@ -996,9 +965,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.5" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" +checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" dependencies = [ "block-buffer", "cfg-if 1.0.0", @@ -1009,9 +978,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.72" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" +checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194" dependencies = [ "proc-macro2", "quote", @@ -1026,7 +995,7 @@ checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" dependencies = [ "cfg-if 1.0.0", "libc", - "rand 0.8.3", + "rand 0.8.4", "redox_syscall", "remove_dir_all", "winapi", @@ -1043,18 +1012,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.24" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.24" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -1095,21 +1064,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.13.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" - -[[package]] -name = "ucd-trie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" +checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" @@ -1123,16 +1086,17 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.3", ] [[package]] name = "value-bag" -version = "1.0.0-alpha.6" +version = "1.0.0-alpha.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b676010e055c99033117c2343b33a40a30b91fecd6c49055ac9cd2d6c305ab1" +checksum = "dd320e1520f94261153e96f7534476ad869c14022aee1e59af7c778075d840ae" dependencies = [ "ctor", + "version_check", ] [[package]] @@ -1175,9 +1139,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.74" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" +checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" dependencies = [ "cfg-if 1.0.0", "serde", @@ -1187,9 +1151,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.74" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" +checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" dependencies = [ "bumpalo", "lazy_static", @@ -1202,9 +1166,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.74" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" +checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1212,9 +1176,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.74" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" +checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" dependencies = [ "proc-macro2", "quote", @@ -1225,15 +1189,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.74" +version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" +checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" [[package]] name = "web-sys" -version = "0.3.51" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" +checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/Cargo.toml b/Cargo.toml index 76e5f3f..415ece4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,8 @@ name = "bakare" version = "0.1.0" authors = ["Cyryl PÅ‚otnicki "] -edition = "2018" +edition = "2021" +rust-version = "1.56" license = "AGPL-3.0" description = "modern and simple, yet efficient backup solution" @@ -49,4 +50,4 @@ harness = false debug = 1 [features] -failpoints = [ "fail/failpoints" ] \ No newline at end of file +failpoints = [ "fail/failpoints" ] diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..fa71c19 --- /dev/null +++ b/flake.lock @@ -0,0 +1,127 @@ +{ + "nodes": { + "crate2nix": { + "flake": false, + "locked": { + "lastModified": 1634898841, + "narHash": "sha256-CZgjBo0rYeQHiIfnFD5wj9vmI/O24IaCT0yzPnW0FSQ=", + "owner": "kolloch", + "repo": "crate2nix", + "rev": "d8566765a23c5f8f8e50a726bb0db7957452b5e8", + "type": "github" + }, + "original": { + "owner": "kolloch", + "repo": "crate2nix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1634758644, + "narHash": "sha256-H3UW/msC6wadg28lcgZv2Ge/P7dWxesL6i37a0GOeyM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "70904d4a9927a4d6e05c72c4aaac4370e05107f3", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-21.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1628186154, + "narHash": "sha256-r2d0wvywFnL9z4iptztdFMhaUIAaGzrSs7kSok0PgmE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "06552b72346632b6943c8032e57e702ea12413bf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "crate2nix": "crate2nix", + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay", + "utils": "utils" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1634869268, + "narHash": "sha256-RVAcEFlFU3877Mm4q/nbXGEYTDg/wQNhzmXGMTV6wBs=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "c02c2d86354327317546501af001886fbb53d374", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "utils": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a7a07db --- /dev/null +++ b/flake.nix @@ -0,0 +1,95 @@ +{ + description = "A simple yet robust commandline random password generator."; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-21.05"; + utils.url = "github:numtide/flake-utils"; + rust-overlay.url = "github:oxalica/rust-overlay"; + crate2nix = { + url = "github:kolloch/crate2nix"; + flake = false; + }; + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; + }; + + outputs = { self, nixpkgs, utils, rust-overlay, crate2nix, ... }: + let + name = "bakare"; + rustChannel = "stable"; + in + utils.lib.eachDefaultSystem + (system: + let + # Imports + pkgs = import nixpkgs { + inherit system; + overlays = [ + rust-overlay.overlay + (self: super: { + # Because rust-overlay bundles multiple rust packages into one + # derivation, specify that mega-bundle here, so that crate2nix + # will use them automatically. + rustc = self.rust-bin.${rustChannel}.latest.default; + cargo = self.rust-bin.${rustChannel}.latest.default; + }) + ]; + }; + inherit (import "${crate2nix}/tools.nix" { inherit pkgs; }) + generatedCargoNix; + + # Create the cargo2nix project + project = pkgs.callPackage + (generatedCargoNix { + inherit name; + src = ./.; + }) + { + # Individual crate overrides go here + # Example: https://github.com/balsoft/simple-osd-daemons/blob/6f85144934c0c1382c7a4d3a2bbb80106776e270/flake.nix#L28-L50 + defaultCrateOverrides = pkgs.defaultCrateOverrides // { + # The himalaya crate itself is overriden here. Typically we + # configure non-Rust dependencies (see below) here. + ${name} = oldAttrs: { + inherit buildInputs nativeBuildInputs; + }; + }; + }; + + buildInputs = with pkgs; [ openssl.dev cacert openssh zlib ]; + nativeBuildInputs = with pkgs; [ rustc cargo pkgconfig git ]; + in + rec { + packages.${name} = project.rootCrate.build; + + # `nix build` + defaultPackage = packages.${name}; + + # `nix run` + apps.${name} = utils.lib.mkApp { + inherit name; + drv = packages.${name}; + }; + defaultApp = apps.${name}; + + # `nix develop` + devShell = pkgs.mkShell + { + inputsFrom = builtins.attrValues self.packages.${system}; + buildInputs = buildInputs ++ (with pkgs; + [ + nixpkgs-fmt + cargo-watch + cargo-edit + cargo-outdated + pkgs.rust-bin.${rustChannel}.latest.rust-analysis + pkgs.rust-bin.${rustChannel}.latest.rls + ]); + RUST_SRC_PATH = "${pkgs.rust-bin.${rustChannel}.latest.rust-src}/lib/rustlib/src/rust/library"; + }; + } + ); + } + diff --git a/shell.nix b/shell.nix index 139cec4..258f807 100644 --- a/shell.nix +++ b/shell.nix @@ -1,20 +1,14 @@ -let - moz_overlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz); - nixpkgs = import { overlays = [ moz_overlay ]; }; - channel = (nixpkgs.rustChannelOf { rustToolchain = ./rust-toolchain; }); -in - with nixpkgs; - stdenv.mkDerivation { - name = "bakare_shell"; - buildInputs = [ - channel.rust - linuxPackages.perf flamegraph cargo-flamegraph geeqie - cargo-edit cargo-udeps - cacert openssl openssh zlib - pkgconfig clang llvm kdbg lldb gdb - git - ]; - shellHook = '' - export RUST_SRC_PATH="${channel.rust-src}/lib/rustlib/src/rust/src" - ''; +(import +( + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + in + fetchTarball { + url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; } + ) + { + src = ./.; + }).shellNix + diff --git a/src/backup.rs b/src/backup.rs index a566504..3276178 100644 --- a/src/backup.rs +++ b/src/backup.rs @@ -29,7 +29,7 @@ impl<'a> Engine<'a> { for maybe_entry in walker { let entry = maybe_entry?; if entry.path() != self.source_path { - self.repository.store(&entry.path())?; + self.repository.store(entry.path())?; } } self.repository.save_index()?; diff --git a/src/index/io.rs b/src/index/io.rs index 2bbce60..7958a0a 100644 --- a/src/index/io.rs +++ b/src/index/io.rs @@ -144,7 +144,7 @@ mod must { let mut index = Index::new()?; let old_version = index.version; - index.save(&temp_dir.path())?; + index.save(temp_dir.path())?; let new_version = index.version; @@ -158,8 +158,8 @@ mod must { let repository_path = tempdir()?; let mut original = Index::new()?; - original.save(&repository_path.path())?; - let loaded = Index::load(&repository_path.path())?; + original.save(repository_path.path())?; + let loaded = Index::load(repository_path.path())?; assert_eq!(original, loaded); diff --git a/src/index/lock.rs b/src/index/lock.rs index 04951fe..ddb4ffd 100644 --- a/src/index/lock.rs +++ b/src/index/lock.rs @@ -21,6 +21,7 @@ const MAX_TIMEOUT_MILLIS: u16 = 8192; const FILE_EXTENSION: &str = ".lock"; impl Lock { + #[allow(clippy::self_named_constructors)] pub fn lock(index_directory: &Path) -> Result { Lock::lock_with_timeout(index_directory, MAX_TIMEOUT_MILLIS) } @@ -128,7 +129,7 @@ mod must { let temp_dir = tempdir()?; let initial_number_of_entries = temp_dir.path().read_dir()?.count(); { - let _lock = Lock::lock(&temp_dir.path())?; + let _lock = Lock::lock(temp_dir.path())?; } let entries = temp_dir.path().read_dir()?.count(); @@ -143,7 +144,7 @@ mod must { fail::cfg("create-lock-file", "90%10*return(some lock file creation error)->off").unwrap(); let temp_dir = tempdir().unwrap(); - let lock = Lock::lock(&temp_dir.path()).unwrap(); + let lock = Lock::lock(temp_dir.path()).unwrap(); lock.release().unwrap(); } } @@ -155,7 +156,7 @@ mod must { fail::cfg("create-lock-file", "return(persistent lock file creation error)").unwrap(); let temp_dir = tempdir().unwrap(); - assert!(Lock::lock_with_timeout(&temp_dir.path(), 1).is_err()); + assert!(Lock::lock_with_timeout(temp_dir.path(), 1).is_err()); } } } diff --git a/src/repository/mod.rs b/src/repository/mod.rs index cb3a120..04876b8 100644 --- a/src/repository/mod.rs +++ b/src/repository/mod.rs @@ -162,7 +162,7 @@ impl<'a> Repository { pub fn newest_items(&self) -> RepositoryItemIterator { RepositoryItemIterator { - repository: &self, + repository: self, iterator: self.index.newest_items(), } } @@ -174,7 +174,7 @@ impl<'a> Repository { let original_source_path = index_item.original_source_path(); let absolute_path = repository_path.join(relative_path); Ok(RepositoryItem::from( - &original_source_path, + original_source_path, &absolute_path, relative_path, index_item.id(), @@ -221,9 +221,9 @@ mod must { let file_size2 = 27; let source = TestSource::new()?; let repository_path = tempdir()?; - Repository::init(&repository_path.path())?; + Repository::init(repository_path.path())?; - let mut backup_repository = Repository::open(&repository_path.path())?; + let mut backup_repository = Repository::open(repository_path.path())?; source.write_random_bytes_to_file("file1", file_size1)?; backup_repository.store(&source.file_path("file1")?)?; diff --git a/src/test/assertions.rs b/src/test/assertions.rs index 64b78b6..c3cf791 100644 --- a/src/test/assertions.rs +++ b/src/test/assertions.rs @@ -20,28 +20,28 @@ pub mod in_memory { let repository_path = tempdir()?; let restore_target = tempdir()?; - Repository::init(&repository_path.path())?; + Repository::init(repository_path.path())?; { - let mut backup_repository = Repository::open(&repository_path.path())?; + let mut backup_repository = Repository::open(repository_path.path())?; let mut backup_engine = backup::Engine::new(source_path, &mut backup_repository)?; backup_engine.backup()?; } { - let mut restore_repository = Repository::open(&repository_path.path())?; + let mut restore_repository = Repository::open(repository_path.path())?; - let mut restore_engine = restore::Engine::new(&mut restore_repository, &restore_target.path())?; + let mut restore_engine = restore::Engine::new(&mut restore_repository, restore_target.path())?; restore_engine.restore_all()?; } - assert_directory_trees_have_same_contents(source_path, &restore_target.path())?; + assert_directory_trees_have_same_contents(source_path, restore_target.path())?; Ok(()) } pub fn assert_restored_file_contents(repository_path: &Path, source_file_full_path: &Path, contents: &[u8]) -> Result<()> { let mut restore_repository = Repository::open(repository_path)?; - let item = restore_repository.newest_item_by_source_path(&source_file_full_path)?; + let item = restore_repository.newest_item_by_source_path(source_file_full_path)?; let restore_target = tempdir()?; - let restore_engine = restore::Engine::new(&mut restore_repository, &restore_target.path())?; + let restore_engine = restore::Engine::new(&mut restore_repository, restore_target.path())?; restore_engine.restore(&item.unwrap())?; let source_file_relative_path = Path::new(source_file_full_path).strip_prefix("/")?; @@ -56,9 +56,9 @@ pub mod in_memory { old_id: &ItemId, ) -> Result<()> { let mut restore_repository = Repository::open(repository_path)?; - let old_item = restore_repository.item_by_id(&old_id)?; + let old_item = restore_repository.item_by_id(old_id)?; let restore_target = tempdir()?; - let restore_engine = restore::Engine::new(&mut restore_repository, &restore_target.path())?; + let restore_engine = restore::Engine::new(&mut restore_repository, restore_target.path())?; restore_engine.restore(&old_item.unwrap())?; let source_file_relative_path = Path::new(source_file_full_path).strip_prefix("/")?; let restored_file_path = restore_target.path().join(&source_file_relative_path); @@ -68,7 +68,7 @@ pub mod in_memory { pub fn newest_item(repository_path: &Path, source_file_full_path: &Path) -> Result { let item = { let reading_repository = Repository::open(repository_path)?; - let item = reading_repository.newest_item_by_source_path(&source_file_full_path)?; + let item = reading_repository.newest_item_by_source_path(source_file_full_path)?; assert!(item.is_some()); item.unwrap() }; @@ -78,7 +78,7 @@ pub mod in_memory { pub fn restore_all_from_reloaded_repository(repository_path: &Path, restore_target: &Path) -> Result<()> { { let mut restore_repository = Repository::open(repository_path)?; - let mut restore_engine = restore::Engine::new(&mut restore_repository, &restore_target)?; + let mut restore_engine = restore::Engine::new(&mut restore_repository, restore_target)?; restore_engine.restore_all()?; Ok(()) } @@ -114,7 +114,7 @@ pub mod in_memory { pub fn data_weight(repository_path: &Path) -> Result { { let repository = Repository::open(repository_path)?; - Ok(repository.data_weight()?) + repository.data_weight() } } diff --git a/src/test/source.rs b/src/test/source.rs index b2d9155..7827fb1 100644 --- a/src/test/source.rs +++ b/src/test/source.rs @@ -35,7 +35,7 @@ impl TestSource { } pub fn path(&self) -> &Path { - &self.directory.path() + self.directory.path() } pub fn file_path(&self, filename: &str) -> Result { diff --git a/tests/concurrency_tests.rs b/tests/concurrency_tests.rs index 23b7bbe..80f340a 100644 --- a/tests/concurrency_tests.rs +++ b/tests/concurrency_tests.rs @@ -34,7 +34,7 @@ mod must { assert!(data_weight(&repository_path)? > 0); let target_path = tempdir()?; - let all_restored_files = restore_all(&repository_path, &target_path.path())?; + let all_restored_files = restore_all(&repository_path, target_path.path())?; assert_eq!(all_restored_files.len(), total_number_of_files); assert_all_files_in_place(parallel_backups_number, files_per_backup_number, &all_restored_files)?; @@ -73,7 +73,7 @@ mod must { child_pids.push(child); } Ok(ForkResult::Child) => { - backup_process(*task_number, &repository_path, files_per_backup_number)?; + backup_process(*task_number, repository_path, files_per_backup_number)?; std::process::exit(0); } @@ -107,9 +107,9 @@ mod must { fn restore_all(repository_path: &Path, restore_target: &Path) -> Result> { let mut restore_repository = Repository::open(repository_path)?; - let mut restore_engine = restore::Engine::new(&mut restore_repository, &restore_target)?; + let mut restore_engine = restore::Engine::new(&mut restore_repository, restore_target)?; restore_engine.restore_all()?; - get_sorted_files_recursively(&restore_target) + get_sorted_files_recursively(restore_target) } fn setup_logger() { diff --git a/tests/deduplication_tests.rs b/tests/deduplication_tests.rs index ca3aa23..db961df 100644 --- a/tests/deduplication_tests.rs +++ b/tests/deduplication_tests.rs @@ -11,19 +11,19 @@ mod must { let source = TestSource::new().unwrap(); let dir = tempdir().unwrap(); let repository_path = dir.path(); - Repository::init(&repository_path).unwrap(); - assert_eq!(data_weight(&repository_path).unwrap(), 0); + Repository::init(repository_path).unwrap(); + assert_eq!(data_weight(repository_path).unwrap(), 0); - backup_file_with_byte_contents(&source, &repository_path, "1", &contents).unwrap(); - let first_weight = data_weight(&repository_path).unwrap(); + backup_file_with_byte_contents(&source, repository_path, "1", &contents).unwrap(); + let first_weight = data_weight(repository_path).unwrap(); assert!(first_weight > 0); - backup_file_with_byte_contents(&source, &repository_path, "2", &contents).unwrap(); - let second_weight = data_weight(&repository_path).unwrap(); + backup_file_with_byte_contents(&source, repository_path, "2", &contents).unwrap(); + let second_weight = data_weight(repository_path).unwrap(); assert_eq!(first_weight, second_weight); - assert_restored_file_contents(&repository_path, &source.file_path("1").unwrap(), &contents).unwrap(); - assert_restored_file_contents(&repository_path, &source.file_path("2").unwrap(), &contents).unwrap(); + assert_restored_file_contents(repository_path, &source.file_path("1").unwrap(), &contents).unwrap(); + assert_restored_file_contents(repository_path, &source.file_path("2").unwrap(), &contents).unwrap(); } } } diff --git a/tests/system_tests.rs b/tests/system_tests.rs index 09149b9..fbc8143 100644 --- a/tests/system_tests.rs +++ b/tests/system_tests.rs @@ -24,17 +24,17 @@ mod must { let repository_path = dir.path(); let restore_target = tempdir()?; - Repository::init(&repository_path)?; + Repository::init(repository_path)?; let source_file_relative_path = "some file path"; let original_contents = "some old contents"; - backup_file_with_text_contents(&source, &repository_path, source_file_relative_path, original_contents)?; + backup_file_with_text_contents(&source, repository_path, source_file_relative_path, original_contents)?; - restore_all_from_reloaded_repository(&repository_path, &restore_target.path())?; + restore_all_from_reloaded_repository(repository_path, restore_target.path())?; let source_file_full_path = &source.file_path(source_file_relative_path)?; - assert_restored_file_contents(&repository_path, source_file_full_path, original_contents.as_bytes()) + assert_restored_file_contents(repository_path, source_file_full_path, original_contents.as_bytes()) } #[test] @@ -42,21 +42,21 @@ mod must { let source = TestSource::new().unwrap(); let dir = tempdir()?; let repository_path = dir.path(); - Repository::init(&repository_path)?; + Repository::init(repository_path)?; let source_file_relative_path = "some path"; let source_file_full_path = source.file_path(source_file_relative_path)?; let old_contents = "some old contents"; - backup_file_with_text_contents(&source, &repository_path, source_file_relative_path, old_contents)?; + backup_file_with_text_contents(&source, repository_path, source_file_relative_path, old_contents)?; - let old_item = newest_item(&repository_path, &source_file_full_path)?; + let old_item = newest_item(repository_path, &source_file_full_path)?; let old_id = old_item.id(); let new_contents = "totally new contents"; - backup_file_with_text_contents(&source, &repository_path, source_file_relative_path, new_contents)?; + backup_file_with_text_contents(&source, repository_path, source_file_relative_path, new_contents)?; - assert_restored_from_version_has_contents(&repository_path, &source_file_full_path, old_contents.as_bytes(), &old_id) + assert_restored_from_version_has_contents(repository_path, &source_file_full_path, old_contents.as_bytes(), old_id) } #[test] @@ -64,19 +64,19 @@ mod must { let source = TestSource::new().unwrap(); let dir = tempdir()?; let repository_path = dir.path(); - Repository::init(&repository_path)?; + Repository::init(repository_path)?; let source_file_relative_path = "some path"; let source_file_full_path = source.file_path(source_file_relative_path)?; - backup_file_with_text_contents(&source, &repository_path, source_file_relative_path, "old")?; + backup_file_with_text_contents(&source, repository_path, source_file_relative_path, "old")?; - let old_item = newest_item(&repository_path, &source_file_full_path)?; + let old_item = newest_item(repository_path, &source_file_full_path)?; let old_version = old_item.version(); - backup_file_with_text_contents(&source, &repository_path, source_file_relative_path, "new")?; + backup_file_with_text_contents(&source, repository_path, source_file_relative_path, "new")?; - let new_item = newest_item(&repository_path, &source_file_full_path)?; + let new_item = newest_item(repository_path, &source_file_full_path)?; let new_version = new_item.version(); assert!(new_version > old_version); @@ -89,25 +89,25 @@ mod must { let source = TestSource::new().unwrap(); let dir = tempdir()?; let repository_path = dir.path(); - Repository::init(&repository_path)?; + Repository::init(repository_path)?; let source_file_relative_path = "some path"; - backup_file_with_text_contents(&source, &repository_path, source_file_relative_path, "old contents")?; - backup_file_with_text_contents(&source, &repository_path, source_file_relative_path, "newer contents")?; - backup_file_with_text_contents(&source, &repository_path, source_file_relative_path, "newest contents")?; + backup_file_with_text_contents(&source, repository_path, source_file_relative_path, "old contents")?; + backup_file_with_text_contents(&source, repository_path, source_file_relative_path, "newer contents")?; + backup_file_with_text_contents(&source, repository_path, source_file_relative_path, "newest contents")?; let source_file_full_path = &source.file_path(source_file_relative_path)?; - assert_restored_file_contents(&repository_path, source_file_full_path, b"newest contents") + assert_restored_file_contents(repository_path, source_file_full_path, b"newest contents") } #[test] fn forbid_backup_of_paths_within_repository() -> Result<()> { let dir = tempdir()?; let repository_path = dir.path(); - Repository::init(&repository_path)?; - let mut repository = Repository::open(&repository_path)?; + Repository::init(repository_path)?; + let mut repository = Repository::open(repository_path)?; - let error = backup::Engine::new(&repository_path, &mut repository); + let error = backup::Engine::new(repository_path, &mut repository); assert!(error.is_err()); Ok(()) }