Skip to content

Commit 9e7578e

Browse files
authored
testrunner: improved InternalError assertions (#6262)
1 parent 1fa272c commit 9e7578e

16 files changed

Lines changed: 608 additions & 606 deletions

test/fixture.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,8 @@ class TestFixture : public ErrorLogger {
299299
#define ASSERT_THROW( CMD, EXCEPTION ) do { try { CMD; assertThrowFail(__FILE__, __LINE__); } catch (const EXCEPTION&) {} catch (...) { assertThrowFail(__FILE__, __LINE__); } } while (false)
300300
#define ASSERT_THROW_EQUALS( CMD, EXCEPTION, EXPECTED ) do { try { CMD; assertThrowFail(__FILE__, __LINE__); } catch (const EXCEPTION&e) { assertEquals(__FILE__, __LINE__, EXPECTED, e.errorMessage); } catch (...) { assertThrowFail(__FILE__, __LINE__); } } while (false)
301301
#define ASSERT_THROW_EQUALS_2( CMD, EXCEPTION, EXPECTED ) do { try { CMD; assertThrowFail(__FILE__, __LINE__); } catch (const EXCEPTION&e) { assertEquals(__FILE__, __LINE__, EXPECTED, e.what()); } catch (...) { assertThrowFail(__FILE__, __LINE__); } } while (false)
302+
#define ASSERT_THROW_INTERNAL( CMD, TYPE ) do { try { CMD; assertThrowFail(__FILE__, __LINE__); } catch (const InternalError& e) { assertEqualsEnum(__FILE__, __LINE__, InternalError::TYPE, e.type); } catch (...) { assertThrowFail(__FILE__, __LINE__); } } while (false)
303+
#define ASSERT_THROW_INTERNAL_EQUALS( CMD, TYPE, EXPECTED ) do { try { CMD; assertThrowFail(__FILE__, __LINE__); } catch (const InternalError& e) { assertEqualsEnum(__FILE__, __LINE__, InternalError::TYPE, e.type); assertEquals(__FILE__, __LINE__, EXPECTED, e.errorMessage); } catch (...) { assertThrowFail(__FILE__, __LINE__); } } while (false)
302304
#define ASSERT_NO_THROW( CMD ) do { try { CMD; } catch (...) { assertNoThrowFail(__FILE__, __LINE__); } } while (false)
303305
#define TODO_ASSERT_THROW( CMD, EXCEPTION ) do { try { CMD; } catch (const EXCEPTION&) {} catch (...) { assertThrow(__FILE__, __LINE__); } } while (false)
304306
#define TODO_ASSERT( CONDITION ) do { const bool condition=(CONDITION); todoAssertEquals(__FILE__, __LINE__, true, false, condition); } while (false)

test/testautovariables.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ class TestAutoVariables : public TestFixture {
443443
}
444444

445445
void testautovar12() { // Ticket #5024, #5050 - Crash on invalid input
446-
ASSERT_THROW(check("void f(int* a) { a = }"), InternalError);
446+
ASSERT_THROW_INTERNAL(check("void f(int* a) { a = }"), SYNTAX);
447447
check("struct custom_type { custom_type(int) {} };\n"
448448
"void func(int) {}\n"
449449
"int var;\n"

test/testcondition.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2787,12 +2787,12 @@ class TestCondition : public TestFixture {
27872787
"}");
27882788
ASSERT_EQUALS("[test.cpp:2] -> [test.cpp:4]: (warning) Identical condition 'x>100', second condition is always false\n", errout_str());
27892789

2790-
ASSERT_THROW(check("void f(int x) {\n" // #8217 - crash for incomplete code
2791-
" if (x > 100) { return; }\n"
2792-
" X(do);\n"
2793-
" if (x > 100) {}\n"
2794-
"}"),
2795-
InternalError);
2790+
ASSERT_THROW_INTERNAL(check("void f(int x) {\n" // #8217 - crash for incomplete code
2791+
" if (x > 100) { return; }\n"
2792+
" X(do);\n"
2793+
" if (x > 100) {}\n"
2794+
"}"),
2795+
SYNTAX);
27962796

27972797
check("void f(const int *i) {\n"
27982798
" if (!i) return;\n"

test/testerrorlogger.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -348,22 +348,22 @@ class TestErrorLogger : public TestFixture {
348348
// missing/invalid length
349349
// missing separator
350350
ErrorMessage msg;
351-
ASSERT_THROW_EQUALS(msg.deserialize("500foobar"), InternalError, "Internal Error: Deserialization of error message failed - invalid separator");
351+
ASSERT_THROW_INTERNAL_EQUALS(msg.deserialize("500foobar"), INTERNAL, "Internal Error: Deserialization of error message failed - invalid separator");
352352
}
353353
{
354354
// invalid length
355355
ErrorMessage msg;
356-
ASSERT_THROW_EQUALS(msg.deserialize("foo foobar"), InternalError, "Internal Error: Deserialization of error message failed - invalid length");
356+
ASSERT_THROW_INTERNAL_EQUALS(msg.deserialize("foo foobar"), INTERNAL, "Internal Error: Deserialization of error message failed - invalid length");
357357
}
358358
{
359359
// mismatching length
360360
ErrorMessage msg;
361-
ASSERT_THROW_EQUALS(msg.deserialize("8 errorId"), InternalError, "Internal Error: Deserialization of error message failed - premature end of data");
361+
ASSERT_THROW_INTERNAL_EQUALS(msg.deserialize("8 errorId"), INTERNAL, "Internal Error: Deserialization of error message failed - premature end of data");
362362
}
363363
{
364364
// incomplete message
365365
ErrorMessage msg;
366-
ASSERT_THROW_EQUALS(msg.deserialize("7 errorId"), InternalError, "Internal Error: Deserialization of error message failed - invalid length");
366+
ASSERT_THROW_INTERNAL_EQUALS(msg.deserialize("7 errorId"), INTERNAL, "Internal Error: Deserialization of error message failed - invalid length");
367367
}
368368
{
369369
// invalid CWE ID
@@ -376,7 +376,7 @@ class TestErrorLogger : public TestFixture {
376376
"17 Programming error"
377377
"0 ";
378378
ErrorMessage msg;
379-
ASSERT_THROW_EQUALS(msg.deserialize(str), InternalError, "Internal Error: Deserialization of error message failed - invalid CWE ID - not an integer");
379+
ASSERT_THROW_INTERNAL_EQUALS(msg.deserialize(str), INTERNAL, "Internal Error: Deserialization of error message failed - invalid CWE ID - not an integer");
380380
}
381381
{
382382
// invalid hash
@@ -389,7 +389,7 @@ class TestErrorLogger : public TestFixture {
389389
"17 Programming error"
390390
"0 ";
391391
ErrorMessage msg;
392-
ASSERT_THROW_EQUALS(msg.deserialize(str), InternalError, "Internal Error: Deserialization of error message failed - invalid hash - not an integer");
392+
ASSERT_THROW_INTERNAL_EQUALS(msg.deserialize(str), INTERNAL, "Internal Error: Deserialization of error message failed - invalid hash - not an integer");
393393
}
394394
{
395395
// out-of-range CWE ID
@@ -402,7 +402,7 @@ class TestErrorLogger : public TestFixture {
402402
"17 Programming error"
403403
"0 ";
404404
ErrorMessage msg;
405-
ASSERT_THROW(msg.deserialize(str), InternalError);
405+
ASSERT_THROW_INTERNAL_EQUALS(msg.deserialize(str), INTERNAL, "Internal Error: Deserialization of error message failed - invalid CWE ID - out of range (limits)");
406406
}
407407
}
408408

0 commit comments

Comments
 (0)