Skip to content

Conversation

@DyanB
Copy link
Contributor

@DyanB DyanB commented Nov 17, 2025

The test suite now supports purposeful failing tests:

New tests that now pass:
mmap-negative1.c
mmap-negative2.c

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases67
Number of Successes67
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chmod.cSuccessNone
Success
close.cSuccessNone
Success
doubleclose.cSuccessNone
Success
dupwrite.cSuccessNone
Success
fchmod.cSuccessNone
Success
fcntl.cSuccessNone
Success
fdatasync.cSuccessNone
Success
filetest.cSuccessNone
Success
filetest1000.cSuccessNone
Success
fstat.cSuccessNone
Success
fsync.cSuccessNone
Success
ioctl.cSuccessNone
Success
mkdir_rmdir.cSuccessNone
Success
open.cSuccessNone
Success
pread_pwrite.cSuccessNone
Success
printf.cSuccessNone
Success
readbytes.cSuccessNone
Success
readlink.cSuccessNone
Success
rename.cSuccessNone
Success
stat.cSuccessNone
Success
sync_file_range.cSuccessNone
Success
truncate.cSuccessNone
Success
unlinkat.cSuccessNone
Success
write.cSuccessNone
Success
writeloop.cSuccessNone
Success
writepartial.cSuccessNone
Success
Memory Tests
brk.cSuccessNone
Success
malloc.cSuccessNone
Success
memcpy.cSuccessNone
Success
mmap.cSuccessNone
Success
mmap_file.cSuccessNone
Success
mprotect.cSuccessNone
Success
sbrk.cSuccessNone
Success
shmtest.cSuccessNone
Success
Networking Tests
gethostname.cSuccessNone
Success
makepipe.cSuccessNone
Success
pipepong.cSuccessNone
Success
poll.cSuccessNone
Success
recvfrom-sendto.cSuccessNone
Success
simple_epoll.cSuccessNone
Success
socket.cSuccessNone
Success
socket_cloexec.cSuccessNone
Success
socketpair.cSuccessNone
Success
tcp_connect_single.cSuccessNone
Success
Process Tests
chain_thread.cSuccessNone
Success
exit.cSuccessNone
Success
forkexecv-arg.cSuccessNone
Success
forkexecv.cSuccessNone
Success
function-ptr.cSuccessNone
Success
getppid.cSuccessNone
Success
hello-arg.cSuccessNone
Success
hello.cSuccessNone
Success
longjmp.cSuccessNone
Success
noforkfiles.cSuccessNone
Success
sem_forks.cSuccessNone
Success
setsid.cSuccessNone
Success
thread-test.cSuccessNone
Success
thread.cSuccessNone
Success
wait.cSuccessNone
Success
waitpid_wnohang.cSuccessNone
Success
Signal Tests
alarm.cSuccessNone
Success
setitimer.cSuccessNone
Success
sigalrm.cSuccessNone
Success
sigchld.cSuccessNone
Success
signal-fork.cSuccessNone
Success
signal-simple.cSuccessNone
Success
sigprocmask.cSuccessNone
Success
Non Deterministic Tests

Summary

MetricCount
Total Test Cases41
Number of Successes41
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
Success
clock_gettime_highlevel.cSuccessNone
Success
clock_gettime_simple.cSuccessNone
Success
dup.cSuccessNone
Success
fchdir.cSuccessNone
Success
fstatfs.cSuccessNone
Success
getcwd.cSuccessNone
Success
read.cSuccessNone
Success
statfs.cSuccessNone
Success
Memory Tests
malloc_large.cSuccessNone
Success
mmap_complicated.cSuccessNone
Success
mmap_shared.cSuccessNone
Success
segfault.cSuccessNone
Success
shm.cSuccessNone
Success
vtable.cSuccessNone
Success
Networking Tests
dnstest.cSuccessNone
Success
getifaddrs.cSuccessNone
Success
pipe.cSuccessNone
Success
pipe2.cSuccessNone
Success
pipeinput.cSuccessNone
Success
pipeinput2.cSuccessNone
Success
pipeonestring.cSuccessNone
Success
pipewrite.cSuccessNone
Success
shutdown_fork.cSuccessNone
Success
simple-select.cSuccessNone
Success
socketepoll.cSuccessNone
Success
Process Tests
fork2malloc.cSuccessNone
Success
fork_simple.cSuccessNone
Success
forkandopen.cSuccessNone
Success
forkfiles.cSuccessNone
Success
forkmalloc.cSuccessNone
Success
forknodup.cSuccessNone
Success
getpid.cSuccessNone
Success
Signal Tests
signal.cSuccessNone
Success
signal_SIGCHLD.cSuccessNone
Success
signal_fork.cSuccessNone
Success
signal_int_thread.cSuccessNone
Success
signal_longjmp.cSuccessNone
Success
signal_nodefer.cSuccessNone
Success
signal_procmask.cSuccessNone
Success
signal_sa_mask.cSuccessNone
Success
Fail Tests

Summary

MetricCount
Total Test Cases3
Number of Successes2
Number of Failures1
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)1
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0

Test Results by Category

Test CaseStatusError TypeOutput
Memory Tests
mmap-negative1.cSuccessNone
Success
mmap-negative2.cSuccessNone
Success
Signal Tests
signal_resethand.cFailureFail_wasm_succeeded
=== FAILURE: Wasm succeeded when it should fail ===
Wasm output:
child send SIGINT
Signal 2 received! Handler is running...
After this, the handler will reset to default behavior.
child send SIGINT again
Terminated

Native failed with exit code -2:
child send SIGINT
Signal 2 received! Handler is running...
After this, the handler will reset to default behavior.
child send SIGINT again

@rennergade rennergade requested a review from drapl0n November 17, 2025 15:58
@rennergade
Copy link
Contributor

you need to change the path of signal_resethand so its still skipped now that its moved. We'll have someone else look into whats going on there.

m-hemmings
m-hemmings previously approved these changes Nov 17, 2025
Copy link
Member

@m-hemmings m-hemmings left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Most of my comments are cosmetic, looks good except for a few nits

native_success, native_output, native_retcode, native_error = compile_and_run_native(source_file, timeout_sec)

# If native compile failed, report and return
if native_error == "Failure_native_compiling":
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice early-abort. One thought: this means a fail-test doesn't expect compile errors. Fine, but maybe worth a note since it’s distinct from “expected failure = runtime failure,” not “compile must fail.”

return

# Compile and run WASM
wasm_file, compile_err = compile_c_to_wasm(source_file)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean. One tiny improvement: you might want to name the error more explicitly later (e.g., wasm_compile_error) to keep symmetry with native.

if isinstance(wasm_retcode, str):
wasm_failed = True # timeout or unknown_error means it failed
else:
wasm_failed = wasm_retcode != 0
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works, but I’d tighten it up in case later on someone forgets why string return codes mean “failed.”

handler.add_success(output_info)
elif not native_failed and not wasm_failed:
# Both succeeded when they should have failed
failure_info = (
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only suggestion: the block that builds failure_info is duplicated 3× here . A helper would de-duplicate and avoid future formatting drift.

"Output_mismatch": "C Compiler and Wasm Output mismatch",
"Fail_native_succeeded": "Fail Test: Native Succeeded (Should Fail)",
"Fail_wasm_succeeded": "Fail Test: Wasm Succeeded (Should Fail)",
"Fail_both_succeeded": "Fail Test: Both Native and Wasm Succeeded (Should Fail)"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, explicit, readable. Would be even nicer if you grouped these together with a comment like:

 Expected-failure test modes

@drapl0n
Copy link
Contributor

drapl0n commented Nov 17, 2025

Looks good. As Nick mentioned, just change the path of signal_resethand test in the skip list since it is failing.

@github-actions
Copy link
Contributor

End-to-End Test Report

Test Preview

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases68
Number of Successes68
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chmod.cSuccessNone
Success
close.cSuccessNone
Success
doubleclose.cSuccessNone
Success
dupwrite.cSuccessNone
Success
fchmod.cSuccessNone
Success
fcntl.cSuccessNone
Success
fdatasync.cSuccessNone
Success
filetest.cSuccessNone
Success
filetest1000.cSuccessNone
Success
fstat.cSuccessNone
Success
fsync.cSuccessNone
Success
ioctl.cSuccessNone
Success
mkdir_rmdir.cSuccessNone
Success
open.cSuccessNone
Success
pread_pwrite.cSuccessNone
Success
printf.cSuccessNone
Success
readbytes.cSuccessNone
Success
readlink.cSuccessNone
Success
rename.cSuccessNone
Success
stat.cSuccessNone
Success
sync_file_range.cSuccessNone
Success
truncate.cSuccessNone
Success
unlinkat.cSuccessNone
Success
write.cSuccessNone
Success
writeloop.cSuccessNone
Success
writepartial.cSuccessNone
Success
Memory Tests
brk.cSuccessNone
Success
malloc.cSuccessNone
Success
memcpy.cSuccessNone
Success
mmap.cSuccessNone
Success
mmap_file.cSuccessNone
Success
mprotect.cSuccessNone
Success
sbrk.cSuccessNone
Success
shmtest.cSuccessNone
Success
Networking Tests
gethostname.cSuccessNone
Success
makepipe.cSuccessNone
Success
pipepong.cSuccessNone
Success
poll.cSuccessNone
Success
recvfrom-sendto.cSuccessNone
Success
simple_epoll.cSuccessNone
Success
socket.cSuccessNone
Success
socket_cloexec.cSuccessNone
Success
socketpair.cSuccessNone
Success
tcp_connect_single.cSuccessNone
Success
Process Tests
chain_thread.cSuccessNone
Success
exit.cSuccessNone
Success
forkexecv-arg.cSuccessNone
Success
forkexecv.cSuccessNone
Success
function-ptr.cSuccessNone
Success
getppid.cSuccessNone
Success
hello-arg.cSuccessNone
Success
hello.cSuccessNone
Success
longjmp.cSuccessNone
Success
mutex.cSuccessNone
Success
noforkfiles.cSuccessNone
Success
sem_forks.cSuccessNone
Success
setsid.cSuccessNone
Success
thread-test.cSuccessNone
Success
thread.cSuccessNone
Success
wait.cSuccessNone
Success
waitpid_wnohang.cSuccessNone
Success
Signal Tests
alarm.cSuccessNone
Success
setitimer.cSuccessNone
Success
sigalrm.cSuccessNone
Success
sigchld.cSuccessNone
Success
signal-fork.cSuccessNone
Success
signal-simple.cSuccessNone
Success
sigprocmask.cSuccessNone
Success
Non Deterministic Tests

Summary

MetricCount
Total Test Cases41
Number of Successes41
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeOutput
File Tests
chdir_getcwd.cSuccessNone
Success
clock_gettime_highlevel.cSuccessNone
Success
clock_gettime_simple.cSuccessNone
Success
dup.cSuccessNone
Success
fchdir.cSuccessNone
Success
fstatfs.cSuccessNone
Success
getcwd.cSuccessNone
Success
read.cSuccessNone
Success
statfs.cSuccessNone
Success
Memory Tests
malloc_large.cSuccessNone
Success
mmap_complicated.cSuccessNone
Success
mmap_shared.cSuccessNone
Success
segfault.cSuccessNone
Success
shm.cSuccessNone
Success
vtable.cSuccessNone
Success
Networking Tests
dnstest.cSuccessNone
Success
getifaddrs.cSuccessNone
Success
pipe.cSuccessNone
Success
pipe2.cSuccessNone
Success
pipeinput.cSuccessNone
Success
pipeinput2.cSuccessNone
Success
pipeonestring.cSuccessNone
Success
pipewrite.cSuccessNone
Success
shutdown_fork.cSuccessNone
Success
simple-select.cSuccessNone
Success
socketepoll.cSuccessNone
Success
Process Tests
fork2malloc.cSuccessNone
Success
fork_simple.cSuccessNone
Success
forkandopen.cSuccessNone
Success
forkfiles.cSuccessNone
Success
forkmalloc.cSuccessNone
Success
forknodup.cSuccessNone
Success
getpid.cSuccessNone
Success
Signal Tests
signal.cSuccessNone
Success
signal_SIGCHLD.cSuccessNone
Success
signal_fork.cSuccessNone
Success
signal_int_thread.cSuccessNone
Success
signal_longjmp.cSuccessNone
Success
signal_nodefer.cSuccessNone
Success
signal_procmask.cSuccessNone
Success
signal_sa_mask.cSuccessNone
Success
Fail Tests

Summary

MetricCount
Total Test Cases2
Number of Successes1
Number of Failures1
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)1
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeOutput
Memory Tests
mmap-negative1.cSuccessNone
Success
mmap-negative2.cFailureFail_wasm_succeeded
=== FAILURE: Wasm succeeded when it should fail ===
Wasm output:

Native failed with exit code -11:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants