#!/usr/bin/expect
|
|
|
|
set SUGAR_EXECUTABLE $::env(SUGAR_EXECUTABLE)
|
|
set BUILD_NAME 001.
|
|
|
|
proc abort {reason} {
|
|
puts "test failed $reason"
|
|
exit 1
|
|
}
|
|
|
|
spawn -noecho $SUGAR_EXECUTABLE tests/001/exit-with-1.mol lex parse
|
|
expect {
|
|
error { abort "failed to parse" }
|
|
eof { abort "cannot find the main" }
|
|
main
|
|
}
|
|
expect eof
|
|
lassign [wait] pid spawnid os_error_flag value
|
|
if {$value != 0} {
|
|
abort "compiler crashed"
|
|
}
|
|
|
|
|
|
spawn -noecho $SUGAR_EXECUTABLE tests/001/exit-with-1.mol lex parse "/tmp/sugar.generated.$BUILD_NAME" generate assemble
|
|
expect {
|
|
error { abort "failed to compile" }
|
|
eof { abort "didn't run clang" }
|
|
clang
|
|
}
|
|
expect {
|
|
error { abort "failed to link" }
|
|
eof { abort "didn't run ld" }
|
|
ld
|
|
}
|
|
expect eof
|
|
lassign [wait] pid spawnid os_error_flag value
|
|
if {$value != 0} {
|
|
abort "compiler crashed"
|
|
}
|
|
|
|
spawn -noecho /tmp/sugar.generated.$BUILD_NAME
|
|
expect eof
|
|
lassign [wait] pid spawnid os_error_flag value
|
|
if {$value != 1} {
|
|
abort "executable didn't return exit code 1 but $value instead"
|
|
}
|