mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 21:20:11 +01:00
Before, if the llvm hook to print a stack trace on CHECK was bound, it would trace after the message rather than before the message. I'm thinking swapping the order will generally be easier to debug.
58 lines
1.5 KiB
C++
58 lines
1.5 KiB
C++
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
// Exceptions. See /LICENSE for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
#include "common/check.h"
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
namespace Carbon::Testing {
|
|
namespace {
|
|
|
|
TEST(CheckTest, CheckTrue) { CHECK(true); }
|
|
|
|
TEST(CheckTest, CheckFalse) {
|
|
// TODO: figure out why we can't use \\d+ instead of .+ in these patterns.
|
|
ASSERT_DEATH({ CHECK(false); },
|
|
"Stack trace:\n"
|
|
".+\n"
|
|
"CHECK failure at common/check_test.cpp:.+: false\n");
|
|
}
|
|
|
|
TEST(CheckTest, CheckTrueCallbackNotUsed) {
|
|
bool called = false;
|
|
auto callback = [&]() {
|
|
called = true;
|
|
return "called";
|
|
};
|
|
CHECK(true) << callback();
|
|
EXPECT_FALSE(called);
|
|
}
|
|
|
|
TEST(CheckTest, CheckFalseMessage) {
|
|
ASSERT_DEATH({ CHECK(false) << "msg"; },
|
|
"CHECK failure at common/check_test.cpp:.+: false: msg\n");
|
|
}
|
|
|
|
TEST(CheckTest, CheckOutputForms) {
|
|
const char msg[] = "msg";
|
|
std::string str = "str";
|
|
int i = 1;
|
|
CHECK(true) << msg << str << i << 0;
|
|
}
|
|
|
|
TEST(CheckTest, Fatal) {
|
|
ASSERT_DEATH({ FATAL() << "msg"; },
|
|
"FATAL failure at common/check_test.cpp:.+: msg\n");
|
|
}
|
|
|
|
auto FatalNoReturnRequired() -> int { FATAL() << "msg"; }
|
|
|
|
TEST(ErrorTest, FatalNoReturnRequired) {
|
|
ASSERT_DEATH({ FatalNoReturnRequired(); },
|
|
"FATAL failure at common/check_test.cpp:.+: msg\n");
|
|
}
|
|
|
|
} // namespace
|
|
} // namespace Carbon::Testing
|