From b0a5baefaa74411e441631343e2c50bb7535e893 Mon Sep 17 00:00:00 2001 From: Torok Edwin Date: Fri, 22 Jan 2010 15:51:31 +0000 Subject: [PATCH] Fix TimeValue::now() on Unix. TimeValue()::now().toEpochTime() is supposed to be the same as time(), but it wasn't, because toEpoch subtracted PosixZeroTime, but now() didn't add PosixZeroTime! Add a unittest to check this works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94178 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/System/Unix/TimeValue.inc | 2 +- unittests/Support/System.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 unittests/Support/System.cpp diff --git a/lib/System/Unix/TimeValue.inc b/lib/System/Unix/TimeValue.inc index 1ae8c7184d5..d8cc8f55eec 100644 --- a/lib/System/Unix/TimeValue.inc +++ b/lib/System/Unix/TimeValue.inc @@ -48,7 +48,7 @@ TimeValue TimeValue::now() { } return TimeValue( - static_cast( the_time.tv_sec ), + static_cast( the_time.tv_sec + PosixZeroTime.seconds_ ), static_cast( the_time.tv_usec * NANOSECONDS_PER_MICROSECOND ) ); } diff --git a/unittests/Support/System.cpp b/unittests/Support/System.cpp new file mode 100644 index 00000000000..b3dd17d380d --- /dev/null +++ b/unittests/Support/System.cpp @@ -0,0 +1,16 @@ +//===- llvm/unittest/Support/System.cpp - System tests --===// +#include "gtest/gtest.h" +#include "llvm/System/TimeValue.h" +#include + +using namespace llvm; +namespace { +class SystemTest : public ::testing::Test { +}; + +TEST_F(SystemTest, TimeValue) { + sys::TimeValue now = sys::TimeValue::now(); + time_t now_t = time(NULL); + EXPECT_TRUE(abs(now_t - now.toEpochTime()) < 2); +} +} -- 2.34.1