Skip to content

Commit fad8e45

Browse files
committed
---
yaml --- r: 95896 b: refs/heads/dist-snap c: b17d4e3 h: refs/heads/master v: v3
1 parent 549d443 commit fad8e45

File tree

75 files changed

+438
-222
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+438
-222
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: c274a6888410ce3e357e014568b43310ed787d36
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/dist-snap: 243c0dac8fe7e06125bad7b1f87a61794c8636f1
9+
refs/heads/dist-snap: b17d4e335db38db731581fca104212fa13e8776d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/mk/rt.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ endif
8484

8585
RUNTIME_CXXS_$(1)_$(2) := \
8686
rt/sync/lock_and_signal.cpp \
87-
rt/sync/rust_thread.cpp \
8887
rt/rust_builtin.cpp \
8988
rt/rust_upcall.cpp \
9089
rt/miniz.cpp \

branches/dist-snap/src/compiletest/compiletest.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,19 @@ pub fn mode_str(mode: mode) -> ~str {
220220
}
221221

222222
pub fn run_tests(config: &config) {
223+
if config.target == ~"arm-linux-androideabi" {
224+
match config.mode{
225+
mode_debug_info => {
226+
println("arm-linux-androideabi debug-info \
227+
test uses tcp 5039 port. please reserve it");
228+
//arm-linux-androideabi debug-info test uses remote debugger
229+
//so, we test 1 task at once
230+
os::setenv("RUST_TEST_TASKS","1");
231+
}
232+
_ =>{}
233+
}
234+
}
235+
223236
let opts = test_opts(config);
224237
let tests = make_tests(config);
225238
// sadly osx needs some file descriptor limits raised for running tests in

branches/dist-snap/src/compiletest/procsrv.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,26 @@ pub fn run(lib_path: &str,
6767
err: str::from_utf8(output.error)
6868
}
6969
}
70+
71+
pub fn run_background(lib_path: &str,
72+
prog: &str,
73+
args: &[~str],
74+
env: ~[(~str, ~str)],
75+
input: Option<~str>) -> run::Process {
76+
77+
let env = env + target_env(lib_path, prog);
78+
let mut process = run::Process::new(prog, args, run::ProcessOptions {
79+
env: Some(env),
80+
dir: None,
81+
in_fd: None,
82+
out_fd: None,
83+
err_fd: None
84+
});
85+
86+
for input in input.iter() {
87+
process.input().write(input.as_bytes());
88+
}
89+
90+
return process;
91+
}
92+

branches/dist-snap/src/compiletest/runtest.rs

Lines changed: 112 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ use std::rt::io::File;
2626
use std::os;
2727
use std::str;
2828
use std::vec;
29+
use std::rt::io::net::tcp;
30+
use std::rt::io::net::ip::{Ipv4Addr, SocketAddr};
31+
use std::task;
32+
use std::rt::io::timer;
2933

3034
use extra::test::MetricMap;
3135

@@ -245,6 +249,7 @@ actual:\n\
245249
}
246250

247251
fn run_debuginfo_test(config: &config, props: &TestProps, testfile: &Path) {
252+
248253
// do not optimize debuginfo tests
249254
let mut config = match config.rustcflags {
250255
Some(ref flags) => config {
@@ -254,39 +259,125 @@ fn run_debuginfo_test(config: &config, props: &TestProps, testfile: &Path) {
254259
None => (*config).clone()
255260
};
256261
let config = &mut config;
257-
let cmds = props.debugger_cmds.connect("\n");
258262
let check_lines = &props.check_lines;
263+
let mut cmds = props.debugger_cmds.connect("\n");
259264

260265
// compile test file (it shoud have 'compile-flags:-g' in the header)
261266
let mut ProcRes = compile_test(config, props, testfile);
262267
if ProcRes.status != 0 {
263268
fatal_ProcRes(~"compilation failed!", &ProcRes);
264269
}
265270

266-
// write debugger script
267-
let script_str = [~"set charset UTF-8",
268-
cmds,
269-
~"quit\n"].connect("\n");
270-
debug!("script_str = {}", script_str);
271-
dump_output_file(config, testfile, script_str, "debugger.script");
272-
273-
// run debugger script with gdb
274-
#[cfg(windows)]
275-
fn debugger() -> ~str { ~"gdb.exe" }
276-
#[cfg(unix)]
277-
fn debugger() -> ~str { ~"gdb" }
278-
let debugger_script = make_out_name(config, testfile, "debugger.script");
279271
let exe_file = make_exe_name(config, testfile);
280-
// FIXME (#9639): This needs to handle non-utf8 paths
281-
let debugger_opts = ~[~"-quiet", ~"-batch", ~"-nx",
282-
~"-command=" + debugger_script.as_str().unwrap().to_owned(),
283-
exe_file.as_str().unwrap().to_owned()];
284-
let ProcArgs = ProcArgs {prog: debugger(), args: debugger_opts};
285-
ProcRes = compose_and_run(config, testfile, ProcArgs, ~[], "", None);
272+
273+
let mut ProcArgs;
274+
match config.target {
275+
~"arm-linux-androideabi" => {
276+
if (config.adb_device_status) {
277+
278+
cmds = cmds.replace("run","continue");
279+
280+
// write debugger script
281+
let script_str = [~"set charset UTF-8",
282+
format!("file {}",exe_file.as_str().unwrap().to_owned()),
283+
~"target remote :5039",
284+
cmds,
285+
~"quit"].connect("\n");
286+
debug!("script_str = {}", script_str);
287+
dump_output_file(config, testfile, script_str, "debugger.script");
288+
289+
290+
procsrv::run("", config.adb_path.clone(),
291+
[~"push", exe_file.as_str().unwrap().to_owned(), config.adb_test_dir.clone()],
292+
~[(~"",~"")], Some(~""));
293+
294+
procsrv::run("", config.adb_path,
295+
[~"forward", ~"tcp:5039", ~"tcp:5039"],
296+
~[(~"",~"")], Some(~""));
297+
298+
let adb_arg = format!("export LD_LIBRARY_PATH={}; gdbserver :5039 {}/{}",
299+
config.adb_test_dir.clone(), config.adb_test_dir.clone(),
300+
str::from_utf8(exe_file.filename().unwrap())).clone();
301+
302+
let mut process = procsrv::run_background("", config.adb_path.clone(),
303+
[~"shell",adb_arg.clone()],~[(~"",~"")], Some(~""));
304+
loop {
305+
//waiting 1 second for gdbserver start
306+
timer::sleep(1000);
307+
let result = do task::try {
308+
tcp::TcpStream::connect(
309+
SocketAddr { ip: Ipv4Addr(127, 0, 0, 1), port: 5039 });
310+
};
311+
if result.is_err() {
312+
continue;
313+
}
314+
break;
315+
}
316+
317+
let args = split_maybe_args(&config.rustcflags);
318+
let mut tool_path:~str = ~"";
319+
for arg in args.iter() {
320+
if arg.contains("--android-cross-path=") {
321+
tool_path = arg.replace("--android-cross-path=","");
322+
break;
323+
}
324+
}
325+
326+
if tool_path.equals(&~"") {
327+
fatal(~"cannot found android cross path");
328+
}
329+
330+
let debugger_script = make_out_name(config, testfile, "debugger.script");
331+
// FIXME (#9639): This needs to handle non-utf8 paths
332+
let debugger_opts = ~[~"-quiet", ~"-batch", ~"-nx",
333+
"-command=" + debugger_script.as_str().unwrap().to_owned()];
334+
335+
let procsrv::Result{ out, err, status }=
336+
procsrv::run("",
337+
tool_path.append("/bin/arm-linux-androideabi-gdb"),
338+
debugger_opts, ~[(~"",~"")], None);
339+
let cmdline = {
340+
let cmdline = make_cmdline("", "arm-linux-androideabi-gdb", debugger_opts);
341+
logv(config, format!("executing {}", cmdline));
342+
cmdline
343+
};
344+
345+
ProcRes = ProcRes {status: status,
346+
stdout: out,
347+
stderr: err,
348+
cmdline: cmdline};
349+
process.force_destroy();
350+
}
351+
}
352+
353+
_=> {
354+
// write debugger script
355+
let script_str = [~"set charset UTF-8",
356+
cmds,
357+
~"quit\n"].connect("\n");
358+
debug!("script_str = {}", script_str);
359+
dump_output_file(config, testfile, script_str, "debugger.script");
360+
361+
// run debugger script with gdb
362+
#[cfg(windows)]
363+
fn debugger() -> ~str { ~"gdb.exe" }
364+
#[cfg(unix)]
365+
fn debugger() -> ~str { ~"gdb" }
366+
367+
let debugger_script = make_out_name(config, testfile, "debugger.script");
368+
369+
// FIXME (#9639): This needs to handle non-utf8 paths
370+
let debugger_opts = ~[~"-quiet", ~"-batch", ~"-nx",
371+
"-command=" + debugger_script.as_str().unwrap().to_owned(),
372+
exe_file.as_str().unwrap().to_owned()];
373+
ProcArgs = ProcArgs {prog: debugger(), args: debugger_opts};
374+
ProcRes = compose_and_run(config, testfile, ProcArgs, ~[], "", None);
375+
}
376+
}
377+
286378
if ProcRes.status != 0 {
287379
fatal(~"gdb failed to execute");
288380
}
289-
290381
let num_check_lines = check_lines.len();
291382
if num_check_lines > 0 {
292383
// Allow check lines to leave parts unspecified (e.g., uninitialized
@@ -834,7 +925,6 @@ fn _arm_exec_compiled_test(config: &config, props: &TestProps,
834925
for tv in args.args.iter() {
835926
runargs.push(tv.to_owned());
836927
}
837-
838928
procsrv::run("", config.adb_path, runargs, ~[(~"",~"")], Some(~""));
839929
840930
// get exitcode of result

branches/dist-snap/src/librustpkg/context.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,8 @@ pub fn flags_forbidden_for_cmd(flags: &RustcFlags,
252252
return true;
253253
}
254254

255-
if !cfgs.is_empty() && cmd != "build" && cmd != "install" {
256-
println("The --cfg option can only be used with the build or install commands.");
255+
if !cfgs.is_empty() && cmd != "build" && cmd != "install" && cmd != "test" {
256+
println("The --cfg option can only be used with the build, test, or install commands.");
257257
return true;
258258
}
259259

branches/dist-snap/src/librustpkg/tests.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2098,6 +2098,19 @@ fn test_rustpkg_test_failure_exit_status() {
20982098
}
20992099
}
21002100
2101+
#[test]
2102+
fn test_rustpkg_test_cfg() {
2103+
let foo_id = PkgId::new("foo");
2104+
let foo_workspace = create_local_package(&foo_id);
2105+
let foo_workspace = foo_workspace.path();
2106+
writeFile(&foo_workspace.join_many(["src", "foo-0.1", "test.rs"]),
2107+
"#[test] #[cfg(not(foobar))] fn f() { assert!('a' != 'a'); }");
2108+
let output = command_line_test([~"test", ~"--cfg", ~"foobar", ~"foo"],
2109+
foo_workspace);
2110+
let output_str = str::from_utf8(output.output);
2111+
assert!(output_str.contains("0 passed; 0 failed; 0 ignored; 0 measured"));
2112+
}
2113+
21012114
#[test]
21022115
fn test_rebuild_when_needed() {
21032116
let foo_id = PkgId::new("foo");

0 commit comments

Comments
 (0)