Skip to content

Commit

Permalink
Merge pull request #1178 from fitzgen/issue-1167
Browse files Browse the repository at this point in the history
Some wasm-bindgen-test runtime fixes
  • Loading branch information
alexcrichton authored Jan 14, 2019
2 parents 666c1e4 + f2cbbb8 commit 1526d18
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 39 deletions.
22 changes: 14 additions & 8 deletions crates/cli/src/bin/wasm-bindgen-test-runner/index-headless.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,30 @@
logs.innerHTML += `${msg}\n`;
}
};

const orig_console_error = function(...args) {
const logs = document.getElementById('console_error');
for (let msg of args) {
logs.innerHTML += `${msg}\n`;
}
};

console.log = function(...args) {
if (window.console_log_redirect)
window.console_log_redirect(orig_console_log, args);
else
orig_console_log.apply(this, args);
if (window.on_console_log) {
window.on_console_log(args);
}

orig_console_log.apply(this, args);
};

console.error = function(...args) {
if (window.console_error_redirect)
window.console_error_redirect(orig_console_error, args);
else
orig_console_error.apply(this, args);
if (window.on_console_error) {
window.on_console_error(args);
}

orig_console_error.apply(this, args);
};

window.__wbg_test_invoke = f => f();
</script>
<script src='run.js' type=module></script>
Expand Down
24 changes: 14 additions & 10 deletions crates/cli/src/bin/wasm-bindgen-test-runner/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,21 @@
<script>
const orig_console_log = console.log;
const orig_console_error = console.error;
console.log = function() {
if (window.console_log_redirect)
window.console_log_redirect(orig_console_log, arguments);
else
orig_console_log.apply(this, arguments);

console.log = function(...args) {
if (window.on_console_log) {
window.on_console_log(args);
}

orig_console_log.apply(this, args);
};
console.error = function() {
if (window.console_error_redirect)
window.console_error_redirect(orig_console_error, arguments);
else
orig_console_error.apply(this, arguments);

console.error = function(...args) {
if (window.on_console_error) {
window.on_console_error(args);
}

orig_console_error.apply(this, args);
};

window.__wbg_test_invoke = f => f();
Expand Down
22 changes: 10 additions & 12 deletions crates/cli/src/bin/wasm-bindgen-test-runner/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,25 @@ pub fn execute(
r#"
const {{ exit }} = require('process');
let console_log_redirect = null;
let console_error_redirect = null;
let on_console_log = null;
let on_console_error = null;
// override `console.log` and `console.error` before we import tests to
// ensure they're bound correctly in wasm. This'll allow us to intercept
// all these calls and capture the output of tests
const prev_log = console.log;
console.log = function(...args) {{
if (console_log_redirect === null) {{
prev_log.apply(null, args);
}} else {{
console_log_redirect(prev_log, args);
if (on_console_log) {{
on_console_log(args);
}}
prev_log.apply(null, args);
}};
const prev_error = console.error;
console.error = function(...args) {{
if (console_error_redirect === null) {{
prev_error.apply(null, args);
}} else {{
console_error_redirect(prev_error, args);
if (on_console_error) {{
on_console_error(args);
}}
prev_error.apply(null, args);
}};
global.__wbg_test_invoke = f => f();
Expand All @@ -46,8 +44,8 @@ pub fn execute(
const wasm = require("./{0}_bg");
cx = new support.Context();
console_log_redirect = support.__wbgtest_console_log;
console_error_redirect = support.__wbgtest_console_error;
on_console_log = support.__wbgtest_console_log;
on_console_error = support.__wbgtest_console_error;
// Forward runtime arguments. These arguments are also arguments to the
// `wasm-bindgen-test-runner` which forwards them to node which we
Expand Down
4 changes: 2 additions & 2 deletions crates/cli/src/bin/wasm-bindgen-test-runner/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ pub fn spawn(
await wasm.booted;
const cx = new Context();
window.console_log_redirect = __wbgtest_console_log;
window.console_error_redirect = __wbgtest_console_error;
window.on_console_log = __wbgtest_console_log;
window.on_console_error = __wbgtest_console_error;
// Forward runtime arguments. These arguments are also arguments to the
// `wasm-bindgen-test-runner` which forwards them to node which we
Expand Down
4 changes: 3 additions & 1 deletion crates/test/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ macro_rules! console_log {
///
/// This macro is invoked as:
///
/// wasm_bindgen_test_configure!(foo bar baz);
/// ```ignore
/// wasm_bindgen_test_configure!(foo bar baz);
/// ```
///
/// where all of `foo`, `bar`, and `baz`, would be recognized options to this
/// macro. The currently known options to this macro are:
Expand Down
11 changes: 5 additions & 6 deletions crates/test/src/rt/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -305,21 +305,20 @@ scoped_thread_local!(static CURRENT_OUTPUT: RefCell<Output>);
// attach it to. The main `test` crate in the rust repo also has issues about
// how not all output is captured, causing some inconsistencies sometimes.
#[wasm_bindgen]
pub fn __wbgtest_console_log(original: &Function, args: &Array) {
record(original, args, |output| &mut output.log)
pub fn __wbgtest_console_log(args: &Array) {
record(args, |output| &mut output.log)
}

/// Handler for `console.error` invocations.
///
/// Works the same as `console_log` above.
#[wasm_bindgen]
pub fn __wbgtest_console_error(original: &Function, args: &Array) {
record(original, args, |output| &mut output.error)
pub fn __wbgtest_console_error(args: &Array) {
record(args, |output| &mut output.error)
}

fn record(orig: &Function, args: &Array, dst: impl FnOnce(&mut Output) -> &mut String) {
fn record(args: &Array, dst: impl FnOnce(&mut Output) -> &mut String) {
if !CURRENT_OUTPUT.is_set() {
drop(orig.apply(&JsValue::null(), args));
return;
}

Expand Down

0 comments on commit 1526d18

Please sign in to comment.