Expect no longer crashes

This commit is contained in:
Joshua Hoeflich 2021-08-28 10:08:12 -05:00
parent 0ed013b928
commit 8fc663b735
4 changed files with 17 additions and 2 deletions

View file

@ -25,6 +25,9 @@ comptime {
@export(testing_roc_realloc, .{ .name = "roc_realloc", .linkage = .Strong });
@export(testing_roc_dealloc, .{ .name = "roc_dealloc", .linkage = .Strong });
@export(testing_roc_panic, .{ .name = "roc_panic", .linkage = .Strong });
@export(testing_roc_expect_failed, .{ .name = "roc_expect_failed", .linkage = .Strong });
} else {
@export(expect_failed, .{ .name = "roc_expect_failed", .linkage = .Strong });
}
}
@ -45,6 +48,16 @@ fn testing_roc_dealloc(c_ptr: *c_void, _: u32) callconv(.C) void {
std.testing.allocator.destroy(ptr);
}
fn testing_roc_expect_failed() callconv(.C) void {
const stderr = std.io.getStdErr().writer();
stderr.print("Expect failed inside test\n", .{}) catch unreachable;
}
fn expect_failed() callconv(.C) void {
const stderr = std.io.getStdErr().writer();
stderr.print("Expect failed outside test\n", .{}) catch unreachable;
}
fn testing_roc_panic(c_ptr: *c_void, tag_id: u32) callconv(.C) void {
_ = c_ptr;
_ = tag_id;

View file

@ -82,3 +82,4 @@ pub const DEC_MUL_WITH_OVERFLOW: &str = "roc_builtins.dec.mul_with_overflow";
pub const DEC_DIV: &str = "roc_builtins.dec.div";
pub const UTILS_TEST_PANIC: &str = "roc_builtins.utils.test_panic";
pub const EXPECT_FAILED: &str = "roc_expect_failed";

View file

@ -5175,8 +5175,9 @@ fn run_low_level<'a, 'ctx, 'env>(
bd.position_at_end(throw_block);
throw_exception(env, "assert failed!");
call_void_bitcode_fn(env, &[], bitcode::EXPECT_FAILED);
bd.build_unconditional_branch(then_block);
bd.position_at_end(then_block);
cond

View file

@ -2398,7 +2398,7 @@ fn call_invalid_layout() {
}
#[test]
#[should_panic(expected = "assert failed!")]
// #[should_panic(expected = "assert failed!")]
fn expect_fail() {
assert_evals_to!(
indoc!(