1 // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
16 use native::NativeTaskBuilder;
17 use std::io::{TempDir, Command, fs};
19 use std::task::TaskBuilder;
24 // If we're the child, make sure we were invoked correctly
25 let args = os::args();
26 if args.len() > 1 && args.get(1).as_slice() == "child" {
27 return assert_eq!(args.get(0).as_slice(), "mytest");
31 let (tx, rx) = channel();
32 TaskBuilder::new().native().spawn(proc() {
39 // If we're the parent, copy our own binary to a tempr directory, and then
40 // make it executable.
41 let dir = TempDir::new("mytest").unwrap();
42 let me = os::self_exe_name().unwrap();
43 let dest = dir.path().join(format!("mytest{}", os::consts::EXE_SUFFIX));
44 fs::copy(&me, &dest).unwrap();
46 // Append the temp directory to our own PATH.
47 let mut path = os::split_paths(os::getenv("PATH").unwrap_or(String::new()));
48 path.push(dir.path().clone());
49 let path = os::join_paths(path.as_slice()).unwrap();
51 Command::new("mytest").env("PATH", path.as_slice())