[llvm] [orc-rt] Use the Error matchers in NativeDylibManagerSPSCITest (PR #228629)
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 2 18:06:56 PDT 2026
https://github.com/lhames created https://github.com/llvm/llvm-project/pull/228629
Use the Error matchers introduced in 4c8a437d0487 to clean up error checks in NativeDylibManagerSPSCITest.
>From bfec6878973a86802bcf0b3aa189ab62c362db1b Mon Sep 17 00:00:00 2001
From: Lang Hames <lhames at gmail.com>
Date: Thu, 1 Oct 2026 09:28:41 +1000
Subject: [PATCH] [orc-rt] Use the Error matchers in
NativeDylibManagerSPSCITest
Use the Error matchers introduced in 4c8a437d0487 to clean up error
checks in NativeDylibManagerSPSCITest.
---
.../sps/NativeDylibManagerSPSCITest.cpp | 86 +++++++++++++------
1 file changed, 62 insertions(+), 24 deletions(-)
diff --git a/orc-rt/test/unit/bedrock/sps/NativeDylibManagerSPSCITest.cpp b/orc-rt/test/unit/bedrock/sps/NativeDylibManagerSPSCITest.cpp
index 2fe4600287439..b31d883a7e3eb 100644
--- a/orc-rt/test/unit/bedrock/sps/NativeDylibManagerSPSCITest.cpp
+++ b/orc-rt/test/unit/bedrock/sps/NativeDylibManagerSPSCITest.cpp
@@ -18,11 +18,14 @@
#include "BedrockTestUtils.h"
#include "CommonTestUtils.h"
#include "DirectCaller.h"
+#include "ErrorMatchers.h"
#include "gtest/gtest.h"
using namespace orc_rt;
using namespace orc_rt::test;
+using ::testing::Ne;
+
namespace orc_rt {
/// SPS serialization for NativeDylibManager::LookupFlags as a bool.
@@ -81,7 +84,9 @@ class NativeDylibManagerSPSCITest : public ::testing::Test {
void SetUp() override {
S = std::make_unique<Session>(mockExecutorProcessInfo(), noDispatch,
noErrors);
- NDM = cantFail(NativeDylibManager::Create(*S, CI));
+ auto NDMOrErr = NativeDylibManager::Create(*S, CI);
+ ASSERT_THAT_EXPECTED(NDMOrErr, Succeeded());
+ NDM = std::move(*NDMOrErr);
}
template <typename OnCompleteFn>
@@ -119,16 +124,17 @@ TEST_F(NativeDylibManagerSPSCITest, Registration) {
TEST_F(NativeDylibManagerSPSCITest, Load) {
std::future<Expected<Expected<void *>>> LoadResult;
spsLoad(waitFor(LoadResult), NDM_TEST_LIB_PATH);
- void *Handle = cantFail(cantFail(LoadResult.get()));
- EXPECT_NE(Handle, nullptr);
+ auto HandleOrErr = LoadResult.get();
+ ASSERT_THAT_EXPECTED(HandleOrErr, Succeeded());
+ EXPECT_THAT_EXPECTED(*HandleOrErr, HasValue(Ne(nullptr)));
}
TEST_F(NativeDylibManagerSPSCITest, LoadNonExistent) {
std::future<Expected<Expected<void *>>> LoadResult;
spsLoad(waitFor(LoadResult), "/no/such/library.dylib");
- auto Handle = cantFail(LoadResult.get());
- EXPECT_FALSE(!!Handle);
- consumeError(Handle.takeError());
+ auto HandleOrErr = LoadResult.get();
+ ASSERT_THAT_EXPECTED(HandleOrErr, Succeeded());
+ EXPECT_THAT_EXPECTED(*HandleOrErr, Failed());
}
TEST_F(NativeDylibManagerSPSCITest, LoadEmptyPathReturnsGlobalHandle) {
@@ -136,12 +142,17 @@ TEST_F(NativeDylibManagerSPSCITest, LoadEmptyPathReturnsGlobalHandle) {
// up through it.
std::future<Expected<Expected<void *>>> LoadResult;
spsLoad(waitFor(LoadResult), "");
- void *Handle = cantFail(cantFail(LoadResult.get()));
+ auto Handle = LoadResult.get();
+ ASSERT_THAT_EXPECTED(Handle, Succeeded());
+ ASSERT_THAT_EXPECTED(*Handle, Succeeded());
std::future<Expected<Expected<std::vector<std::optional<void *>>>>>
LookupResult;
- spsLookup(waitFor(LookupResult), Handle, {{MANGLED("malloc"), Req}});
- auto Addrs = cantFail(cantFail(LookupResult.get()));
+ spsLookup(waitFor(LookupResult), **Handle, {{MANGLED("malloc"), Req}});
+ auto AddrsOrErr = LookupResult.get();
+ ASSERT_THAT_EXPECTED(AddrsOrErr, Succeeded());
+ ASSERT_THAT_EXPECTED(*AddrsOrErr, Succeeded());
+ auto &Addrs = **AddrsOrErr;
ASSERT_EQ(Addrs.size(), 1U);
ASSERT_TRUE(Addrs[0].has_value())
<< "malloc should be findable via the process's global lookup handle";
@@ -151,13 +162,18 @@ TEST_F(NativeDylibManagerSPSCITest, LoadEmptyPathReturnsGlobalHandle) {
TEST_F(NativeDylibManagerSPSCITest, LookupSingleSymbol) {
std::future<Expected<Expected<void *>>> LoadResult;
spsLoad(waitFor(LoadResult), NDM_TEST_LIB_PATH);
- void *Handle = cantFail(cantFail(LoadResult.get()));
+ auto Handle = LoadResult.get();
+ ASSERT_THAT_EXPECTED(Handle, Succeeded());
+ ASSERT_THAT_EXPECTED(*Handle, Succeeded());
std::future<Expected<Expected<std::vector<std::optional<void *>>>>>
LookupResult;
- spsLookup(waitFor(LookupResult), Handle,
+ spsLookup(waitFor(LookupResult), **Handle,
{{MANGLED("NativeDylibManagerTestFunc"), Req}});
- auto Addrs = cantFail(cantFail(LookupResult.get()));
+ auto AddrsOrErr = LookupResult.get();
+ ASSERT_THAT_EXPECTED(AddrsOrErr, Succeeded());
+ ASSERT_THAT_EXPECTED(*AddrsOrErr, Succeeded());
+ auto &Addrs = **AddrsOrErr;
ASSERT_EQ(Addrs.size(), 1U);
ASSERT_TRUE(Addrs[0].has_value());
EXPECT_NE(*Addrs[0], nullptr);
@@ -169,14 +185,19 @@ TEST_F(NativeDylibManagerSPSCITest, LookupSingleSymbol) {
TEST_F(NativeDylibManagerSPSCITest, LookupMultipleSymbols) {
std::future<Expected<Expected<void *>>> LoadResult;
spsLoad(waitFor(LoadResult), NDM_TEST_LIB_PATH);
- void *Handle = cantFail(cantFail(LoadResult.get()));
+ auto Handle = LoadResult.get();
+ ASSERT_THAT_EXPECTED(Handle, Succeeded());
+ ASSERT_THAT_EXPECTED(*Handle, Succeeded());
std::future<Expected<Expected<std::vector<std::optional<void *>>>>>
LookupResult;
- spsLookup(waitFor(LookupResult), Handle,
+ spsLookup(waitFor(LookupResult), **Handle,
{{MANGLED("NativeDylibManagerTestFunc"), Req},
{MANGLED("NativeDylibManagerTestFunc2"), Req}});
- auto Addrs = cantFail(cantFail(LookupResult.get()));
+ auto AddrsOrErr = LookupResult.get();
+ ASSERT_THAT_EXPECTED(AddrsOrErr, Succeeded());
+ ASSERT_THAT_EXPECTED(*AddrsOrErr, Succeeded());
+ auto &Addrs = **AddrsOrErr;
ASSERT_EQ(Addrs.size(), 2U);
ASSERT_TRUE(Addrs[0].has_value());
ASSERT_TRUE(Addrs[1].has_value());
@@ -192,12 +213,18 @@ TEST_F(NativeDylibManagerSPSCITest, LookupMultipleSymbols) {
TEST_F(NativeDylibManagerSPSCITest, LookupWeakMissingSymbol) {
std::future<Expected<Expected<void *>>> LoadResult;
spsLoad(waitFor(LoadResult), NDM_TEST_LIB_PATH);
- void *Handle = cantFail(cantFail(LoadResult.get()));
+ auto Handle = LoadResult.get();
+ ASSERT_THAT_EXPECTED(Handle, Succeeded());
+ ASSERT_THAT_EXPECTED(*Handle, Succeeded());
std::future<Expected<Expected<std::vector<std::optional<void *>>>>>
LookupResult;
- spsLookup(waitFor(LookupResult), Handle, {{MANGLED("no_such_symbol"), Weak}});
- auto Addrs = cantFail(cantFail(LookupResult.get()));
+ spsLookup(waitFor(LookupResult), **Handle,
+ {{MANGLED("no_such_symbol"), Weak}});
+ auto AddrsOrErr = LookupResult.get();
+ ASSERT_THAT_EXPECTED(AddrsOrErr, Succeeded());
+ ASSERT_THAT_EXPECTED(*AddrsOrErr, Succeeded());
+ auto &Addrs = **AddrsOrErr;
ASSERT_EQ(Addrs.size(), 1U);
ASSERT_TRUE(Addrs[0].has_value())
<< "weak-missing symbol should be reported as a present optional";
@@ -207,12 +234,18 @@ TEST_F(NativeDylibManagerSPSCITest, LookupWeakMissingSymbol) {
TEST_F(NativeDylibManagerSPSCITest, LookupRequiredMissingSymbol) {
std::future<Expected<Expected<void *>>> LoadResult;
spsLoad(waitFor(LoadResult), NDM_TEST_LIB_PATH);
- void *Handle = cantFail(cantFail(LoadResult.get()));
+ auto Handle = LoadResult.get();
+ ASSERT_THAT_EXPECTED(Handle, Succeeded());
+ ASSERT_THAT_EXPECTED(*Handle, Succeeded());
std::future<Expected<Expected<std::vector<std::optional<void *>>>>>
LookupResult;
- spsLookup(waitFor(LookupResult), Handle, {{MANGLED("no_such_symbol"), Req}});
- auto Addrs = cantFail(cantFail(LookupResult.get()));
+ spsLookup(waitFor(LookupResult), **Handle,
+ {{MANGLED("no_such_symbol"), Req}});
+ auto AddrsOrErr = LookupResult.get();
+ ASSERT_THAT_EXPECTED(AddrsOrErr, Succeeded());
+ ASSERT_THAT_EXPECTED(*AddrsOrErr, Succeeded());
+ auto &Addrs = **AddrsOrErr;
ASSERT_EQ(Addrs.size(), 1U);
EXPECT_FALSE(Addrs[0].has_value())
<< "required-missing symbol should be reported as an empty optional";
@@ -221,14 +254,19 @@ TEST_F(NativeDylibManagerSPSCITest, LookupRequiredMissingSymbol) {
TEST_F(NativeDylibManagerSPSCITest, LookupMixedRequiredAndWeak) {
std::future<Expected<Expected<void *>>> LoadResult;
spsLoad(waitFor(LoadResult), NDM_TEST_LIB_PATH);
- void *Handle = cantFail(cantFail(LoadResult.get()));
+ auto Handle = LoadResult.get();
+ ASSERT_THAT_EXPECTED(Handle, Succeeded());
+ ASSERT_THAT_EXPECTED(*Handle, Succeeded());
std::future<Expected<Expected<std::vector<std::optional<void *>>>>>
LookupResult;
- spsLookup(waitFor(LookupResult), Handle,
+ spsLookup(waitFor(LookupResult), **Handle,
{{MANGLED("NativeDylibManagerTestFunc"), Req},
{MANGLED("no_such_symbol"), Weak}});
- auto Addrs = cantFail(cantFail(LookupResult.get()));
+ auto AddrsOrErr = LookupResult.get();
+ ASSERT_THAT_EXPECTED(AddrsOrErr, Succeeded());
+ ASSERT_THAT_EXPECTED(*AddrsOrErr, Succeeded());
+ auto &Addrs = **AddrsOrErr;
ASSERT_EQ(Addrs.size(), 2U);
ASSERT_TRUE(Addrs[0].has_value());
EXPECT_NE(*Addrs[0], nullptr);
More information about the llvm-commits
mailing list