diff --git a/test/openpower-pels/device_callouts_test.cpp b/test/openpower-pels/device_callouts_test.cpp
index 71dff13..e02360a 100644
--- a/test/openpower-pels/device_callouts_test.cpp
+++ b/test/openpower-pels/device_callouts_test.cpp
@@ -312,7 +312,6 @@
 // Test determining the callout type from the device path
 TEST_F(DeviceCalloutsTest, getCalloutTypeTest)
 {
-
     // Invalid
     {
         EXPECT_EQ(util::getCalloutType("/some/bad/device/path"),
@@ -347,7 +346,6 @@
 
     // FSI-SPI
     {
-
         EXPECT_EQ(
             util::getCalloutType(
                 "/sys/devices/platform/ahb/ahb:apb/1e79b000.fsi/fsi-master/"
@@ -360,7 +358,6 @@
 // Test getting I2C search keys
 TEST_F(DeviceCalloutsTest, getI2CSearchKeysTest)
 {
-
     {
         EXPECT_EQ(util::getI2CSearchKeys(
                       "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/"
diff --git a/test/openpower-pels/host_notifier_test.cpp b/test/openpower-pels/host_notifier_test.cpp
index 1906ba3..42a87c7 100644
--- a/test/openpower-pels/host_notifier_test.cpp
+++ b/test/openpower-pels/host_notifier_test.cpp
@@ -47,8 +47,8 @@
 
         ON_CALL(dataIface, getHostPELEnablement).WillByDefault(Return(true));
 
-        hostIface =
-            std::make_unique<NiceMock<MockHostInterface>>(event, dataIface);
+        hostIface = std::make_unique<NiceMock<MockHostInterface>>(event,
+                                                                  dataIface);
 
         mockHostIface = reinterpret_cast<MockHostInterface*>(hostIface.get());
 
diff --git a/test/openpower-pels/mocks.hpp b/test/openpower-pels/mocks.hpp
index 4ff0f4f..ef00397 100644
--- a/test/openpower-pels/mocks.hpp
+++ b/test/openpower-pels/mocks.hpp
@@ -3,9 +3,10 @@
 
 #include <fcntl.h>
 
-#include <filesystem>
 #include <sdeventplus/source/io.hpp>
 
+#include <filesystem>
+
 #include <gmock/gmock.h>
 
 namespace openpower
@@ -16,9 +17,7 @@
 class MockDataInterface : public DataInterfaceBase
 {
   public:
-    MockDataInterface()
-    {
-    }
+    MockDataInterface() {}
     MOCK_METHOD(std::string, getMachineTypeModel, (), (const override));
     MOCK_METHOD(std::string, getMachineSerialNumber, (), (const override));
     MOCK_METHOD(std::string, getServerFWVersion, (), (const override));
diff --git a/test/openpower-pels/pel_manager_test.cpp b/test/openpower-pels/pel_manager_test.cpp
index 00c3fd6..b27ca60 100644
--- a/test/openpower-pels/pel_manager_test.cpp
+++ b/test/openpower-pels/pel_manager_test.cpp
@@ -18,11 +18,12 @@
 #include "mocks.hpp"
 #include "pel_utils.hpp"
 
-#include <fstream>
-#include <regex>
 #include <sdbusplus/test/sdbus_mock.hpp>
 #include <xyz/openbmc_project/Common/error.hpp>
 
+#include <fstream>
+#include <regex>
+
 #include <gtest/gtest.h>
 
 using namespace openpower::pels;
diff --git a/test/openpower-pels/pel_test.cpp b/test/openpower-pels/pel_test.cpp
index d5cd373..e317997 100644
--- a/test/openpower-pels/pel_test.cpp
+++ b/test/openpower-pels/pel_test.cpp
@@ -33,8 +33,7 @@
 using ::testing::SetArgReferee;
 
 class PELTest : public CleanLogID
-{
-};
+{};
 
 fs::path makeTempDir()
 {
diff --git a/test/openpower-pels/private_header_test.cpp b/test/openpower-pels/private_header_test.cpp
index 31a1b61..f7c1446 100644
--- a/test/openpower-pels/private_header_test.cpp
+++ b/test/openpower-pels/private_header_test.cpp
@@ -21,8 +21,7 @@
 using namespace openpower::pels;
 
 class PrivateHeaderTest : public CleanLogID
-{
-};
+{};
 
 TEST_F(PrivateHeaderTest, SizeTest)
 {
diff --git a/test/openpower-pels/real_pel_test.cpp b/test/openpower-pels/real_pel_test.cpp
index a170812..53bf40f 100644
--- a/test/openpower-pels/real_pel_test.cpp
+++ b/test/openpower-pels/real_pel_test.cpp
@@ -26,8 +26,7 @@
 using namespace openpower::pels;
 
 class PELTest : public CleanLogID
-{
-};
+{};
 
 // A PEL from a real system
 const std::vector<uint8_t> realPELData{
diff --git a/test/openpower-pels/registry_test.cpp b/test/openpower-pels/registry_test.cpp
index edfbeda..6a13fc6 100644
--- a/test/openpower-pels/registry_test.cpp
+++ b/test/openpower-pels/registry_test.cpp
@@ -15,9 +15,10 @@
  */
 #include "extensions/openpower-pels/registry.hpp"
 
+#include <nlohmann/json.hpp>
+
 #include <filesystem>
 #include <fstream>
-#include <nlohmann/json.hpp>
 
 #include <gtest/gtest.h>
 
@@ -224,8 +225,8 @@
     auto path = RegistryTest::writeData(registryData);
     Registry registry{path};
 
-    auto entry =
-        registry.lookup("xyz.openbmc_project.Power.Fault", LookupType::name);
+    auto entry = registry.lookup("xyz.openbmc_project.Power.Fault",
+                                 LookupType::name);
     ASSERT_TRUE(entry);
     EXPECT_EQ(entry->name, "xyz.openbmc_project.Power.Fault");
     EXPECT_EQ(entry->subsystem, 0x61);
@@ -360,8 +361,8 @@
     using namespace openpower::pels::message::helper;
 
     // Get it from the JSON
-    auto id =
-        getComponentID(0xBD, 0x4200, R"({"ComponentID":"0x4200"})"_json, "foo");
+    auto id = getComponentID(0xBD, 0x4200, R"({"ComponentID":"0x4200"})"_json,
+                             "foo");
     EXPECT_EQ(id, 0x4200);
 
     // Get it from the reason code on a 0xBD SRC
