diff --git a/tools/test/data_interface_mock.hpp b/tools/test/data_interface_mock.hpp
index c69de72..a533a32 100644
--- a/tools/test/data_interface_mock.hpp
+++ b/tools/test/data_interface_mock.hpp
@@ -9,7 +9,6 @@
 
 class DataInterfaceMock : public DataInterface
 {
-
   public:
     virtual ~DataInterfaceMock() = default;
 
diff --git a/tools/test/io_unittest.cpp b/tools/test/io_unittest.cpp
index 492c699..2a3f90c 100644
--- a/tools/test/io_unittest.cpp
+++ b/tools/test/io_unittest.cpp
@@ -21,8 +21,7 @@
 class DevMemTest : public ::testing::Test
 {
   protected:
-    DevMemTest() : devmem(std::make_unique<DevMemDevice>(&sys_mock))
-    {}
+    DevMemTest() : devmem(std::make_unique<DevMemDevice>(&sys_mock)) {}
 
     internal::InternalSysMock sys_mock;
     std::unique_ptr<DevMemDevice> devmem;
@@ -104,8 +103,7 @@
   protected:
     static constexpr char path[] = "/dev/fun";
 
-    PpcMemTest() : devmem(std::make_unique<PpcMemDevice>(path, &sys_mock))
-    {}
+    PpcMemTest() : devmem(std::make_unique<PpcMemDevice>(path, &sys_mock)) {}
 
     internal::InternalSysMock sys_mock;
     std::unique_ptr<PpcMemDevice> devmem;
diff --git a/tools/test/tools_helper_unittest.cpp b/tools/test/tools_helper_unittest.cpp
index cfe5208..572e136 100644
--- a/tools/test/tools_helper_unittest.cpp
+++ b/tools/test/tools_helper_unittest.cpp
@@ -51,8 +51,8 @@
 {
     ipmiblob::StatResponse blobResponse = {};
     /* the other details of the response are ignored, and should be. */
-    blobResponse.blob_state =
-        blobs::StateFlags::open_read | blobs::StateFlags::committed;
+    blobResponse.blob_state = blobs::StateFlags::open_read |
+                              blobs::StateFlags::committed;
 
     EXPECT_CALL(blobMock, getStat(TypedEq<std::uint16_t>(session)))
         .WillOnce(Return(blobResponse));
diff --git a/tools/test/tools_pci_unittest.cpp b/tools/test/tools_pci_unittest.cpp
index c3ce610..96a204a 100644
--- a/tools/test/tools_pci_unittest.cpp
+++ b/tools/test/tools_pci_unittest.cpp
@@ -338,8 +338,8 @@
 INSTANTIATE_TEST_SUITE_P(Default, PciSetupTest,
                          ::testing::Values(&nuvotonDevice, &aspeedDevice),
                          [](const testing::TestParamInfo<Device*>& info) {
-                             return info.param->getName();
-                         });
+    return info.param->getName();
+});
 
 TEST(NuvotonWriteTest, TooLarge)
 {
@@ -660,8 +660,8 @@
 
     {
         std::vector<std::uint8_t> enabledRegion(mockRegionSize);
-        enabledRegion[AspeedDevice::config] =
-            defaultVal | AspeedDevice::bridgeEnabled;
+        enabledRegion[AspeedDevice::config] = defaultVal |
+                                              AspeedDevice::bridgeEnabled;
         EXPECT_THAT(region, ContainerEq(enabledRegion));
     }
 
@@ -689,13 +689,13 @@
     expectSetup(pciMock, dev, &aspeedDevice, region.data());
 
     /* Setting skipBridgeDisable to true */
-    std::unique_ptr<PciBridgeIntf> bridge =
-        aspeedDevice.getBridge(&pciMock, true);
+    std::unique_ptr<PciBridgeIntf> bridge = aspeedDevice.getBridge(&pciMock,
+                                                                   true);
 
     {
         std::vector<std::uint8_t> enabledRegion(mockRegionSize);
-        enabledRegion[AspeedDevice::config] =
-            defaultVal | AspeedDevice::bridgeEnabled;
+        enabledRegion[AspeedDevice::config] = defaultVal |
+                                              AspeedDevice::bridgeEnabled;
         EXPECT_THAT(region, ContainerEq(enabledRegion));
     }
 
@@ -703,8 +703,8 @@
 
     {
         std::vector<std::uint8_t> disabledRegion(mockRegionSize);
-        disabledRegion[AspeedDevice::config] =
-            defaultVal | AspeedDevice::bridgeEnabled;
+        disabledRegion[AspeedDevice::config] = defaultVal |
+                                               AspeedDevice::bridgeEnabled;
         EXPECT_THAT(region, ContainerEq(disabledRegion));
     }
 }
@@ -726,8 +726,8 @@
 
     {
         std::vector<std::uint8_t> enabledRegion(mockRegionSize);
-        enabledRegion[AspeedDevice::config] =
-            defaultVal | AspeedDevice::bridgeEnabled;
+        enabledRegion[AspeedDevice::config] = defaultVal |
+                                              AspeedDevice::bridgeEnabled;
         EXPECT_THAT(region, ContainerEq(enabledRegion));
     }
 
diff --git a/tools/test/tools_updater_unittest.cpp b/tools/test/tools_updater_unittest.cpp
index e04cde8..ac21a1e 100644
--- a/tools/test/tools_updater_unittest.cpp
+++ b/tools/test/tools_updater_unittest.cpp
@@ -204,8 +204,8 @@
     EXPECT_CALL(blobMock, openBlob(ipmi_flash::biosVersionBlobId, _))
         .WillOnce(Return(session));
     ipmiblob::StatResponse readVersionResponse = {};
-    readVersionResponse.blob_state =
-        blobs::StateFlags::open_read | blobs::StateFlags::committed;
+    readVersionResponse.blob_state = blobs::StateFlags::open_read |
+                                     blobs::StateFlags::committed;
     readVersionResponse.size = 10;
     EXPECT_CALL(blobMock, getStat(TypedEq<std::uint16_t>(session)))
         .WillOnce(Return(readVersionResponse));
@@ -222,8 +222,8 @@
     EXPECT_CALL(blobMock, openBlob(ipmi_flash::biosVersionBlobId, _))
         .WillOnce(Return(session));
     ipmiblob::StatResponse readVersionResponse = {};
-    readVersionResponse.blob_state =
-        blobs::StateFlags::open_read | blobs::StateFlags::committed;
+    readVersionResponse.blob_state = blobs::StateFlags::open_read |
+                                     blobs::StateFlags::committed;
     readVersionResponse.size = 10;
     EXPECT_CALL(blobMock, getStat(TypedEq<std::uint16_t>(session)))
         .WillOnce(Return(readVersionResponse));
