Handle timekeeperSingleton being nullptr in within()
[folly.git] / folly / futures / test / TimekeeperTest.cpp
index 4567b93c3f1b70558e29d4e477f1af7e252634ec..fdf17ed55d0a2523d2ff5cd030727084490d1535 100644 (file)
@@ -88,6 +88,16 @@ TEST(Timekeeper, futureSleepHandlesNullTimekeeperSingleton) {
   EXPECT_THROW(futures::sleep(one_ms).get(), NoTimekeeper);
 }
 
+TEST(Timekeeper, futureWithinHandlesNullTimekeeperSingleton) {
+  Singleton<ThreadWheelTimekeeper>::make_mock([] { return nullptr; });
+  SCOPE_EXIT {
+    Singleton<ThreadWheelTimekeeper>::make_mock();
+  };
+  Promise<int> p;
+  auto f = p.getFuture().within(one_ms);
+  EXPECT_THROW(f.get(), NoTimekeeper);
+}
+
 TEST(Timekeeper, futureDelayed) {
   auto t1 = now();
   auto dur = makeFuture()