diff options
author | Torok Edwin <edwintorok@gmail.com> | 2010-01-22 15:51:31 +0000 |
---|---|---|
committer | Torok Edwin <edwintorok@gmail.com> | 2010-01-22 15:51:31 +0000 |
commit | b0a5baefaa74411e441631343e2c50bb7535e893 (patch) | |
tree | e654263ef49cefd754d5e75e6836c881c3d4a96a | |
parent | 12bdbf1ca80a1c7a18020f8fd4482180afcfe6f4 (diff) |
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
-rw-r--r-- | lib/System/Unix/TimeValue.inc | 2 | ||||
-rw-r--r-- | unittests/Support/System.cpp | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/System/Unix/TimeValue.inc b/lib/System/Unix/TimeValue.inc index 1ae8c7184d..d8cc8f55ee 100644 --- a/lib/System/Unix/TimeValue.inc +++ b/lib/System/Unix/TimeValue.inc @@ -48,7 +48,7 @@ TimeValue TimeValue::now() { } return TimeValue( - static_cast<TimeValue::SecondsType>( the_time.tv_sec ), + static_cast<TimeValue::SecondsType>( the_time.tv_sec + PosixZeroTime.seconds_ ), static_cast<TimeValue::NanoSecondsType>( the_time.tv_usec * NANOSECONDS_PER_MICROSECOND ) ); } diff --git a/unittests/Support/System.cpp b/unittests/Support/System.cpp new file mode 100644 index 0000000000..b3dd17d380 --- /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 <time.h> + +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); +} +} |