diff --git a/Cargo.lock b/Cargo.lock index 704e56d..24177a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -58,6 +58,8 @@ dependencies = [ "failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-term 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.17 (registry+https://github.com/rust-lang/crates.io-index)", "which 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "zip 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/binary-install/Cargo.toml b/binary-install/Cargo.toml index a525303..bf51cf1 100644 --- a/binary-install/Cargo.toml +++ b/binary-install/Cargo.toml @@ -7,6 +7,8 @@ curl = "0.4.13" failure = "0.1.2" flate2 = "1.0.2" slog = "2.3" +slog-term = "2.4" +slog-async = "2.3" tar = "0.4.16" which = "2.0.0" zip = "0.4.2" diff --git a/binary-install/tests/path.rs b/binary-install/tests/path.rs new file mode 100644 index 0000000..f6463c1 --- /dev/null +++ b/binary-install/tests/path.rs @@ -0,0 +1,70 @@ +extern crate binary_install; +#[macro_use] +extern crate slog; +extern crate slog_async; +extern crate slog_term; + +use binary_install::path::{bin_path, ensure_local_bin_dir, local_bin_path}; +use slog::Drain; +use std::path::Path; + +fn logger() -> slog::Logger { + let decorator = slog_term::TermDecorator::new().build(); + let drain = slog_term::FullFormat::new(decorator).build().fuse(); + let drain = slog_async::Async::new(drain).build().fuse(); + slog::Logger::root(drain, o!()) +} + +#[test] +fn it_should_get_local_bin_path() { + let crate_path = Path::new(""); + + let expected_path = Path::new("bin/wasm-bindgen"); + + let result = local_bin_path(crate_path, "wasm-bindgen"); + + assert_eq!(expected_path, result); +} + +#[test] +#[cfg(target_os = "windows")] +fn it_should_get_local_bin_path_with_exe_for_windows() { + let crate_path = Path::new(""); + + let expected_path = Path::new("bin/wasm-bindgen.exe"); + + let result = local_bin_path(crate_path, "wasm-bindgen"); + + assert_eq!(expected_path, result); +} + +#[test] +fn it_should_ensure_local_bin_dir_returns_ok_for_folder_that_exists() { + let crate_path = Path::new("random_folder"); + + let result = ensure_local_bin_dir(crate_path); + + assert!(result.is_ok()); +} + +#[test] +fn it_should_return_some_for_bin_path_that_exists() { + let crate_path = Path::new("/usr/bin"); + let bin = "ls"; + + let result = bin_path(&logger(), crate_path, bin); + let expected_bin = Path::new("/usr/bin/ls"); + + assert!(result.is_some()); + assert_eq!(result.unwrap(), expected_bin); +} + +#[test] +fn it_should_return_none_for_bin_path_that_does_not_exists() { + let crate_path = Path::new("random_folder"); + let bin = "wasm-bindgen"; + + let result = bin_path(&logger(), crate_path, bin); + + assert!(result.is_none()); +}