diff --git a/test/ibm/hypervisor-network-mgr-test/mock_hyp_sys_config.hpp b/test/ibm/hypervisor-network-mgr-test/mock_hyp_sys_config.hpp
index f44de21..8898b31 100644
--- a/test/ibm/hypervisor-network-mgr-test/mock_hyp_sys_config.hpp
+++ b/test/ibm/hypervisor-network-mgr-test/mock_hyp_sys_config.hpp
@@ -15,8 +15,7 @@
 {
   public:
     MockHypSysConfig(sdbusplus::bus_t& bus, const std::string& objPath,
-                     HypNetworkMgr& parent) :
-        HypSysConfig(bus, objPath, parent)
+                     HypNetworkMgr& parent) : HypSysConfig(bus, objPath, parent)
     {}
 
     void setHostname(std::string hn)
diff --git a/test/mock_syscall.cpp b/test/mock_syscall.cpp
index fa2ae2d..85ea38f 100644
--- a/test/mock_syscall.cpp
+++ b/test/mock_syscall.cpp
@@ -105,8 +105,8 @@
         const auto nlbegin = msgBuf.size();
         msgBuf.append(NLMSG_SPACE(sizeof(ifinfomsg)), '\0');
         {
-            auto& info = *reinterpret_cast<ifinfomsg*>(msgBuf.data() + nlbegin +
-                                                       NLMSG_HDRLEN);
+            auto& info = *reinterpret_cast<ifinfomsg*>(
+                msgBuf.data() + nlbegin + NLMSG_HDRLEN);
             info.ifi_index = i.idx;
             info.ifi_flags = i.flags;
         }
diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index 27d9b1e..72579f3 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -39,9 +39,8 @@
 
     {}
 
-    static MockEthernetInterface
-        makeInterface(stdplus::PinnedRef<sdbusplus::bus_t> bus,
-                      TestManager& manager)
+    static MockEthernetInterface makeInterface(
+        stdplus::PinnedRef<sdbusplus::bus_t> bus, TestManager& manager)
     {
         AllIntfInfo info{InterfaceInfo{
             .type = ARPHRD_ETHER, .idx = 1, .flags = 0, .name = "test0"}};
@@ -76,12 +75,13 @@
     constexpr stdplus::EtherAddr mac{0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
     constexpr unsigned mtu = 150;
 
-    AllIntfInfo info{InterfaceInfo{.type = ARPHRD_ETHER,
-                                   .idx = 2,
-                                   .flags = IFF_RUNNING,
-                                   .name = "test1",
-                                   .mac = mac,
-                                   .mtu = mtu}};
+    AllIntfInfo info{InterfaceInfo{
+        .type = ARPHRD_ETHER,
+        .idx = 2,
+        .flags = IFF_RUNNING,
+        .name = "test1",
+        .mac = mac,
+        .mtu = mtu}};
     MockEthernetInterface intf(bus, manager, info,
                                "/xyz/openbmc_test/network"sv, config::Parser());
 
diff --git a/test/test_network_manager.hpp b/test/test_network_manager.hpp
index e8b9fcc..a9a7985 100644
--- a/test/test_network_manager.hpp
+++ b/test/test_network_manager.hpp
@@ -24,8 +24,8 @@
     {
         EXPECT_CALL(mockReload, setCallback(testing::_))
             .WillOnce([&](fu2::unique_function<void()>&& cb) {
-            reloadCb = std::move(cb);
-        });
+                reloadCb = std::move(cb);
+            });
         return mockReload;
     }
 };
diff --git a/test/test_rtnetlink.cpp b/test/test_rtnetlink.cpp
index 795dcdc..14bec3c 100644
--- a/test/test_rtnetlink.cpp
+++ b/test/test_rtnetlink.cpp
@@ -55,12 +55,13 @@
     msg.mtu_hdr.rta_len = RTA_LENGTH(sizeof(msg.mtu));
 
     auto info = intfFromRtm(stdplus::raw::asView<char>(msg));
-    auto expected = InterfaceInfo{.type = 4,
-                                  .idx = 1,
-                                  .flags = 2,
-                                  .name = "eth0",
-                                  .mac = ether_addr{0, 1, 2, 3, 4, 5},
-                                  .mtu = 50};
+    auto expected = InterfaceInfo{
+        .type = 4,
+        .idx = 1,
+        .flags = 2,
+        .name = "eth0",
+        .mac = ether_addr{0, 1, 2, 3, 4, 5},
+        .mtu = 50};
     EXPECT_EQ(info, expected);
 }
 
