diff --git a/test/error/default_nettype_invalid.sv b/test/error/default_nettype_invalid.sv index 196fd46..5352b72 100644 --- a/test/error/default_nettype_invalid.sv +++ b/test/error/default_nettype_invalid.sv @@ -1,3 +1,4 @@ +// pattern: bad default_nettype: "invalid" `default_nettype invalid module top; assign foo = 0; diff --git a/test/error/default_nettype_none.sv b/test/error/default_nettype_none.sv index e5e5cae..a2ef735 100644 --- a/test/error/default_nettype_none.sv +++ b/test/error/default_nettype_none.sv @@ -1,3 +1,4 @@ +// pattern: implicit declaration of "foo" but default_nettype is none `default_nettype none module top; assign foo = 0; diff --git a/test/error/enum_conflict.sv b/test/error/enum_conflict.sv index 1023842..a512498 100644 --- a/test/error/enum_conflict.sv +++ b/test/error/enum_conflict.sv @@ -1,3 +1,4 @@ +// pattern: enum conversion has duplicate vals module top; typedef enum { A = 0, diff --git a/test/error/highz0_highz1.sv b/test/error/highz0_highz1.sv index 385453b..5122776 100644 --- a/test/error/highz0_highz1.sv +++ b/test/error/highz0_highz1.sv @@ -1,3 +1,4 @@ +// pattern: unexpected token 'highz1' module top; wire (highz0, highz1) x; endmodule diff --git a/test/error/lhs_expr.sv b/test/error/lhs_expr.sv index 0ae5cd9..59313b9 100644 --- a/test/error/lhs_expr.sv +++ b/test/error/lhs_expr.sv @@ -1,3 +1,4 @@ +// pattern: cannot convert expression to LHS module top; logic x; assign {<< {x, 2'b00}} = 3'b101; diff --git a/test/error/lhs_pattern.sv b/test/error/lhs_pattern.sv index dceb913..70ac612 100644 --- a/test/error/lhs_pattern.sv +++ b/test/error/lhs_pattern.sv @@ -1,3 +1,4 @@ +// pattern: cannot convert expression to LHS module top; logic x, y, z; assign {<< {x, '{y:y, z:z}}} = 3'b101; diff --git a/test/error/missing_include.sv b/test/error/missing_include.sv index 3ae2df0..13a1873 100644 --- a/test/error/missing_include.sv +++ b/test/error/missing_include.sv @@ -1 +1,2 @@ +// pattern: Could not find file "does_not_exist\.sv", included from "missing_include\.sv" `include "does_not_exist.sv" diff --git a/test/error/run.sh b/test/error/run.sh index 0cca832..fb7a478 100755 --- a/test/error/run.sh +++ b/test/error/run.sh @@ -1,10 +1,25 @@ #!/bin/bash +validateOutput() { + stdout_len=`wc -l < $SHUNIT_TMPDIR/stdout` + assertEquals "stdout should be empty" 0 $stdout_len + stderr=`cat $SHUNIT_TMPDIR/stderr` + assertNotNull "stderr should not be empty" "$stderr" + line=`head -n1 $1` + if [[ "$line" =~ \/\/\ pattern:\ .* ]]; then + pattern=${line:12} + if [[ ! "$stderr" =~ $pattern ]]; then + fail "error message doesn't match\nexpected: $pattern\nactual: $stderr" + fi + fi +} + addTest() { test=$1 eval "test_$test() { \ - $SV2V $test.sv 2> /dev/null > /dev/null; \ + $SV2V $test.sv 2> $SHUNIT_TMPDIR/stderr > $SHUNIT_TMPDIR/stdout; \ assertFalse \"conversion should have failed\" \$?; \ + validateOutput $test.sv; \ }" suite_addTest test_$test } diff --git a/test/error/undefined_macro.sv b/test/error/undefined_macro.sv index a6ec448..395c3cb 100644 --- a/test/error/undefined_macro.sv +++ b/test/error/undefined_macro.sv @@ -1,3 +1,4 @@ +// pattern: Undefined macro: SOMETHING `SOMETHING module top; endmodule diff --git a/test/error/unmatched_endif.sv b/test/error/unmatched_endif.sv index 1d53b92..0e507c7 100644 --- a/test/error/unmatched_endif.sv +++ b/test/error/unmatched_endif.sv @@ -1 +1,2 @@ +// pattern: `endif directive outside of an `if/`endif block `endif