[llvm] [orc-rt] Use the Error matchers in SimpleSymbolTableTest (PR #228343)
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 1 23:55:17 PDT 2026
https://github.com/lhames created https://github.com/llvm/llvm-project/pull/228343
Use the Error matchers introduced in 4c8a437d0487 to clean up error checks in SimpleSymbolTableTest.
The isA<StringError>() checks become Failed<StringError>(), with the message checks folded in as a Property matcher on StringError::toString so that both the type and the message are still verified.
>From 6c2f361a0c978e380296c7a11b403635290a9da3 Mon Sep 17 00:00:00 2001
From: Lang Hames <lhames at gmail.com>
Date: Thu, 1 Oct 2026 09:28:40 +1000
Subject: [PATCH] [orc-rt] Use the Error matchers in SimpleSymbolTableTest
Use the Error matchers introduced in 4c8a437d0487 to clean up error
checks in SimpleSymbolTableTest.
The isA<StringError>() checks become Failed<StringError>(), with the
message checks folded in as a Property matcher on StringError::toString
so that both the type and the message are still verified.
---
.../unit/bedrock/SimpleSymbolTableTest.cpp | 52 ++++++++++---------
1 file changed, 27 insertions(+), 25 deletions(-)
diff --git a/orc-rt/test/unit/bedrock/SimpleSymbolTableTest.cpp b/orc-rt/test/unit/bedrock/SimpleSymbolTableTest.cpp
index 1276d1d7b832166..1e2d9d06974f239 100644
--- a/orc-rt/test/unit/bedrock/SimpleSymbolTableTest.cpp
+++ b/orc-rt/test/unit/bedrock/SimpleSymbolTableTest.cpp
@@ -11,12 +11,19 @@
//===----------------------------------------------------------------------===//
#include "orc-rt/bedrock/SimpleSymbolTable.h"
+
+#include "ErrorMatchers.h"
#include "gtest/gtest.h"
#include <set>
#include <string>
using namespace orc_rt;
+using namespace orc_rt::test;
+
+using ::testing::AllOf;
+using ::testing::HasSubstr;
+using ::testing::Property;
TEST(SimpleSymbolTableTest, EmptyByDefault) {
SimpleSymbolTable ST;
@@ -32,8 +39,8 @@ TEST(SimpleSymbolTableTest, AddSymbolsUnique) {
{SymbolNameSpec::linker("orc_rt_A"), &X},
{SymbolNameSpec::linker("orc_rt_B"), &Y}};
- auto Err = ST.addUnique(Syms);
- EXPECT_FALSE(Err) << "Unexpected error adding unique symbols";
+ EXPECT_THAT_ERROR(ST.addUnique(Syms), Succeeded())
+ << "Unexpected error adding unique symbols";
EXPECT_EQ(ST.size(), 2U);
EXPECT_FALSE(ST.empty());
@@ -50,7 +57,7 @@ TEST(SimpleSymbolTableTest, AddConstPointers) {
std::pair<SymbolNameSpec, const void *> Syms[] = {
{SymbolNameSpec::linker("orc_rt_A"), &X},
{SymbolNameSpec::linker("orc_rt_B"), &Y}};
- cantFail(ST.addUnique(Syms));
+ ASSERT_THAT_ERROR(ST.addUnique(Syms), Succeeded());
EXPECT_EQ(ST.at(SymbolNameSpec::linker("orc_rt_A")), &X);
EXPECT_EQ(ST.at(SymbolNameSpec::linker("orc_rt_B")), &Y);
@@ -65,8 +72,8 @@ TEST(SimpleSymbolTableTest, AddSymbolsUniqueMultipleCalls) {
std::pair<SymbolNameSpec, void *> Second[] = {
{SymbolNameSpec::linker("orc_rt_B"), &Y}};
- cantFail(ST.addUnique(First));
- cantFail(ST.addUnique(Second));
+ ASSERT_THAT_ERROR(ST.addUnique(First), Succeeded());
+ ASSERT_THAT_ERROR(ST.addUnique(Second), Succeeded());
EXPECT_EQ(ST.size(), 2U);
EXPECT_EQ(ST.at(SymbolNameSpec::linker("orc_rt_A")), &X);
@@ -79,15 +86,13 @@ TEST(SimpleSymbolTableTest, AddSymbolsUniqueDuplicateRejected) {
std::pair<SymbolNameSpec, void *> First[] = {
{SymbolNameSpec::linker("orc_rt_A"), &X}};
- cantFail(ST.addUnique(First));
+ ASSERT_THAT_ERROR(ST.addUnique(First), Succeeded());
std::pair<SymbolNameSpec, void *> Second[] = {
{SymbolNameSpec::linker("orc_rt_A"), &Y}};
- auto Err = ST.addUnique(Second);
- EXPECT_TRUE(Err.isA<StringError>());
-
- auto ErrMsg = toString(std::move(Err));
- EXPECT_NE(ErrMsg.find("orc_rt_A"), std::string::npos)
+ EXPECT_THAT_ERROR(ST.addUnique(Second),
+ Failed<StringError>(Property(&StringError::toString,
+ HasSubstr("orc_rt_A"))))
<< "Error message should mention the duplicate symbol name";
// Original not overwritten.
@@ -101,17 +106,15 @@ TEST(SimpleSymbolTableTest, AddSymbolsUniqueMultipleDuplicates) {
std::pair<SymbolNameSpec, void *> First[] = {
{SymbolNameSpec::linker("orc_rt_A"), &X},
{SymbolNameSpec::linker("orc_rt_B"), &Y}};
- cantFail(ST.addUnique(First));
+ ASSERT_THAT_ERROR(ST.addUnique(First), Succeeded());
std::pair<SymbolNameSpec, void *> Second[] = {
{SymbolNameSpec::linker("orc_rt_A"), &Z},
{SymbolNameSpec::linker("orc_rt_B"), &Z}};
- auto Err = ST.addUnique(Second);
- EXPECT_TRUE(Err.isA<StringError>());
-
- auto ErrMsg = toString(std::move(Err));
- EXPECT_NE(ErrMsg.find("orc_rt_A"), std::string::npos);
- EXPECT_NE(ErrMsg.find("orc_rt_B"), std::string::npos);
+ EXPECT_THAT_ERROR(ST.addUnique(Second),
+ Failed<StringError>(Property(
+ &StringError::toString,
+ AllOf(HasSubstr("orc_rt_A"), HasSubstr("orc_rt_B")))));
// Originals not overwritten.
EXPECT_EQ(ST.at(SymbolNameSpec::linker("orc_rt_A")), &X);
@@ -124,15 +127,13 @@ TEST(SimpleSymbolTableTest, AddSymbolsUniqueAllOrNothing) {
std::pair<SymbolNameSpec, void *> First[] = {
{SymbolNameSpec::linker("orc_rt_existing"), &X}};
- cantFail(ST.addUnique(First));
+ ASSERT_THAT_ERROR(ST.addUnique(First), Succeeded());
// One new, one incompatible — neither should be added.
std::pair<SymbolNameSpec, void *> Second[] = {
{SymbolNameSpec::linker("orc_rt_new"), &Y},
{SymbolNameSpec::linker("orc_rt_existing"), &Z}};
- auto Err = ST.addUnique(Second);
- EXPECT_TRUE(Err.isA<StringError>());
- consumeError(std::move(Err));
+ EXPECT_THAT_ERROR(ST.addUnique(Second), Failed<StringError>());
EXPECT_EQ(ST.size(), 1U);
EXPECT_EQ(ST.at(SymbolNameSpec::linker("orc_rt_existing")), &X);
@@ -144,8 +145,9 @@ TEST(SimpleSymbolTableTest, AddUniqueSameAddressSucceeds) {
int X = 0;
std::pair<SymbolNameSpec, void *> Syms[] = {
{SymbolNameSpec::linker("orc_rt_A"), &X}};
- cantFail(ST.addUnique(Syms));
- cantFail(ST.addUnique(Syms)); // Same name, same address — should succeed.
+ ASSERT_THAT_ERROR(ST.addUnique(Syms), Succeeded());
+ // Same name, same address — should succeed.
+ ASSERT_THAT_ERROR(ST.addUnique(Syms), Succeeded());
EXPECT_EQ(ST.size(), 1U);
EXPECT_EQ(ST.at(SymbolNameSpec::linker("orc_rt_A")), &X);
}
@@ -157,7 +159,7 @@ TEST(SimpleSymbolTableTest, Iteration) {
{SymbolNameSpec::linker("orc_rt_A"), &X},
{SymbolNameSpec::linker("orc_rt_B"), &Y},
{SymbolNameSpec::linker("orc_rt_C"), &Z}};
- cantFail(ST.addUnique(Syms));
+ ASSERT_THAT_ERROR(ST.addUnique(Syms), Succeeded());
std::set<std::string> Names;
for (auto &[Name, Addr] : ST)
More information about the llvm-commits
mailing list