Skip to content

Commit d873708

Browse files
committed
Change regression testing suite to support running tests with cvc5.
This allows us to test against more than one solvers in the new backend (currently tested - cvc5, z3). This ensures that we don't invariably issue output that is solver specific, tying the new backend to a single solver by accident.
1 parent ce7e74c commit d873708

File tree

16 files changed

+36
-22
lines changed

16 files changed

+36
-22
lines changed
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11

22
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
3-
set(exclude_win_broken_tests -X winbug)
3+
set(exclude_win_broken_tests "-X;winbug")
44
else()
55
set(exclude_win_broken_tests "")
66
endif()
77

8-
add_test_pl_tests(
9-
"$<TARGET_FILE:cbmc> --validate-goto-model --validate-ssa-equation --slice-formula" ${exclude_win_broken_tests}
8+
add_test_pl_profile(
9+
"cbmc-incr-smt2-z3"
10+
"$<TARGET_FILE:cbmc> --incremental-smt2-solver 'z3 --smt2 -in' --validate-goto-model --validate-ssa-equation --slice-formula"
11+
"-C;${exclude_win_broken_tests};-s;new-smt-z3"
12+
"CORE"
13+
)
14+
15+
add_test_pl_profile(
16+
"cbmc-incr-smt2-cvc5"
17+
"$<TARGET_FILE:cbmc> --incremental-smt2-solver 'cvc5 --lang=smtlib2.6 --incremental' --validate-goto-model --validate-ssa-equation --slice-formula"
18+
"-C;${exclude_win_broken_tests};-s;new-smt-cvc5"
19+
"CORE"
1020
)

regression/cbmc-incr-smt2/bitvector-arithmetic-operators/overflow_behaviour.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
overflow_behaviour.c
3-
--incremental-smt2-solver 'z3 --smt2 -in' --trace
3+
--trace
44
\[main\.assertion\.1\] line \d+ Wrap-around to INT_MIN when adding to INT_MAX: SUCCESS
55
\[main\.assertion\.2\] line \d+ Wrap-around to INT_MAX when subtracting from INT_MIN: SUCCESS
66
\[main\.assertion\.3\] line \d+ INT_MAX minus INT_MIN equals -1: SUCCESS

regression/cbmc-incr-smt2/bitvector-arithmetic-operators/polynomial.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
polynomial.c
3-
--incremental-smt2-solver 'z3 --smt2 -in' --trace
3+
--trace
44
\[main\.assertion\.1\] line \d+ No negative solution: FAILURE
55
\[main\.assertion\.2\] line \d+ No positive solution: FAILURE
66
x=-8\ \(11111111 11111111 11111111 11111000\)

regression/cbmc-incr-smt2/bitvector-arithmetic-operators/simple_equation.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
simple_equation.c
3-
--incremental-smt2-solver 'z3 --smt2 -in' --trace --verbosity 10
3+
--trace --verbosity 10
44
\[main\.assertion\.1\] line \d+ a plus a always equals two times a: SUCCESS
55
\[main\.assertion\.2\] line \d+ a minus a always equals 0: SUCCESS
66
\[main\.assertion\.3\] line \d+ a plus its additive inverse equals 0: SUCCESS

regression/cbmc-incr-smt2/bitvector-arithmetic-operators/unsigned_behaviour.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
unsigned_behaviour.c
3-
--incremental-smt2-solver 'z3 --smt2 -in' --trace
3+
--trace
44
\[main\.assertion\.1\] line \d+ a plus b should be more than 27: FAILURE
55
\[main\.assertion\.2\] line \d+ a plus b should be more than 27: FAILURE
66
\[main\.assertion\.3\] line \d+ c plus d should be more than 27: FAILURE

regression/cbmc-incr-smt2/bitvector-bitwise-operators/bitwise.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
bitwise_ops.c
3-
--incremental-smt2-solver 'z3 --smt2 -in' --slice-formula
3+
--slice-formula
44
\[main\.assertion\.1\] line \d+ This is going to fail for bit-opposites: FAILURE
55
\[main\.assertion\.2\] line \d+ This is going to hold for all values != 0: SUCCESS
66
\[main\.assertion\.3\] line \d+ This is going to fail for the same value in A and B: FAILURE

regression/cbmc-incr-smt2/bitvector-bitwise-operators/shift_left.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
shift_left.c
3-
--incremental-smt2-solver 'z3 --smt2 -in' --slice-formula
3+
--slice-formula
44
\[main\.assertion\.1\] line \d Shifted result should be greater than one: FAILURE
55
^EXIT=10$
66
^SIGNAL=0$

regression/cbmc-incr-smt2/bitvector-bitwise-operators/shift_right.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ int main()
1010
{
1111
int first;
1212
uint8_t second;
13+
// This assumption is here in order to constrain the value the solver
14+
// can produce to just 128 so that we don't get test failures for different
15+
// values returned by different SMT solvers.
16+
__CPROVER_assume((second & 1) == 0);
1317

1418
int place;
1519
__CPROVER_assume(place >= 1);

regression/cbmc-incr-smt2/bitvector-bitwise-operators/shift_right.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
shift_right.c
3-
--incremental-smt2-solver 'z3 --smt2 -in' --slice-formula --trace
3+
--slice-formula --trace
44
\[main\.assertion\.1\] line \d+ Right shifting a uint with leftmost bit set is a logical shift: FAILURE
55
\[main\.assertion\.2\] line \d+ Right shifting a positive number has a lower bound of 0: SUCCESS
66
\[main\.assertion\.3\] line \d+ Right shifting a negative number has a lower bound value of -1: SUCCESS

regression/cbmc-incr-smt2/bitvector-flag-tests/div_by_zero.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
div_by_zero.c
3-
--incremental-smt2-solver 'z3 --smt2 -in' --div-by-zero-check --trace
3+
--div-by-zero-check --trace
44
\[main\.division-by-zero\.1\] line \d division by zero in x / y: FAILURE
55
\[main\.division-by-zero\.2\] line \d+ division by zero in x / z: SUCCESS
66
y=0

0 commit comments

Comments
 (0)