diff --git a/test/process_unittest.cpp b/test/process_unittest.cpp
index c4273c4..e3c68a9 100644
--- a/test/process_unittest.cpp
+++ b/test/process_unittest.cpp
@@ -213,12 +213,12 @@
     std::vector<uint8_t> request(MAX_IPMI_BUFFER - 1);
     uint32_t payloadLen = sizeof(uint16_t) + sizeof(uint8_t);
 
-    IpmiBlobHandler h = [payloadLen](ManagerInterface*,
-                                     std::span<const uint8_t>) {
-        std::vector<uint8_t> output(payloadLen, 0);
-        output[2] = 0x56;
-        return ipmi::responseSuccess(output);
-    };
+    IpmiBlobHandler h =
+        [payloadLen](ManagerInterface*, std::span<const uint8_t>) {
+            std::vector<uint8_t> output(payloadLen, 0);
+            output[2] = 0x56;
+            return ipmi::responseSuccess(output);
+        };
 
     EXPECT_CALL(crcMock, generateCrc(_)).WillOnce(Return(0x3412));
 
@@ -239,12 +239,12 @@
     std::vector<uint8_t> request(MAX_IPMI_BUFFER - 1);
     uint32_t payloadLen = sizeof(uint16_t) + sizeof(uint8_t);
 
-    IpmiBlobHandler h = [payloadLen](ManagerInterface*,
-                                     std::span<const uint8_t>) {
-        std::vector<uint8_t> output(payloadLen, 0);
-        output[2] = 0x56;
-        return ipmi::responseSuccess(output);
-    };
+    IpmiBlobHandler h =
+        [payloadLen](ManagerInterface*, std::span<const uint8_t>) {
+            std::vector<uint8_t> output(payloadLen, 0);
+            output[2] = 0x56;
+            return ipmi::responseSuccess(output);
+        };
 
     EXPECT_EQ(ipmi::responseResponseError(),
               processBlobCommand(h, &manager, request, 0));
