diff --git a/test/source/base.cpp b/test/source/base.cpp
index f192546..369d6e5 100644
--- a/test/source/base.cpp
+++ b/test/source/base.cpp
@@ -56,8 +56,7 @@
 };
 
 BaseImpl::BaseImpl(const Event& event, sd_event_source* source,
-                   std::false_type) :
-    Base(event, source, std::false_type())
+                   std::false_type) : Base(event, source, std::false_type())
 {
     set_userdata(std::make_unique<BaseImplData>(*this));
 }
@@ -196,8 +195,8 @@
                     sd_event_source_set_userdata(expected_source, testing::_))
             .WillOnce(DoAll(SaveArg<1>(&userdata), Return(nullptr)));
     }
-    auto source = std::make_unique<BaseImpl>(*event, expected_source,
-                                             std::false_type());
+    auto source =
+        std::make_unique<BaseImpl>(*event, expected_source, std::false_type());
     EXPECT_CALL(mock, sd_event_source_get_userdata(expected_source))
         .WillRepeatedly(Return(userdata));
     EXPECT_FALSE(source->get_prepare());
diff --git a/test/source/io.cpp b/test/source/io.cpp
index 2a05d1e..ffb4fa6 100644
--- a/test/source/io.cpp
+++ b/test/source/io.cpp
@@ -153,8 +153,8 @@
             EXPECT_CALL(mock, sd_event_source_get_userdata(expected_source))
                 .WillRepeatedly(ReturnPointee(&userdata));
         }
-        io = std::make_unique<IO>(*event, fd, events,
-                                  [](IO&, int, uint32_t) {});
+        io =
+            std::make_unique<IO>(*event, fd, events, [](IO&, int, uint32_t) {});
     }
 
     void TearDown()
diff --git a/test/source/signal.cpp b/test/source/signal.cpp
index 4c95f3a..f04486b 100644
--- a/test/source/signal.cpp
+++ b/test/source/signal.cpp
@@ -84,11 +84,11 @@
     }
     int completions = 0;
     const struct signalfd_siginfo* return_si;
-    Signal::Callback callback = [&](Signal&,
-                                    const struct signalfd_siginfo* si) {
-        return_si = si;
-        completions++;
-    };
+    Signal::Callback callback =
+        [&](Signal&, const struct signalfd_siginfo* si) {
+            return_si = si;
+            completions++;
+        };
     Signal signal(*event, sig, std::move(callback));
     EXPECT_FALSE(callback);
     EXPECT_NE(&signal, userdata);
@@ -116,10 +116,10 @@
                                           testing::_, nullptr))
         .WillOnce(Return(-EINVAL));
     int completions = 0;
-    Signal::Callback callback = [&completions](Signal&,
-                                               const struct signalfd_siginfo*) {
-        completions++;
-    };
+    Signal::Callback callback =
+        [&completions](Signal&, const struct signalfd_siginfo*) {
+            completions++;
+        };
     EXPECT_THROW(Signal(*event, sig, std::move(callback)), SdEventError);
     EXPECT_TRUE(callback);
     EXPECT_EQ(0, completions);
diff --git a/test/source/time.cpp b/test/source/time.cpp
index 44b8228..60b7b9e 100644
--- a/test/source/time.cpp
+++ b/test/source/time.cpp
@@ -63,10 +63,10 @@
     const Time<id>::TimePoint expected_time(std::chrono::seconds{2});
     const Time<id>::Accuracy expected_accuracy(std::chrono::milliseconds{50});
     Time<id>::TimePoint saved_time;
-    Time<id>::Callback callback = [&saved_time](Time<id>&,
-                                                Time<id>::TimePoint time) {
-        saved_time = time;
-    };
+    Time<id>::Callback callback =
+        [&saved_time](Time<id>&, Time<id>::TimePoint time) {
+            saved_time = time;
+        };
 
     EXPECT_CALL(mock, sd_event_ref(expected_event))
         .WillOnce(Return(expected_event));
@@ -120,9 +120,9 @@
                 sd_event_add_time(expected_event, testing::_, CLOCK_MONOTONIC,
                                   2000000, 50000, testing::_, nullptr))
         .WillOnce(Return(-ENOSYS));
-    EXPECT_THROW(
-        Time<id>(*event, expected_time, expected_accuracy, std::move(callback)),
-        SdEventError);
+    EXPECT_THROW(Time<id>(*event, expected_time, expected_accuracy,
+                          std::move(callback)),
+                 SdEventError);
     EXPECT_TRUE(callback);
 }
 
