diff --git a/test/dbus-sdr/sensorcommands_unittest.cpp b/test/dbus-sdr/sensorcommands_unittest.cpp
index bcd2f44..6cdcd2b 100644
--- a/test/dbus-sdr/sensorcommands_unittest.cpp
+++ b/test/dbus-sdr/sensorcommands_unittest.cpp
@@ -67,8 +67,8 @@
     if (bSigned)
     {
         int8_t expect = x;
-        int8_t actual =
-            ipmi::scaleIPMIValueFromDouble(y, M, rExp, B, bExp, bSigned);
+        int8_t actual = ipmi::scaleIPMIValueFromDouble(y, M, rExp, B, bExp,
+                                                       bSigned);
 
         result = actual;
         yRoundtrip = ipmitool_y_from_x(actual, M, rExp, B, bExp, bSigned);
@@ -78,8 +78,8 @@
     else
     {
         uint8_t expect = x;
-        uint8_t actual =
-            ipmi::scaleIPMIValueFromDouble(y, M, rExp, B, bExp, bSigned);
+        uint8_t actual = ipmi::scaleIPMIValueFromDouble(y, M, rExp, B, bExp,
+                                                        bSigned);
 
         result = actual;
         yRoundtrip = ipmitool_y_from_x(actual, M, rExp, B, bExp, bSigned);
@@ -430,8 +430,8 @@
         EXPECT_EQ(bExp, -1);
     }
 
-    scaledVal =
-        ipmi::scaleIPMIValueFromDouble(5, mValue, rExp, bValue, bExp, bSigned);
+    scaledVal = ipmi::scaleIPMIValueFromDouble(5, mValue, rExp, bValue, bExp,
+                                               bSigned);
 
     expected = 5 / (mValue * std::pow(10, rExp));
     EXPECT_NEAR(scaledVal, expected, expected * 0.01);
diff --git a/test/entitymap_json_unittest.cpp b/test/entitymap_json_unittest.cpp
index a380a9e..4993351 100644
--- a/test/entitymap_json_unittest.cpp
+++ b/test/entitymap_json_unittest.cpp
@@ -2,6 +2,7 @@
 
 #include <ipmid/types.hpp>
 #include <nlohmann/json.hpp>
+
 #include <utility>
 
 #include <gmock/gmock.h>
diff --git a/test/message/pack.cpp b/test/message/pack.cpp
index 2eae1ec..334750e 100644
--- a/test/message/pack.cpp
+++ b/test/message/pack.cpp
@@ -483,8 +483,8 @@
                             sizeof(currentSessions) + 3 * sizeof(uint8_t) +
                             sizeof(uint32_t) + sizeof(uint8_t) * macSize +
                             sizeof(uint16_t));
-    uint8_t protocol_channel =
-        (static_cast<uint8_t>(protocol) << 4) | static_cast<uint8_t>(channel);
+    uint8_t protocol_channel = (static_cast<uint8_t>(protocol) << 4) |
+                               static_cast<uint8_t>(channel);
     ipmi::SecureBuffer k = {handle, maxSessions, currentSessions, userID, priv,
                             protocol_channel,
                             // ip addr
diff --git a/test/message/payload.cpp b/test/message/payload.cpp
index 59947c6..5931694 100644
--- a/test/message/payload.cpp
+++ b/test/message/payload.cpp
@@ -19,6 +19,7 @@
 
 #include <ipmid/api.hpp>
 #include <ipmid/message.hpp>
+
 #include <stdexcept>
 
 #include <gtest/gtest.h>
@@ -314,19 +315,22 @@
 
 std::vector<std::string> logs;
 
-extern "C" {
-int sd_journal_send(const char* format, ...)
+extern "C"
 {
-    logs.push_back(format);
-    return 0;
-}
+    int sd_journal_send(const char* format, ...)
+    {
+        logs.push_back(format);
+        return 0;
+    }
 
-int sd_journal_send_with_location(const char* /*file*/, const char* /*line*/,
-                                  const char* /*func*/, const char* format, ...)
-{
-    logs.push_back(format);
-    return 0;
-}
+    int sd_journal_send_with_location(const char* /*file*/,
+                                      const char* /*line*/,
+                                      const char* /*func*/, const char* format,
+                                      ...)
+    {
+        logs.push_back(format);
+        return 0;
+    }
 }
 
 class PayloadLogging : public testing::Test
@@ -436,7 +440,6 @@
         throw std::runtime_error("test");
     }
     catch (...)
-    {
-    }
+    {}
     EXPECT_EQ(logs.size(), 0);
 }
diff --git a/test/oemrouter_unittest.cpp b/test/oemrouter_unittest.cpp
index 49a1382..2be5f55 100644
--- a/test/oemrouter_unittest.cpp
+++ b/test/oemrouter_unittest.cpp
@@ -1,9 +1,10 @@
+#include "sample.h"
+
 #include <ipmid/api.h>
 
-#include <cstring>
 #include <ipmid/oemrouter.hpp>
 
-#include "sample.h"
+#include <cstring>
 
 #include <gtest/gtest.h>
 
