diff --git a/test/source/base.cpp b/test/source/base.cpp
index 1b2ed1e..f192546 100644
--- a/test/source/base.cpp
+++ b/test/source/base.cpp
@@ -1,21 +1,24 @@
-#include <cerrno>
-#include <functional>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <memory>
-#include <optional>
+#include <systemd/sd-event.h>
+
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/exception.hpp>
 #include <sdeventplus/internal/sdevent.hpp>
 #include <sdeventplus/source/base.hpp>
 #include <sdeventplus/test/sdevent.hpp>
 #include <sdeventplus/types.hpp>
+
+#include <cerrno>
+#include <functional>
+#include <memory>
+#include <optional>
 #include <string>
-#include <systemd/sd-event.h>
 #include <tuple>
 #include <type_traits>
 #include <utility>
 
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
 namespace sdeventplus
 {
 namespace source
@@ -39,8 +42,7 @@
 
     BaseImpl(const BaseImpl& other, sdeventplus::internal::NoOwn) :
         Base(other, sdeventplus::internal::NoOwn())
-    {
-    }
+    {}
 
     using Base::get_prepare;
 };
@@ -50,8 +52,7 @@
   public:
     BaseImplData(const BaseImpl& base) :
         BaseImpl(base, sdeventplus::internal::NoOwn()), BaseData(base)
-    {
-    }
+    {}
 };
 
 BaseImpl::BaseImpl(const Event& event, sd_event_source* source,
@@ -195,8 +196,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/child.cpp b/test/source/child.cpp
index 71a8789..0928433 100644
--- a/test/source/child.cpp
+++ b/test/source/child.cpp
@@ -1,17 +1,20 @@
-#include <cerrno>
-#include <functional>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <memory>
+#include <sys/wait.h>
+#include <systemd/sd-event.h>
+
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/exception.hpp>
 #include <sdeventplus/source/child.hpp>
 #include <sdeventplus/test/sdevent.hpp>
-#include <sys/wait.h>
-#include <systemd/sd-event.h>
+
+#include <cerrno>
+#include <functional>
+#include <memory>
 #include <type_traits>
 #include <utility>
 
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
 namespace sdeventplus
 {
 namespace source
diff --git a/test/source/event.cpp b/test/source/event.cpp
index 0d86617..95a3dc0 100644
--- a/test/source/event.cpp
+++ b/test/source/event.cpp
@@ -1,16 +1,19 @@
-#include <cerrno>
-#include <functional>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <memory>
+#include <systemd/sd-event.h>
+
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/exception.hpp>
 #include <sdeventplus/source/event.hpp>
 #include <sdeventplus/test/sdevent.hpp>
-#include <systemd/sd-event.h>
+
+#include <cerrno>
+#include <functional>
+#include <memory>
 #include <type_traits>
 #include <utility>
 
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
 namespace sdeventplus
 {
 namespace source
diff --git a/test/source/io.cpp b/test/source/io.cpp
index e8abb82..2a05d1e 100644
--- a/test/source/io.cpp
+++ b/test/source/io.cpp
@@ -1,16 +1,19 @@
-#include <cerrno>
-#include <functional>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <memory>
+#include <systemd/sd-event.h>
+
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/exception.hpp>
 #include <sdeventplus/source/io.hpp>
 #include <sdeventplus/test/sdevent.hpp>
-#include <systemd/sd-event.h>
+
+#include <cerrno>
+#include <functional>
+#include <memory>
 #include <type_traits>
 #include <utility>
 
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
 namespace sdeventplus
 {
 namespace source
@@ -150,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 9ac0f67..effd7a3 100644
--- a/test/source/signal.cpp
+++ b/test/source/signal.cpp
@@ -1,17 +1,20 @@
-#include <cerrno>
-#include <functional>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <memory>
+#include <signal.h>
+#include <systemd/sd-event.h>
+
 #include <sdeventplus/event.hpp>
 #include <sdeventplus/exception.hpp>
 #include <sdeventplus/source/signal.hpp>
 #include <sdeventplus/test/sdevent.hpp>
-#include <signal.h>
-#include <systemd/sd-event.h>
+
+#include <cerrno>
+#include <functional>
+#include <memory>
 #include <type_traits>
 #include <utility>
 
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
 namespace sdeventplus
 {
 namespace source
@@ -81,8 +84,8 @@
     }
     int completions = 0;
     const struct signalfd_siginfo* return_si;
-    Signal::Callback callback = [&](Signal&,
-                                    const struct signalfd_siginfo* si) {
+    Signal::Callback callback =
+        [&](Signal&, const struct signalfd_siginfo* si) {
         return_si = si;
         completions++;
     };
@@ -113,8 +116,8 @@
                                           testing::_, nullptr))
         .WillOnce(Return(-EINVAL));
     int completions = 0;
-    Signal::Callback callback = [&completions](Signal&,
-                                               const struct signalfd_siginfo*) {
+    Signal::Callback callback =
+        [&completions](Signal&, const struct signalfd_siginfo*) {
         completions++;
     };
     EXPECT_THROW(Signal(*event, sig, std::move(callback)), SdEventError);
diff --git a/test/source/time.cpp b/test/source/time.cpp
index 01d4ae2..5cef5d8 100644
--- a/test/source/time.cpp
+++ b/test/source/time.cpp
@@ -1,17 +1,20 @@
-#include <cerrno>
-#include <chrono>
-#include <functional>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <memory>
+#include <systemd/sd-event.h>
+#include <time.h>
+
 #include <sdeventplus/clock.hpp>
 #include <sdeventplus/exception.hpp>
 #include <sdeventplus/source/time.hpp>
 #include <sdeventplus/test/sdevent.hpp>
-#include <systemd/sd-event.h>
-#include <time.h>
+
+#include <cerrno>
+#include <chrono>
+#include <functional>
+#include <memory>
 #include <utility>
 
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
 namespace sdeventplus
 {
 namespace source
@@ -60,8 +63,8 @@
     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) {
+    Time<id>::Callback callback =
+        [&saved_time](Time<id>&, Time<id>::TimePoint time) {
         saved_time = time;
     };
 
