Skip to content

Commit e22ce40

Browse files
committed
---
yaml --- r: 15463 b: refs/heads/try c: 39c5e06 h: refs/heads/master i: 15461: 39707a2 15459: 49998e1 15455: fff8498 v: v3
1 parent cbcc88d commit e22ce40

File tree

2 files changed

+34
-45
lines changed

2 files changed

+34
-45
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5-
refs/heads/try: 2955ecd13c3c49a8c17dd2d02fdc75e66b5097a4
5+
refs/heads/try: 39c5e06526b5af23ce471df8a99b9b6ad3db815d
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/try/src/libstd/test.rs

Lines changed: 33 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -102,44 +102,13 @@ type console_test_state =
102102
fn run_tests_console(opts: test_opts,
103103
tests: [test_desc]) -> bool {
104104

105-
let log_out = alt opts.logfile {
106-
some(path) {
107-
alt io::file_writer(path, [io::create, io::truncate]) {
108-
result::ok(w) { some(w) }
109-
result::err(s) {
110-
fail(#fmt("can't open output file: %s", s))
111-
}
112-
}
113-
}
114-
none { none }
115-
};
116-
117-
let st =
118-
@{out: io::stdout(),
119-
log_out: log_out,
120-
use_color: use_color(),
121-
mut total: 0u,
122-
mut passed: 0u,
123-
mut failed: 0u,
124-
mut ignored: 0u,
125-
mut failures: []};
126-
127-
let p = comm::port::<testevent>();
128-
let reporter = comm::chan(p);
129-
130-
task::spawn {||
131-
run_tests(opts, tests, reporter);
132-
};
133-
134-
while true {
135-
alt comm::recv(p) {
105+
fn callback(event: testevent, st: console_test_state) {
106+
alt event {
136107
te_filtered(filtered_tests) {
137108
st.total = vec::len(filtered_tests);
138109
st.out.write_line(#fmt["\nrunning %u tests", st.total]);
139110
}
140-
te_wait(test) {
141-
st.out.write_str(#fmt["test %s ... ", test.name]);
142-
}
111+
te_wait(test) { st.out.write_str(#fmt["test %s ... ", test.name]); }
143112
te_result(test, result) {
144113
alt st.log_out {
145114
some(f) {
@@ -166,12 +135,33 @@ fn run_tests_console(opts: test_opts,
166135
}
167136
}
168137
}
169-
te_done {
170-
break;
171-
}
172138
}
173139
}
174140

141+
let log_out = alt opts.logfile {
142+
some(path) {
143+
alt io::file_writer(path, [io::create, io::truncate]) {
144+
result::ok(w) { some(w) }
145+
result::err(s) {
146+
fail(#fmt("can't open output file: %s", s))
147+
}
148+
}
149+
}
150+
none { none }
151+
};
152+
153+
let st =
154+
@{out: io::stdout(),
155+
log_out: log_out,
156+
use_color: use_color(),
157+
mut total: 0u,
158+
mut passed: 0u,
159+
mut failed: 0u,
160+
mut ignored: 0u,
161+
mut failures: []};
162+
163+
run_tests(opts, tests, bind callback(_, st));
164+
175165
assert (st.passed + st.failed + st.ignored == st.total);
176166
let success = st.failed == 0u;
177167

@@ -181,6 +171,7 @@ fn run_tests_console(opts: test_opts,
181171

182172
st.out.write_str(#fmt["\nresult: "]);
183173
if success {
174+
// There's no parallelism at this point so it's safe to use color
184175
write_ok(st.out, true);
185176
} else { write_failed(st.out, true); }
186177
st.out.write_str(#fmt[". %u passed; %u failed; %u ignored\n\n", st.passed,
@@ -273,16 +264,15 @@ enum testevent {
273264
te_filtered([test_desc]),
274265
te_wait(test_desc),
275266
te_result(test_desc, test_result),
276-
te_done,
277267
}
278268

279269
type monitor_msg = (test_desc, test_result);
280270

281271
fn run_tests(opts: test_opts, tests: [test_desc],
282-
reporter: comm::chan<testevent>) {
272+
callback: fn@(testevent)) {
283273

284274
let mut filtered_tests = filter_tests(opts, tests);
285-
comm::send(reporter, te_filtered(filtered_tests));
275+
callback(te_filtered(filtered_tests));
286276

287277
// It's tempting to just spawn all the tests at once, but since we have
288278
// many tests that run in other processes we would be making a big mess.
@@ -304,7 +294,7 @@ fn run_tests(opts: test_opts, tests: [test_desc],
304294
// We are doing one test at a time so we can print the name
305295
// of the test before we run it. Useful for debugging tests
306296
// that hang forever.
307-
comm::send(reporter, te_wait(test));
297+
callback(te_wait(test));
308298
}
309299
run_test(test, ch);
310300
wait_idx += 1u;
@@ -313,13 +303,12 @@ fn run_tests(opts: test_opts, tests: [test_desc],
313303

314304
let (test, result) = comm::recv(p);
315305
if concurrency != 1u {
316-
comm::send(reporter, te_wait(test));
306+
callback(te_wait(test));
317307
}
318-
comm::send(reporter, te_result(test, result));
308+
callback(te_result(test, result));
319309
wait_idx -= 1u;
320310
done_idx += 1u;
321311
}
322-
comm::send(reporter, te_done);
323312
}
324313

325314
// Windows tends to dislike being overloaded with threads.

0 commit comments

Comments
 (0)