Skip to content

Commit

Permalink
add tests for #2606
Browse files Browse the repository at this point in the history
  • Loading branch information
Jorge Aparicio committed Apr 23, 2016
1 parent 1a6bad8 commit b484cd3
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
36 changes: 35 additions & 1 deletion tests/test_cargo_concurrent.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::env;
use std::{env, str};
use std::fs::{self, File};
use std::io::Write;
use std::net::TcpListener;
Expand All @@ -15,6 +15,12 @@ use test_cargo_install::{cargo_home, has_installed_exe};

fn setup() {}

fn pkg(name: &str, vers: &str) {
Package::new(name, vers)
.file("src/main.rs", "fn main() {{}}")
.publish();
}

test!(multiple_installs {
let p = project("foo")
.file("a/Cargo.toml", r#"
Expand Down Expand Up @@ -52,6 +58,34 @@ test!(multiple_installs {
assert_that(cargo_home(), has_installed_exe("bar"));
});

test!(concurrent_installs {
const LOCKED_BUILD: &'static str = "waiting for file lock on build directory";

pkg("foo", "0.0.1");
pkg("bar", "0.0.1");

let mut a = ::cargo_process().arg("install").arg("foo").build_command();
let mut b = ::cargo_process().arg("install").arg("bar").build_command();

a.stdout(Stdio::piped()).stderr(Stdio::piped());
b.stdout(Stdio::piped()).stderr(Stdio::piped());

let a = a.spawn().unwrap();
let b = b.spawn().unwrap();
let a = thread::spawn(move || a.wait_with_output().unwrap());
let b = b.wait_with_output().unwrap();
let a = a.join().unwrap();

assert!(!str::from_utf8(&a.stderr).unwrap().contains(LOCKED_BUILD));
assert!(!str::from_utf8(&b.stderr).unwrap().contains(LOCKED_BUILD));

assert_that(a, execs().with_status(0));
assert_that(b, execs().with_status(0));

assert_that(cargo_home(), has_installed_exe("foo"));
assert_that(cargo_home(), has_installed_exe("bar"));
});

test!(one_install_should_be_bad {
let p = project("foo")
.file("a/Cargo.toml", r#"
Expand Down
15 changes: 15 additions & 0 deletions tests/test_cargo_install.rs
Original file line number Diff line number Diff line change
Expand Up @@ -659,3 +659,18 @@ test!(q_silences_warnings {
assert_that(cargo_process("install").arg("-q").arg("--path").arg(p.root()),
execs().with_status(0).with_stderr(""));
});

test!(readonly_dir {
pkg("foo", "0.0.1");

let root = paths::root();
let dir = &root.join("readonly");
fs::create_dir(root.join("readonly")).unwrap();
let mut perms = fs::metadata(dir).unwrap().permissions();
perms.set_readonly(true);
fs::set_permissions(dir, perms).unwrap();

assert_that(cargo_process("install").arg("foo").cwd(dir),
execs().with_status(0));
assert_that(cargo_home(), has_installed_exe("foo"));
});

0 comments on commit b484cd3

Please sign in to comment.