Add regression tests for fixed crashes (#2379)
The invalid code in Trac tickets #8750, #8753, #8756, #8762, #8764 and #8765 previously crashed cppcheck. Now it throws a syntax error instead. Add some tests for these tickets.
This commit is contained in:
parent
130ebe4b85
commit
f6a2034a4c
|
@ -238,6 +238,12 @@ private:
|
||||||
TEST_CASE(garbageCode204);
|
TEST_CASE(garbageCode204);
|
||||||
TEST_CASE(garbageCode205);
|
TEST_CASE(garbageCode205);
|
||||||
TEST_CASE(garbageCode206);
|
TEST_CASE(garbageCode206);
|
||||||
|
TEST_CASE(garbageCode207); // #8750
|
||||||
|
TEST_CASE(garbageCode208); // #8753
|
||||||
|
TEST_CASE(garbageCode209); // #8756
|
||||||
|
TEST_CASE(garbageCode210); // #8762
|
||||||
|
TEST_CASE(garbageCode211); // #8764
|
||||||
|
TEST_CASE(garbageCode212); // #8765
|
||||||
|
|
||||||
TEST_CASE(garbageCodeFuzzerClientMode1); // test cases created with the fuzzer client, mode 1
|
TEST_CASE(garbageCodeFuzzerClientMode1); // test cases created with the fuzzer client, mode 1
|
||||||
|
|
||||||
|
@ -1631,6 +1637,30 @@ private:
|
||||||
ASSERT_EQUALS("[test.cpp:1] syntax error: operator", getSyntaxError("void foo() { for (a operator== :) }"));
|
ASSERT_EQUALS("[test.cpp:1] syntax error: operator", getSyntaxError("void foo() { for (a operator== :) }"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void garbageCode207() { // #8750
|
||||||
|
ASSERT_THROW(checkCode("d f(){(.n00e0(return%n00e0''('')));}"), InternalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
void garbageCode208() { // #8753
|
||||||
|
ASSERT_THROW(checkCode("d f(){(for(((((0{t b;((((((((()))))))))}))))))}"), InternalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
void garbageCode209() { // #8756
|
||||||
|
ASSERT_THROW(checkCode("{(- -##0xf/-1 0)[]}"), InternalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
void garbageCode210() { // #8762
|
||||||
|
ASSERT_THROW(checkCode("{typedef typedef c n00e0[]c000(;n00e0&c000)}"), InternalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
void garbageCode211() { // #8764
|
||||||
|
ASSERT_THROW(checkCode("{typedef f typedef[]({typedef e e,>;typedef(((typedef<typedef|)))})}"), InternalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
void garbageCode212() { // #8765
|
||||||
|
ASSERT_THROW(checkCode("{(){}[]typedef r n00e0[](((n00e0 0((;()))))){(0 typedef n00e0 bre00 n00e0())}[]();typedef n n00e0()[],(bre00)}"), InternalError);
|
||||||
|
}
|
||||||
|
|
||||||
void syntaxErrorFirstToken() {
|
void syntaxErrorFirstToken() {
|
||||||
ASSERT_THROW(checkCode("&operator(){[]};"), InternalError); // #7818
|
ASSERT_THROW(checkCode("&operator(){[]};"), InternalError); // #7818
|
||||||
ASSERT_THROW(checkCode("*(*const<> (size_t); foo) { } *(*const (size_t)() ; foo) { }"), InternalError); // #6858
|
ASSERT_THROW(checkCode("*(*const<> (size_t); foo) { } *(*const (size_t)() ; foo) { }"), InternalError); // #6858
|
||||||
|
|
Loading…
Reference in New Issue