Skip to content

Commit b760ed6

Browse files
committed
auto merge of #10977 : brson/rust/androidtest, r=brson
#10975 For a while I thought the android test bot was succeeding but it wasn't really testing anything at all.
2 parents b4ed6f9 + 4a03e04 commit b760ed6

File tree

2 files changed

+98
-121
lines changed

2 files changed

+98
-121
lines changed

mk/tests.mk

+8-11
Original file line numberDiff line numberDiff line change
@@ -133,16 +133,13 @@ $(foreach target,$(CFG_TARGET), \
133133
$(if $(findstring $(target),"arm-linux-androideabi"), \
134134
$(if $(findstring adb,$(CFG_ADB)), \
135135
$(if $(findstring device,$(shell $(CFG_ADB) devices 2>/dev/null | grep -E '^[_A-Za-z0-9-]+[[:blank:]]+device')), \
136-
$(info check: $(target) test enabled \
137-
$(info check: android device attached) \
138-
$(eval $(call DEF_ADB_DEVICE_STATUS, true))), \
139-
$(info check: $(target) test disabled \
140-
$(info check: android device not attached) \
141-
$(eval $(call DEF_ADB_DEVICE_STATUS, false))) \
136+
$(info check: android device attached) \
137+
$(eval $(call DEF_ADB_DEVICE_STATUS, true)), \
138+
$(info check: android device not attached) \
139+
$(eval $(call DEF_ADB_DEVICE_STATUS, false)) \
142140
), \
143-
$(info check: $(target) test disabled \
144-
$(info check: adb not found) \
145-
$(eval $(call DEF_ADB_DEVICE_STATUS, false))) \
141+
$(info check: adb not found) \
142+
$(eval $(call DEF_ADB_DEVICE_STATUS, false)) \
146143
), \
147144
) \
148145
)
@@ -451,8 +448,8 @@ check-stage$(1)-T-$(2)-H-$(3)-$(4)-exec: $$(call TEST_OK_FILE,$(1),$(2),$(3),$(4
451448

452449
$$(call TEST_OK_FILE,$(1),$(2),$(3),$(4)): \
453450
$(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2))
454-
@$$(call E, run: skipped $$< )
455-
@touch $$@
451+
@$$(call E, failing: no device for $$< )
452+
false
456453
endef
457454

458455
$(foreach host,$(CFG_HOST), \

src/compiletest/runtest.rs

+90-110
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ use std::vec;
3737
use extra::test::MetricMap;
3838

3939
pub fn run(config: config, testfile: ~str) {
40+
41+
match config.target {
42+
43+
~"arm-linux-androideabi" => {
44+
if !config.adb_device_status {
45+
fail!("android device not available");
46+
}
47+
}
48+
49+
_=> { }
50+
}
51+
4052
let mut _mm = MetricMap::new();
4153
run_metrics(config, testfile, &mut _mm);
4254
}
@@ -99,20 +111,8 @@ fn run_rfail_test(config: &config, props: &TestProps, testfile: &Path) {
99111
fatal_ProcRes(~"run-fail test isn't valgrind-clean!", &ProcRes);
100112
}
101113
102-
match config.target {
103-
104-
~"arm-linux-androideabi" => {
105-
if (config.adb_device_status) {
106-
check_correct_failure_status(&ProcRes);
107-
check_error_patterns(props, testfile, &ProcRes);
108-
}
109-
}
110-
111-
_=> {
112-
check_correct_failure_status(&ProcRes);
113-
check_error_patterns(props, testfile, &ProcRes);
114-
}
115-
}
114+
check_correct_failure_status(&ProcRes);
115+
check_error_patterns(props, testfile, &ProcRes);
116116
}
117117
118118
fn check_correct_failure_status(ProcRes: &ProcRes) {
@@ -275,86 +275,86 @@ fn run_debuginfo_test(config: &config, props: &TestProps, testfile: &Path) {
275275
let mut ProcArgs;
276276
match config.target {
277277
~"arm-linux-androideabi" => {
278-
if (config.adb_device_status) {
279-
280-
cmds = cmds.replace("run","continue");
281-
282-
// write debugger script
283-
let script_str = [~"set charset UTF-8",
284-
format!("file {}",exe_file.as_str().unwrap().to_owned()),
285-
~"target remote :5039",
286-
cmds,
287-
~"quit"].connect("\n");
288-
debug!("script_str = {}", script_str);
289-
dump_output_file(config, testfile, script_str, "debugger.script");
290-
291-
292-
procsrv::run("", config.adb_path,
293-
[~"push", exe_file.as_str().unwrap().to_owned(), config.adb_test_dir.clone()],
294-
~[(~"",~"")], Some(~""))
295-
.expect(format!("failed to exec `{}`", config.adb_path));
296-
297-
procsrv::run("", config.adb_path,
298-
[~"forward", ~"tcp:5039", ~"tcp:5039"],
299-
~[(~"",~"")], Some(~""))
300-
.expect(format!("failed to exec `{}`", config.adb_path));
301-
302-
let adb_arg = format!("export LD_LIBRARY_PATH={}; gdbserver :5039 {}/{}",
303-
config.adb_test_dir.clone(), config.adb_test_dir.clone(),
304-
str::from_utf8(exe_file.filename().unwrap()));
305-
306-
let mut process = procsrv::run_background("", config.adb_path,
307-
[~"shell",adb_arg.clone()],~[(~"",~"")], Some(~""))
308-
.expect(format!("failed to exec `{}`", config.adb_path));
309-
loop {
310-
//waiting 1 second for gdbserver start
311-
timer::sleep(1000);
312-
let result = do task::try {
313-
tcp::TcpStream::connect(
314-
SocketAddr { ip: Ipv4Addr(127, 0, 0, 1), port: 5039 });
315-
};
316-
if result.is_err() {
317-
continue;
318-
}
319-
break;
320-
}
321278

322-
let args = split_maybe_args(&config.rustcflags);
323-
let mut tool_path:~str = ~"";
324-
for arg in args.iter() {
325-
if arg.contains("--android-cross-path=") {
326-
tool_path = arg.replace("--android-cross-path=","");
327-
break;
328-
}
329-
}
279+
cmds = cmds.replace("run","continue");
330280

331-
if tool_path.equals(&~"") {
332-
fatal(~"cannot found android cross path");
333-
}
281+
// write debugger script
282+
let script_str = [~"set charset UTF-8",
283+
format!("file {}",exe_file.as_str().unwrap().to_owned()),
284+
~"target remote :5039",
285+
cmds,
286+
~"quit"].connect("\n");
287+
debug!("script_str = {}", script_str);
288+
dump_output_file(config, testfile, script_str, "debugger.script");
334289

335-
let debugger_script = make_out_name(config, testfile, "debugger.script");
336-
// FIXME (#9639): This needs to handle non-utf8 paths
337-
let debugger_opts = ~[~"-quiet", ~"-batch", ~"-nx",
338-
"-command=" + debugger_script.as_str().unwrap().to_owned()];
339-
340-
let gdb_path = tool_path.append("/bin/arm-linux-androideabi-gdb");
341-
let procsrv::Result{ out, err, status }=
342-
procsrv::run("",
343-
gdb_path,
344-
debugger_opts, ~[(~"",~"")], None)
345-
.expect(format!("failed to exec `{}`", gdb_path));
346-
let cmdline = {
347-
let cmdline = make_cmdline("", "arm-linux-androideabi-gdb", debugger_opts);
348-
logv(config, format!("executing {}", cmdline));
349-
cmdline
290+
291+
procsrv::run("", config.adb_path,
292+
[~"push", exe_file.as_str().unwrap().to_owned(),
293+
config.adb_test_dir.clone()],
294+
~[(~"",~"")], Some(~""))
295+
.expect(format!("failed to exec `{}`", config.adb_path));
296+
297+
procsrv::run("", config.adb_path,
298+
[~"forward", ~"tcp:5039", ~"tcp:5039"],
299+
~[(~"",~"")], Some(~""))
300+
.expect(format!("failed to exec `{}`", config.adb_path));
301+
302+
let adb_arg = format!("export LD_LIBRARY_PATH={}; gdbserver :5039 {}/{}",
303+
config.adb_test_dir.clone(), config.adb_test_dir.clone(),
304+
str::from_utf8(exe_file.filename().unwrap()));
305+
306+
let mut process = procsrv::run_background("", config.adb_path,
307+
[~"shell",adb_arg.clone()],
308+
~[(~"",~"")], Some(~""))
309+
.expect(format!("failed to exec `{}`", config.adb_path));
310+
loop {
311+
//waiting 1 second for gdbserver start
312+
timer::sleep(1000);
313+
let result = do task::try {
314+
tcp::TcpStream::connect(
315+
SocketAddr { ip: Ipv4Addr(127, 0, 0, 1), port: 5039 });
350316
};
317+
if result.is_err() {
318+
continue;
319+
}
320+
break;
321+
}
322+
323+
let args = split_maybe_args(&config.rustcflags);
324+
let mut tool_path:~str = ~"";
325+
for arg in args.iter() {
326+
if arg.contains("--android-cross-path=") {
327+
tool_path = arg.replace("--android-cross-path=","");
328+
break;
329+
}
330+
}
351331

352-
ProcRes = ProcRes {status: status,
353-
stdout: out,
354-
stderr: err,
355-
cmdline: cmdline};
356-
process.force_destroy();
332+
if tool_path.equals(&~"") {
333+
fatal(~"cannot found android cross path");
357334
}
335+
336+
let debugger_script = make_out_name(config, testfile, "debugger.script");
337+
// FIXME (#9639): This needs to handle non-utf8 paths
338+
let debugger_opts = ~[~"-quiet", ~"-batch", ~"-nx",
339+
"-command=" + debugger_script.as_str().unwrap().to_owned()];
340+
341+
let gdb_path = tool_path.append("/bin/arm-linux-androideabi-gdb");
342+
let procsrv::Result{ out, err, status }=
343+
procsrv::run("",
344+
gdb_path,
345+
debugger_opts, ~[(~"",~"")], None)
346+
.expect(format!("failed to exec `{}`", gdb_path));
347+
let cmdline = {
348+
let cmdline = make_cmdline("", "arm-linux-androideabi-gdb", debugger_opts);
349+
logv(config, format!("executing {}", cmdline));
350+
cmdline
351+
};
352+
353+
ProcRes = ProcRes {status: status,
354+
stdout: out,
355+
stderr: err,
356+
cmdline: cmdline};
357+
process.force_destroy();
358358
}
359359

360360
_=> {
@@ -662,11 +662,7 @@ fn exec_compiled_test(config: &config, props: &TestProps,
662662
match config.target {
663663

664664
~"arm-linux-androideabi" => {
665-
if (config.adb_device_status) {
666-
_arm_exec_compiled_test(config, props, testfile, env)
667-
} else {
668-
_dummy_exec_compiled_test(config, props, testfile)
669-
}
665+
_arm_exec_compiled_test(config, props, testfile, env)
670666
}
671667

672668
_=> {
@@ -710,9 +706,7 @@ fn compose_and_run_compiler(
710706
match config.target {
711707

712708
~"arm-linux-androideabi" => {
713-
if (config.adb_device_status) {
714-
_arm_push_aux_shared_library(config, testfile);
715-
}
709+
_arm_push_aux_shared_library(config, testfile);
716710
}
717711

718712
_=> { }
@@ -992,20 +986,6 @@ fn _arm_exec_compiled_test(config: &config, props: &TestProps,
992986
}
993987
}
994988

995-
fn _dummy_exec_compiled_test(config: &config, props: &TestProps,
996-
testfile: &Path) -> ProcRes {
997-
998-
let args = make_run_args(config, props, testfile);
999-
let cmdline = make_cmdline("", args.prog, args.args);
1000-
1001-
match config.mode {
1002-
mode_run_fail => ProcRes {status: process::ExitStatus(101), stdout: ~"",
1003-
stderr: ~"", cmdline: cmdline},
1004-
_ => ProcRes {status: process::ExitStatus(0), stdout: ~"",
1005-
stderr: ~"", cmdline: cmdline}
1006-
}
1007-
}
1008-
1009989
fn _arm_push_aux_shared_library(config: &config, testfile: &Path) {
1010990
let tdir = aux_output_dir_name(config, testfile);
1011991

0 commit comments

Comments
 (0)