diff --git a/libpldmresponder/test/libpldmresponder_base_test.cpp b/libpldmresponder/test/libpldmresponder_base_test.cpp
index 16c06dc..60edae3 100644
--- a/libpldmresponder/test/libpldmresponder_base_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_base_test.cpp
@@ -85,8 +85,8 @@
     uint8_t retFlag = PLDM_START_AND_END;
     ver32_t version = {0x00, 0xF0, 0xF0, 0xF1};
 
-    auto rc =
-        encode_get_version_req(0, transferHandle, flag, pldmType, request);
+    auto rc = encode_get_version_req(0, transferHandle, flag, pldmType,
+                                     request);
 
     ASSERT_EQ(0, rc);
 
@@ -116,8 +116,8 @@
     uint32_t transferHandle = 0x0;
     uint8_t flag = PLDM_GET_FIRSTPART;
 
-    auto rc =
-        encode_get_version_req(0, transferHandle, flag, pldmType, request);
+    auto rc = encode_get_version_req(0, transferHandle, flag, pldmType,
+                                     request);
 
     ASSERT_EQ(0, rc);
 
diff --git a/libpldmresponder/test/libpldmresponder_bios_config_test.cpp b/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
index 4d4b843..4990f5a 100644
--- a/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_bios_config_test.cpp
@@ -171,8 +171,8 @@
             case PLDM_BIOS_ENUMERATION:
             case PLDM_BIOS_ENUMERATION_READ_ONLY:
             {
-                auto [pvHdls, defInds] =
-                    table::attribute::decodeEnumEntry(entry);
+                auto [pvHdls,
+                      defInds] = table::attribute::decodeEnumEntry(entry);
                 auto possibleValues = jsonEntry->at("possible_values")
                                           .get<std::vector<std::string>>();
                 std::vector<std::string> strings;
@@ -201,8 +201,8 @@
              attrValueTable->data(), attrValueTable->size()))
     {
         auto header = table::attribute_value::decodeHeader(entry);
-        auto attrEntry =
-            table::attribute::findByHandle(*attrTable, header.attrHandle);
+        auto attrEntry = table::attribute::findByHandle(*attrTable,
+                                                        header.attrHandle);
         auto attrHeader = table::attribute::decodeHeader(attrEntry);
         auto attrName = biosStringTable.findString(attrHeader.stringHandle);
         auto jsonEntry = findJsonEntry(attrName);
diff --git a/libpldmresponder/test/libpldmresponder_bios_test.cpp b/libpldmresponder/test/libpldmresponder_bios_test.cpp
index a8d31b2..2b9e49a 100644
--- a/libpldmresponder/test/libpldmresponder_bios_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_bios_test.cpp
@@ -62,4 +62,4 @@
     timeSec = timeToEpoch(sec, min, hours, day, month, year);
 
     EXPECT_EQ(ret, timeSec);
-}
\ No newline at end of file
+}
diff --git a/libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp b/libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp
index 39f3739..0c2b02a 100644
--- a/libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp
@@ -68,8 +68,8 @@
     bf1.byte = 2;
     ASSERT_EQ(states->states[0].byte, bf1.byte);
 
-    const auto& [dbusMappings1, dbusValMaps1] =
-        handler.getDbusObjMaps(pdr->effecter_id);
+    const auto& [dbusMappings1,
+                 dbusValMaps1] = handler.getDbusObjMaps(pdr->effecter_id);
     ASSERT_EQ(dbusMappings1[0].objectPath, "/foo/bar");
 
     // Check second PDR
@@ -108,8 +108,8 @@
     ASSERT_EQ(states->states[0].byte, bf2[0].byte);
     ASSERT_EQ(states->states[1].byte, bf2[1].byte);
 
-    const auto& [dbusMappings2, dbusValMaps2] =
-        handler.getDbusObjMaps(pdr->effecter_id);
+    const auto& [dbusMappings2,
+                 dbusValMaps2] = handler.getDbusObjMaps(pdr->effecter_id);
     ASSERT_EQ(dbusMappings2[0].objectPath, "/foo/bar");
     ASSERT_EQ(dbusMappings2[1].objectPath, "/foo/bar");
 
@@ -155,8 +155,8 @@
     EXPECT_EQ(pdr->effecter_id, 3);
     EXPECT_EQ(pdr->effecter_data_size, 4);
 
-    const auto& [dbusMappings, dbusValMaps] =
-        handler.getDbusObjMaps(pdr->effecter_id);
+    const auto& [dbusMappings,
+                 dbusValMaps] = handler.getDbusObjMaps(pdr->effecter_id);
     EXPECT_EQ(dbusMappings[0].objectPath, "/foo/bar");
     EXPECT_EQ(dbusMappings[0].interface, "xyz.openbmc_project.Foo.Bar");
     EXPECT_EQ(dbusMappings[0].propertyName, "propertyName");
diff --git a/libpldmresponder/test/libpldmresponder_platform_test.cpp b/libpldmresponder/test/libpldmresponder_platform_test.cpp
index 10082a6..0c9b324 100644
--- a/libpldmresponder/test/libpldmresponder_platform_test.cpp
+++ b/libpldmresponder/test/libpldmresponder_platform_test.cpp
@@ -407,10 +407,10 @@
                                     0x43, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
                                     0x00, 0x01, 0x0b, 0x00, 0x01, 0x18};
 
-    const auto& [terminusHandle1, sensorID1, sensorInfo1] =
-        parseStateSensorPDR(sample1PDR);
-    const auto& [containerID1, entityType1, entityInstance1] =
-        std::get<0>(sensorInfo1);
+    const auto& [terminusHandle1, sensorID1,
+                 sensorInfo1] = parseStateSensorPDR(sample1PDR);
+    const auto& [containerID1, entityType1,
+                 entityInstance1] = std::get<0>(sensorInfo1);
     const auto& states1 = std::get<1>(sensorInfo1);
     CompositeSensorStates statesCmp1{{3u, 4u}};
 
@@ -428,10 +428,10 @@
                                     0x1F, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
                                     0x00, 0x01, 0x02, 0x00, 0x02, 0x18, 0x2E};
 
-    const auto& [terminusHandle2, sensorID2, sensorInfo2] =
-        parseStateSensorPDR(sample2PDR);
-    const auto& [containerID2, entityType2, entityInstance2] =
-        std::get<0>(sensorInfo2);
+    const auto& [terminusHandle2, sensorID2,
+                 sensorInfo2] = parseStateSensorPDR(sample2PDR);
+    const auto& [containerID2, entityType2,
+                 entityInstance2] = std::get<0>(sensorInfo2);
     const auto& states2 = std::get<1>(sensorInfo2);
     CompositeSensorStates statesCmp2{{3u, 4u, 9u, 10u, 11u, 13u}};
 
@@ -451,10 +451,10 @@
         0x00, 0x03, 0x00, 0x21, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
         0x02, 0x21, 0x00, 0x01, 0x06, 0x0F, 0x00, 0x01, 0x1E};
 
-    const auto& [terminusHandle3, sensorID3, sensorInfo3] =
-        parseStateSensorPDR(sample3PDR);
-    const auto& [containerID3, entityType3, entityInstance3] =
-        std::get<0>(sensorInfo3);
+    const auto& [terminusHandle3, sensorID3,
+                 sensorInfo3] = parseStateSensorPDR(sample3PDR);
+    const auto& [containerID3, entityType3,
+                 entityInstance3] = std::get<0>(sensorInfo3);
     const auto& states3 = std::get<1>(sensorInfo3);
     CompositeSensorStates statesCmp3{{1u, 2u}, {1u, 2u, 3u, 4u}};
 
diff --git a/libpldmresponder/test/mocked_bios.hpp b/libpldmresponder/test/mocked_bios.hpp
index c93d788..8a01cb3 100644
--- a/libpldmresponder/test/mocked_bios.hpp
+++ b/libpldmresponder/test/mocked_bios.hpp
@@ -8,8 +8,7 @@
 class MockBIOSStringTable : public pldm::responder::bios::BIOSStringTable
 {
   public:
-    MockBIOSStringTable() : BIOSStringTable({})
-    {}
+    MockBIOSStringTable() : BIOSStringTable({}) {}
 
     MOCK_METHOD(uint16_t, findHandle, (const std::string&), (const override));
 
@@ -58,4 +57,4 @@
     checkHeader(attrEntry, attrValueEntry);
     checkEntry(attrEntry, expectedAttrEntry);
     checkEntry(attrValueEntry, expectedAttrValueEntry);
-}
\ No newline at end of file
+}
