Add regression test for --assert-no-exceptions-thrown

This tests the option behaves as desired.
This commit is contained in:
Romain Brenguier 2019-09-18 16:19:37 +01:00
parent 2ed5dfd4c2
commit 7cdd2e2777
5 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,33 @@
class MyException extends Exception {}
public class Test {
public static int mayThrow(char branch) throws Throwable {
if (branch == 'n') {
throw new NullPointerException();
} else if (branch == 'c') {
throw new MyException();
} else if (branch == 't') {
throw new Throwable();
} else if (branch == 'r') {
return 2;
} else {
return 1;
}
}
public static void check(char branch) {
try {
int i = mayThrow(branch);
if (i == 2)
assert false;
if (i == 1)
assert false;
} catch (MyException e) {
assert false;
} catch (NullPointerException e) {
assert false;
} catch (Throwable e) {
assert false;
}
}
}

View File

@ -0,0 +1,14 @@
CORE
Test.class
--function Test.check
line 22 assertion at file Test.java line 22 .*: FAILURE
line 24 assertion at file Test.java line 24 .*: FAILURE
line 26 assertion at file Test.java line 26 .*: FAILURE
line 28 assertion at file Test.java line 28 .*: FAILURE
line 30 assertion at file Test.java line 30 .*: FAILURE
^EXIT=10$
^SIGNAL=0$
--
--
Checks that we get the expected behaviour when --assert-no-exceptions-thrown is
not used. This is to make sure that test.desc is actually testing what we wanted.

View File

@ -0,0 +1,18 @@
CORE
Test.class
--function Test.check --assert-no-exceptions-thrown
line 6 assertion at file Test.java line 6 .*: FAILURE
line 8 assertion at file Test.java line 8 .*: FAILURE
line 10 assertion at file Test.java line 10 .*: FAILURE
line 22 assertion at file Test.java line 22 .*: FAILURE
line 24 assertion at file Test.java line 24 .*: FAILURE
line 26 assertion at file Test.java line 26 .*: SUCCESS
line 28 assertion at file Test.java line 28 .*: SUCCESS
line 30 assertion at file Test.java line 30 .*: SUCCESS
^EXIT=10$
^SIGNAL=0$
--
--
Checks that the `throw` instructions have been replaced by assertions, which
are failing here because they are reachable, and assumptions which prevent
the last three assertions from failing.