raw_ostream &operator<<(double N);
+ raw_ostream &operator<<(std::error_code EC);
+
/// Output \p N in hexadecimal, without any prefix or padding.
raw_ostream &write_hex(unsigned long long N);
return *this;
}
+raw_ostream &raw_ostream::operator<<(std::error_code EC) {
+ return *this << EC.message() << " (" << EC.category().name() << ':'
+ << EC.value() << ')';
+}
+
raw_ostream &raw_ostream::write_hex(unsigned long long N) {
llvm::write_hex(*this, N, HexPrintStyle::Lower);
return *this;
using namespace llvm;
namespace fs = llvm::sys::fs;
-#define ASSERT_NO_ERROR(x) \
- if (std::error_code ASSERT_NO_ERROR_ec = x) { \
- SmallString<128> MessageStorage; \
- raw_svector_ostream Message(MessageStorage); \
- Message << #x ": did not return errc::success.\n" \
- << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \
- << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \
- GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \
- } else { \
- }
+#define ASSERT_NO_ERROR(x) ASSERT_EQ(x, std::error_code())
class MagicTest : public testing::Test {
protected:
class TestErrorCategory : public std::error_category {
public:
- const char *name() const noexcept override { return "error"; }
+ const char *name() const noexcept override { return "test_error"; }
std::string message(int Condition) const override {
switch (static_cast<test_error_code>(Condition)) {
case test_error_code::unspecified:
0);
}
+TEST(Error, error_codeErrorMessageTest) {
+ EXPECT_NONFATAL_FAILURE(
+ EXPECT_EQ(make_error_code(test_error_code::unspecified),
+ make_error_code(test_error_code::error_2)),
+ "Which is: An unknown error has occurred. (test_error:1)");
+}
+
} // namespace
using namespace llvm;
using namespace llvm::sys;
-#define ASSERT_NO_ERROR(x) \
- if (std::error_code ASSERT_NO_ERROR_ec = x) { \
- SmallString<128> MessageStorage; \
- raw_svector_ostream Message(MessageStorage); \
- Message << #x ": did not return errc::success.\n" \
- << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \
- << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \
- GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \
- } else { \
- }
+#define ASSERT_NO_ERROR(x) ASSERT_EQ(x, std::error_code())
namespace {
TEST(FileOutputBuffer, Test) {
#include "gtest/gtest.h"
-#define ASSERT_NO_ERROR(x) \
- if (std::error_code ASSERT_NO_ERROR_ec = x) { \
- SmallString<128> MessageStorage; \
- raw_svector_ostream Message(MessageStorage); \
- Message << #x ": did not return errc::success.\n" \
- << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \
- << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \
- GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \
- } else { \
- }
+#define ASSERT_NO_ERROR(x) ASSERT_EQ(x, std::error_code())
using namespace llvm;
using namespace llvm;
using namespace llvm::sys;
-#define ASSERT_NO_ERROR(x) \
- if (std::error_code ASSERT_NO_ERROR_ec = x) { \
- SmallString<128> MessageStorage; \
- raw_svector_ostream Message(MessageStorage); \
- Message << #x ": did not return errc::success.\n" \
- << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \
- << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \
- GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \
- } else { \
- }
-
-#define ASSERT_ERROR(x) \
- if (!x) { \
- SmallString<128> MessageStorage; \
- raw_svector_ostream Message(MessageStorage); \
- Message << #x ": did not return a failure error code.\n"; \
- GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \
- }
+#define ASSERT_NO_ERROR(x) ASSERT_EQ(x, std::error_code())
+#define ASSERT_ERROR(x) ASSERT_NE(x, std::error_code())
namespace {
int FileDescriptor2;
SmallString<64> ResultPath;
ASSERT_NO_ERROR(fs::openFileForRead(Twine(TempPath), FileDescriptor2,
- fs::OF_None, &ResultPath))
+ fs::OF_None, &ResultPath));
// If we succeeded, check that the paths are the same (modulo case):
if (!ResultPath.empty()) {
#error sleep_for is not implemented on your platform.
#endif
-#define ASSERT_NO_ERROR(x) \
- if (std::error_code ASSERT_NO_ERROR_ec = x) { \
- SmallString<128> MessageStorage; \
- raw_svector_ostream Message(MessageStorage); \
- Message << #x ": did not return errc::success.\n" \
- << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \
- << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \
- GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \
- } else { \
- }
+#define ASSERT_NO_ERROR(x) ASSERT_EQ(x, std::error_code())
+
// From TestMain.cpp.
extern const char *TestMainArgv0;
using namespace llvm;
using namespace llvm::sys;
-#define ASSERT_NO_ERROR(x) \
- do { \
- if (std::error_code ASSERT_NO_ERROR_ec = x) { \
- errs() << #x ": did not return errc::success.\n" \
- << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \
- << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \
- } \
- } while (false)
+#define ASSERT_NO_ERROR(x) ASSERT_EQ(x, std::error_code())
namespace {
std::error_code CreateFileWithContent(const SmallString<128> &FilePath,
using namespace llvm;
-#define ASSERT_NO_ERROR(x) \
- if (std::error_code ASSERT_NO_ERROR_ec = x) { \
- SmallString<128> MessageStorage; \
- raw_svector_ostream Message(MessageStorage); \
- Message << #x ": did not return errc::success.\n" \
- << "error number: " << ASSERT_NO_ERROR_ec.value() << "\n" \
- << "error message: " << ASSERT_NO_ERROR_ec.message() << "\n"; \
- GTEST_FATAL_FAILURE_(MessageStorage.c_str()); \
- } else { \
- }
+#define ASSERT_NO_ERROR(x) ASSERT_EQ(x, std::error_code())
namespace {