#ifdef HAVE_LIB_GFLAGS
#include <gflags/gflags.h>
+using namespace GFLAGS_NAMESPACE;
#endif
#ifdef HAVE_LIB_GMOCK
}
BENCHMARK(BM_Check2);
-static void CheckFailure(int a, int b, const char* file, int line, const char* msg) {
+static void CheckFailure(int, int, const char* /* file */, int /* line */,
+ const char* /* msg */) {
}
static void BM_logspeed(int n) {
BENCHMARK(BM_vlog);
int main(int argc, char **argv) {
+ FLAGS_colorlogtostderr = false;
#ifdef HAVE_LIB_GFLAGS
ParseCommandLineFlags(&argc, &argv, true);
#endif
+ // Make sure stderr is not buffered as stderr seems to be buffered
+ // on recent windows.
+ setbuf(stderr, NULL);
// Test some basics before InitGoogleLogging:
CaptureTestStderr();
LOG(ERROR) << string("foo") << ' '<< j << ' ' << setw(10) << j << " "
<< setw(1) << hex << j;
+ {
+ google::LogMessage outer(__FILE__, __LINE__, google::ERROR);
+ outer.stream() << "outer";
+
+ LOG(ERROR) << "inner";
+ }
+
LogMessage("foo", LogMessage::kNoLogPrefix, GLOG_INFO).stream() << "no prefix";
if (check_counts) {
CHECK_EQ(base_num_infos + 14, LogMessage::num_messages(GLOG_INFO));
CHECK_EQ(base_num_warning + 3, LogMessage::num_messages(GLOG_WARNING));
- CHECK_EQ(base_num_errors + 15, LogMessage::num_messages(GLOG_ERROR));
+ CHECK_EQ(base_num_errors + 17, LogMessage::num_messages(GLOG_ERROR));
}
}
static void NoAllocNewHook() {
- CHECK(false) << "unexpected new";
+ LOG(FATAL) << "unexpected new";
}
struct NewHook {
class TestLogSinkImpl : public LogSink {
public:
vector<string> errors;
- virtual void send(LogSeverity severity, const char* full_filename,
+ virtual void send(LogSeverity severity, const char* /* full_filename */,
const char* base_filename, int line,
const struct tm* tm_time,
const char* message, size_t message_len) {
glob_t g;
const int r = glob(pattern.c_str(), 0, NULL, &g);
CHECK((r == 0) || (r == GLOB_NOMATCH)) << ": error matching " << pattern;
- for (int i = 0; i < g.gl_pathc; i++) {
+ for (size_t i = 0; i < g.gl_pathc; i++) {
files->push_back(string(g.gl_pathv[i]));
}
globfree(&g);
LOG(FATAL) << "No directory separator.";
}
const string dirname = pattern.substr(0, index + 1);
- if (FAILED(handle)) {
+ if (handle == INVALID_HANDLE_VALUE) {
// Finding no files is OK.
return;
}
do {
files->push_back(dirname + data.cFileName);
} while (FindNextFileA(handle, &data));
- LOG_SYSRESULT(FindClose(handle));
+ BOOL result = FindClose(handle);
+ LOG_SYSRESULT(result);
#else
# error There is no way to do glob.
#endif
static void CheckFile(const string& name, const string& expected_string) {
vector<string> files;
GetFiles(name + "*", &files);
- CHECK_EQ(files.size(), 1);
+ CHECK_EQ(files.size(), 1UL);
FILE* file = fopen(files[0].c_str(), "r");
CHECK(file != NULL) << ": could not open " << files[0];
// Check that file name ends with extension
vector<string> filenames;
GetFiles(dest + "*", &filenames);
- CHECK_EQ(filenames.size(), 1);
+ CHECK_EQ(filenames.size(), 1UL);
CHECK(strstr(filenames[0].c_str(), "specialextension") != NULL);
// Release file handle for the destination file to unlock the file in Windows.
struct MyLogger : public base::Logger {
string data;
- virtual void Write(bool should_flush,
- time_t timestamp,
+ virtual void Write(bool /* should_flush */,
+ time_t /* timestamp */,
const char* message,
int length) {
data.append(message, length);
// (re)define LogSink interface
- virtual void send(LogSeverity severity, const char* full_filename,
+ virtual void send(LogSeverity severity, const char* /* full_filename */,
const char* base_filename, int line,
const struct tm* tm_time,
const char* message, size_t message_len) {
for (size_t i = 0; i < global_messages.size(); ++i) {
LOG(INFO) << "Sink capture: " << global_messages[i];
}
- CHECK_EQ(global_messages.size(), 3);
+ CHECK_EQ(global_messages.size(), 3UL);
}
TEST(Strerror, logging) {
CHECK_STREQ(buf, "");
CHECK_EQ(posix_strerror_r(errcode, buf, buf_size), 0);
CHECK_STREQ(buf, msg);
- free(msg);
delete[] buf;
+ CHECK_EQ(msg, StrError(errcode));
+ free(msg);
}
// Simple routines to look at the sizes of generated code for LOG(FATAL) and
#endif // HAVE_LIB_GMOCK
struct UserDefinedClass {
- bool operator==(const UserDefinedClass& rhs) const { return true; }
+ bool operator==(const UserDefinedClass&) const { return true; }
};
-inline ostream& operator<<(ostream& out, const UserDefinedClass& u) {
+inline ostream& operator<<(ostream& out, const UserDefinedClass&) {
out << "OK";
return out;
}
UserDefinedClass u;
vector<string> buf;
LOG_STRING(INFO, &buf) << u;
- CHECK_EQ(1, buf.size());
+ CHECK_EQ(1UL, buf.size());
CHECK(buf[0].find("OK") != string::npos);
// We must be able to compile this.