提交 15e28984 编写于 作者: H Huon Wilson

Remove the dependence of std::io::test on rand.

This replaces it with a manual "task rng" using XorShift and a crappy
seeding mechanism. Theoretically good enough for the purposes
though (unique for tests).
上级 6fa4bbee
......@@ -12,10 +12,9 @@
#[macro_escape];
use libc;
use os;
use prelude::*;
use rand;
use rand::Rng;
use std::io::net::ip::*;
use sync::atomics::{AtomicUint, INIT_ATOMIC_UINT, Relaxed};
......@@ -65,10 +64,18 @@ pub fn next_test_port() -> u16 {
/// Get a temporary path which could be the location of a unix socket
pub fn next_test_unix() -> Path {
static mut COUNT: AtomicUint = INIT_ATOMIC_UINT;
// base port and pid are an attempt to be unique between multiple
// test-runners of different configurations running on one
// buildbot, the count is to be unique within this executable.
let string = format!("rust-test-unix-path-{}-{}-{}",
base_port(),
unsafe {libc::getpid()},
unsafe {COUNT.fetch_add(1, Relaxed)});
if cfg!(unix) {
os::tmpdir().join(rand::task_rng().gen_ascii_str(20))
os::tmpdir().join(string)
} else {
Path::new(r"\\.\pipe\" + rand::task_rng().gen_ascii_str(20))
Path::new(r"\\.\pipe\" + string)
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册