diff --git a/test/bm_mode_transition_unittest.cpp b/test/bm_mode_transition_unittest.cpp
index b39d56c..2302734 100644
--- a/test/bm_mode_transition_unittest.cpp
+++ b/test/bm_mode_transition_unittest.cpp
@@ -45,8 +45,7 @@
 {
   public:
     MockFsHandler(std::unique_ptr<FileSystemMock> mock,
-                  const std::string& config = "") :
-        Handler(config)
+                  const std::string& config = "") : Handler(config)
     {
         fsPtr_ = move(mock);
     }
diff --git a/test/eth_unittest.cpp b/test/eth_unittest.cpp
index 14b0875..50c9ed7 100644
--- a/test/eth_unittest.cpp
+++ b/test/eth_unittest.cpp
@@ -53,9 +53,9 @@
     EXPECT_EQ(SysOEMCommands::SysGetEthDevice, result.first);
     EXPECT_EQ(expectedChannel, data[0]);
     EXPECT_EQ(expectedAnswer.size(), data[1]);
-    EXPECT_EQ(
-        expectedAnswer.data(),
-        std::string(data.begin() + sizeof(struct EthDeviceReply), data.end()));
+    EXPECT_EQ(expectedAnswer.data(),
+              std::string(data.begin() + sizeof(struct EthDeviceReply),
+                          data.end()));
 }
 
 TEST(EthCommandTest, ValidPopulatedReturnsSuccess)
@@ -77,9 +77,9 @@
     EXPECT_EQ(SysOEMCommands::SysGetEthDevice, result.first);
     EXPECT_EQ(expectedChannel, data[0]);
     EXPECT_EQ(expectedAnswer.size(), data[1]);
-    EXPECT_EQ(
-        expectedAnswer.data(),
-        std::string(data.begin() + sizeof(struct EthDeviceReply), data.end()));
+    EXPECT_EQ(expectedAnswer.data(),
+              std::string(data.begin() + sizeof(struct EthDeviceReply),
+                          data.end()));
 }
 } // namespace ipmi
 } // namespace google
diff --git a/test/handler_unittest.cpp b/test/handler_unittest.cpp
index 2fb470e..5d01b73 100644
--- a/test/handler_unittest.cpp
+++ b/test/handler_unittest.cpp
@@ -142,8 +142,7 @@
   public:
     MockDbusHandler(sdbusplus::SdBusMock& mock,
                     const std::string& config = "") :
-        Handler(config),
-        mock_(&mock)
+        Handler(config), mock_(&mock)
     {}
 
   protected:
@@ -305,11 +304,11 @@
                       const std::string& service, const std::string& objPath,
                       const std::string& interface, const std::string& function)
 {
-    EXPECT_CALL(
-        mock, sd_bus_message_new_method_call(_,         // sd_bus *bus,
-                                             NotNull(), // sd_bus_message **m
-                                             StrEq(service), StrEq(objPath),
-                                             StrEq(interface), StrEq(function)))
+    EXPECT_CALL(mock, sd_bus_message_new_method_call(
+                          _,         // sd_bus *bus,
+                          NotNull(), // sd_bus_message **m
+                          StrEq(service), StrEq(objPath), StrEq(interface),
+                          StrEq(function)))
         .WillOnce(Return(-ENOTCONN));
 }
 
@@ -383,11 +382,11 @@
                           StrEq("com.google.custom_accel.BAR"), StrEq("Read")))
         .WillOnce(DoAll(SetArgPointee<1>(method), Return(0)));
 
-    EXPECT_CALL(
-        mock, sd_bus_message_append_basic(
-                  method, SD_BUS_TYPE_UINT64,
-                  MatcherCast<const void*>(
-                      SafeMatcherCast<const uint64_t*>(Pointee(Eq(address))))))
+    EXPECT_CALL(mock,
+                sd_bus_message_append_basic(
+                    method, SD_BUS_TYPE_UINT64,
+                    MatcherCast<const void*>(SafeMatcherCast<const uint64_t*>(
+                        Pointee(Eq(address))))))
         .WillOnce(Return(1));
 
     EXPECT_CALL(mock,
@@ -515,11 +514,11 @@
         .WillOnce(DoAll(TraceDbus("sd_bus_message_new_method_call"),
                         SetArgPointee<1>(method), Return(0)));
 
-    EXPECT_CALL(
-        mock, sd_bus_message_append_basic(
-                  method, SD_BUS_TYPE_UINT64,
-                  MatcherCast<const void*>(
-                      SafeMatcherCast<const uint64_t*>(Pointee(Eq(address))))))
+    EXPECT_CALL(mock,
+                sd_bus_message_append_basic(
+                    method, SD_BUS_TYPE_UINT64,
+                    MatcherCast<const void*>(SafeMatcherCast<const uint64_t*>(
+                        Pointee(Eq(address))))))
         .WillOnce(DoAll(TraceDbus("sd_bus_message_append_basic(address) -> 1"),
                         Return(1)));
 
diff --git a/test/helper.cpp b/test/helper.cpp
index 191c944..1c6d76a 100644
--- a/test/helper.cpp
+++ b/test/helper.cpp
@@ -25,9 +25,8 @@
 namespace ipmi
 {
 
-std::pair<std::uint8_t, std::vector<std::uint8_t>>
-    ValidateReply(::ipmi::RspType<std::uint8_t, std::vector<uint8_t>> reply,
-                  bool hasData)
+std::pair<std::uint8_t, std::vector<std::uint8_t>> ValidateReply(
+    ::ipmi::RspType<std::uint8_t, std::vector<uint8_t>> reply, bool hasData)
 {
     // Reply is in the form of
     // std::tuple<ipmi::Cc, std::optional<std::tuple<RetTypes...>>>
