rework unit tests

This commit is contained in:
Sergiu Deitsch 2024-11-01 15:03:36 +01:00
parent 5fd3750f16
commit f57187842a
No known key found for this signature in database
2 changed files with 15 additions and 8 deletions

View File

@ -586,10 +586,6 @@ if (BUILD_TESTING)
add_test (NAME demangle COMMAND demangle_unittest)
if (HAVE___CXA_DEMANGLE)
# Demangle tests use a different (reduced) representation of symbols
set_tests_properties (demangle PROPERTIES DISABLED ON)
endif (HAVE___CXA_DEMANGLE)
if (HAVE_STACKTRACE)
add_executable (stacktrace_unittest

View File

@ -89,12 +89,10 @@ TEST(Demangle, CornerCases) {
EXPECT_STREQ(demangled, tmp);
EXPECT_TRUE(Demangle(mangled, tmp, size - 1));
EXPECT_STREQ(demangled, tmp);
EXPECT_FALSE(Demangle(mangled, tmp, size - 2)); // Not enough.
EXPECT_FALSE(Demangle(mangled, tmp, 1));
EXPECT_FALSE(Demangle(mangled, tmp, 0));
EXPECT_FALSE(Demangle(mangled, nullptr, 0)); // Should not cause SEGV.
}
// Demangle tests use a different (reduced) representation of symbols
# if !defined(HAVE___CXA_DEMANGLE)
// Test handling of functions suffixed with .clone.N, which is used by GCC
// 4.5.x, and .constprop.N and .isra.N, which are used by GCC 4.6.x. These
// suffixes are used to indicate functions which have been cloned during
@ -141,6 +139,19 @@ TEST(Demangle, FromFile) {
EXPECT_EQ(demangled, DemangleIt(mangled.c_str()));
}
}
# endif // defined(HAVE___CXA_DEMANGLE)
TEST(Demangle, SmallBuffer) {
constexpr std::size_t size = 10;
char tmp[size];
const char* const mangled = "_Z6foobarv";
EXPECT_FALSE(Demangle(mangled, tmp, size - 2)); // Not enough.
EXPECT_FALSE(Demangle(mangled, tmp, 1));
EXPECT_FALSE(Demangle(mangled, tmp, 0));
EXPECT_FALSE(Demangle(mangled, nullptr, 0)); // Should not cause SEGV.
EXPECT_FALSE(Demangle("", tmp, sizeof(tmp)));
EXPECT_TRUE(Demangle("_Z3foo", nullptr, 0));
}
#endif