Skip to content

Commit 5e62a8a

Browse files
committed
Rename error, add more tests
1 parent 9ebb398 commit 5e62a8a

File tree

3 files changed

+38
-10
lines changed

3 files changed

+38
-10
lines changed

lldb/include/lldb/Host/JSONTransport.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,17 @@ class TransportTimeoutError : public llvm::ErrorInfo<TransportTimeoutError> {
5151
}
5252
};
5353

54-
class TransportClosedError : public llvm::ErrorInfo<TransportClosedError> {
54+
class TransportInvalidError : public llvm::ErrorInfo<TransportInvalidError> {
5555
public:
5656
static char ID;
5757

58-
TransportClosedError() = default;
58+
TransportInvalidError() = default;
5959

6060
void log(llvm::raw_ostream &OS) const override {
61-
OS << "transport is closed";
61+
OS << "transport IO object invalid";
6262
}
6363
std::error_code convertToErrorCode() const override {
64-
return llvm::inconvertibleErrorCode();
64+
return std::make_error_code(std::errc::not_connected);
6565
}
6666
};
6767

lldb/source/Host/common/JSONTransport.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ static Expected<std::string>
3131
ReadFull(IOObject &descriptor, size_t length,
3232
std::optional<std::chrono::microseconds> timeout = std::nullopt) {
3333
if (!descriptor.IsValid())
34-
return llvm::make_error<TransportClosedError>();
34+
return llvm::make_error<TransportInvalidError>();
3535

3636
bool timeout_supported = true;
3737
// FIXME: SelectHelper does not work with NativeFile on Win32.
@@ -92,7 +92,7 @@ void JSONTransport::Log(llvm::StringRef message) {
9292
Expected<std::string>
9393
HTTPDelimitedJSONTransport::ReadImpl(const std::chrono::microseconds &timeout) {
9494
if (!m_input || !m_input->IsValid())
95-
return llvm::make_error<TransportClosedError>();
95+
return llvm::make_error<TransportInvalidError>();
9696

9797
IOObject *input = m_input.get();
9898
Expected<std::string> message_header =
@@ -131,7 +131,7 @@ HTTPDelimitedJSONTransport::ReadImpl(const std::chrono::microseconds &timeout) {
131131

132132
Error HTTPDelimitedJSONTransport::WriteImpl(const std::string &message) {
133133
if (!m_output || !m_output->IsValid())
134-
return llvm::make_error<TransportClosedError>();
134+
return llvm::make_error<TransportInvalidError>();
135135

136136
Log(llvm::formatv("<-- {0}", message).str());
137137

@@ -145,7 +145,7 @@ Error HTTPDelimitedJSONTransport::WriteImpl(const std::string &message) {
145145
Expected<std::string>
146146
JSONRPCTransport::ReadImpl(const std::chrono::microseconds &timeout) {
147147
if (!m_input || !m_input->IsValid())
148-
return make_error<TransportClosedError>();
148+
return make_error<TransportInvalidError>();
149149

150150
IOObject *input = m_input.get();
151151
Expected<std::string> raw_json =
@@ -160,7 +160,7 @@ JSONRPCTransport::ReadImpl(const std::chrono::microseconds &timeout) {
160160

161161
Error JSONRPCTransport::WriteImpl(const std::string &message) {
162162
if (!m_output || !m_output->IsValid())
163-
return llvm::make_error<TransportClosedError>();
163+
return llvm::make_error<TransportInvalidError>();
164164

165165
Log(llvm::formatv("<-- {0}", message).str());
166166

@@ -173,4 +173,4 @@ Error JSONRPCTransport::WriteImpl(const std::string &message) {
173173

174174
char TransportEOFError::ID;
175175
char TransportTimeoutError::ID;
176-
char TransportClosedError::ID;
176+
char TransportInvalidError::ID;

lldb/unittests/Host/JSONTransportTest.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,20 @@ TEST_F(HTTPDelimitedJSONTransportTest, ReadWithEOF) {
9090
Failed<TransportEOFError>());
9191
}
9292

93+
TEST_F(HTTPDelimitedJSONTransportTest, ReadAfterClosed) {
94+
input.CloseReadFileDescriptor();
95+
ASSERT_THAT_EXPECTED(
96+
transport->Read<JSONTestType>(std::chrono::milliseconds(1)),
97+
llvm::Failed());
98+
}
99+
100+
TEST_F(HTTPDelimitedJSONTransportTest, InvalidTransport) {
101+
transport = std::make_unique<HTTPDelimitedJSONTransport>(nullptr, nullptr);
102+
ASSERT_THAT_EXPECTED(
103+
transport->Read<JSONTestType>(std::chrono::milliseconds(1)),
104+
Failed<TransportInvalidError>());
105+
}
106+
93107
TEST_F(HTTPDelimitedJSONTransportTest, Write) {
94108
ASSERT_THAT_ERROR(transport->Write(JSONTestType{"foo"}), Succeeded());
95109
output.CloseWriteFileDescriptor();
@@ -134,6 +148,13 @@ TEST_F(JSONRPCTransportTest, ReadWithEOF) {
134148
Failed<TransportEOFError>());
135149
}
136150

151+
TEST_F(JSONRPCTransportTest, ReadAfterClosed) {
152+
input.CloseReadFileDescriptor();
153+
ASSERT_THAT_EXPECTED(
154+
transport->Read<JSONTestType>(std::chrono::milliseconds(1)),
155+
llvm::Failed());
156+
}
157+
137158
TEST_F(JSONRPCTransportTest, Write) {
138159
ASSERT_THAT_ERROR(transport->Write(JSONTestType{"foo"}), Succeeded());
139160
output.CloseWriteFileDescriptor();
@@ -144,3 +165,10 @@ TEST_F(JSONRPCTransportTest, Write) {
144165
ASSERT_EQ(StringRef(buf, *bytes_read), StringRef(R"json({"str":"foo"})json"
145166
"\n"));
146167
}
168+
169+
TEST_F(JSONRPCTransportTest, InvalidTransport) {
170+
transport = std::make_unique<JSONRPCTransport>(nullptr, nullptr);
171+
ASSERT_THAT_EXPECTED(
172+
transport->Read<JSONTestType>(std::chrono::milliseconds(1)),
173+
Failed<TransportInvalidError>());
174+
}

0 commit comments

Comments
 (0)