diff --git a/phosphor-power-sequencer/test/pmbus_driver_device_tests.cpp b/phosphor-power-sequencer/test/pmbus_driver_device_tests.cpp
index 1fedb36..7cbb15d 100644
--- a/phosphor-power-sequencer/test/pmbus_driver_device_tests.cpp
+++ b/phosphor-power-sequencer/test/pmbus_driver_device_tests.cpp
@@ -808,8 +808,8 @@
     // rebuilds the map.
     std::string powerSupplyError{};
     std::map<std::string, std::string> additionalData{};
-    std::string error = device.findPgoodFault(services, powerSupplyError,
-                                              additionalData);
+    std::string error =
+        device.findPgoodFault(services, powerSupplyError, additionalData);
     EXPECT_TRUE(error.empty());
     EXPECT_EQ(additionalData.size(), 0);
 
diff --git a/phosphor-power-sequencer/test/standard_device_tests.cpp b/phosphor-power-sequencer/test/standard_device_tests.cpp
index 1afb3bd..266b7b3 100644
--- a/phosphor-power-sequencer/test/standard_device_tests.cpp
+++ b/phosphor-power-sequencer/test/standard_device_tests.cpp
@@ -87,9 +87,8 @@
  * @param pageNum PMBus PAGE number of the rail
  * @return Rail object
  */
-std::unique_ptr<Rail> createRailStatusVout(const std::string& name,
-                                           bool isPowerSupplyRail,
-                                           uint8_t pageNum)
+std::unique_ptr<Rail> createRailStatusVout(
+    const std::string& name, bool isPowerSupplyRail, uint8_t pageNum)
 {
     std::optional<std::string> presence{};
     std::optional<uint8_t> page{pageNum};
@@ -109,9 +108,8 @@
  * @param gpio GPIO line to read to determine the pgood status of the rail
  * @return Rail object
  */
-std::unique_ptr<Rail> createRailGPIO(const std::string& name,
-                                     bool isPowerSupplyRail,
-                                     unsigned int gpioLine)
+std::unique_ptr<Rail> createRailGPIO(
+    const std::string& name, bool isPowerSupplyRail, unsigned int gpioLine)
 {
     std::optional<std::string> presence{};
     std::optional<uint8_t> page{};
@@ -132,9 +130,8 @@
  * @param pageNum PMBus PAGE number of the rail
  * @return Rail object
  */
-std::unique_ptr<Rail> createRailOutputVoltage(const std::string& name,
-                                              bool isPowerSupplyRail,
-                                              uint8_t pageNum)
+std::unique_ptr<Rail> createRailOutputVoltage(
+    const std::string& name, bool isPowerSupplyRail, uint8_t pageNum)
 {
     std::optional<std::string> presence{};
     std::optional<uint8_t> page{pageNum};
@@ -230,8 +227,8 @@
 
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_TRUE(error.empty());
         EXPECT_EQ(additionalData.size(), 0);
     }
@@ -273,8 +270,8 @@
 
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 5);
@@ -322,8 +319,8 @@
 
         std::string powerSupplyError{"Undervoltage fault: PSU1"};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error, powerSupplyError);
         EXPECT_EQ(additionalData.size(), 5);
         EXPECT_EQ(additionalData["DEVICE_NAME"], "abc_pseq");
@@ -375,8 +372,8 @@
 
         std::string powerSupplyError{"Undervoltage fault: PSU1"};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 6);
@@ -426,8 +423,8 @@
 
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 4);
@@ -474,8 +471,8 @@
 
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 4);
@@ -523,8 +520,8 @@
 
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 5);
@@ -578,8 +575,8 @@
 
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 6);
diff --git a/phosphor-power-sequencer/test/ucd90160_device_tests.cpp b/phosphor-power-sequencer/test/ucd90160_device_tests.cpp
index 7718c3b..d7c1885 100644
--- a/phosphor-power-sequencer/test/ucd90160_device_tests.cpp
+++ b/phosphor-power-sequencer/test/ucd90160_device_tests.cpp
@@ -103,10 +103,10 @@
             .WillOnce(Return(gpioValues));
         EXPECT_CALL(services, logInfoMsg("Device UCD90160 GPIO values:"))
             .Times(1);
-        EXPECT_CALL(
-            services,
-            logInfoMsg("[FPWM1_GPIO5, FPWM2_GPIO6, FPWM3_GPIO7, FPWM4_GPIO8]: "
-                       "[1, 0, 0, 1]"))
+        EXPECT_CALL(services,
+                    logInfoMsg(
+                        "[FPWM1_GPIO5, FPWM2_GPIO6, FPWM3_GPIO7, FPWM4_GPIO8]: "
+                        "[1, 0, 0, 1]"))
             .Times(1);
         EXPECT_CALL(
             services,
@@ -165,8 +165,8 @@
         // Call findPgoodFault() which calls storeGPIOValues()
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 31);
@@ -219,14 +219,15 @@
         EXPECT_CALL(services, getGPIOValues("ucd90160"))
             .Times(1)
             .WillOnce(Return(gpioValues));
-        EXPECT_CALL(services, logInfoMsg("Device UCD90160 GPIO values: ["
-                                         "1, 0, 0, 1, "
-                                         "1, 1, 0, 0, "
-                                         "1, 0, 1, 1, "
-                                         "0, 0, 1, 1, "
-                                         "1, 0, 0, 0, "
-                                         "1, 0, 0, 1, "
-                                         "1, 1, 0]"))
+        EXPECT_CALL(services,
+                    logInfoMsg("Device UCD90160 GPIO values: ["
+                               "1, 0, 0, 1, "
+                               "1, 1, 0, 0, "
+                               "1, 0, 1, 1, "
+                               "0, 0, 1, 1, "
+                               "1, 0, 0, 0, "
+                               "1, 0, 0, 1, "
+                               "1, 1, 0]"))
             .Times(1);
         EXPECT_CALL(services,
                     logInfoMsg("Device UCD90160 MFR_STATUS: 0x123456789abc"))
@@ -261,20 +262,21 @@
         // Call findPgoodFault() which calls storeGPIOValues()
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 6);
         EXPECT_EQ(additionalData["MFR_STATUS"], "0x123456789abc");
         EXPECT_EQ(additionalData["DEVICE_NAME"], "UCD90160");
-        EXPECT_EQ(additionalData["GPIO_VALUES"], "[1, 0, 0, 1, "
-                                                 "1, 1, 0, 0, "
-                                                 "1, 0, 1, 1, "
-                                                 "0, 0, 1, 1, "
-                                                 "1, 0, 0, 0, "
-                                                 "1, 0, 0, 1, "
-                                                 "1, 1, 0]");
+        EXPECT_EQ(additionalData["GPIO_VALUES"],
+                  "[1, 0, 0, 1, "
+                  "1, 1, 0, 0, "
+                  "1, 0, 1, 1, "
+                  "0, 0, 1, 1, "
+                  "1, 0, 0, 0, "
+                  "1, 0, 0, 1, "
+                  "1, 1, 0]");
         EXPECT_EQ(additionalData["RAIL_NAME"], "VDD");
         EXPECT_EQ(additionalData["GPIO_LINE"], "2");
         EXPECT_EQ(additionalData["GPIO_VALUE"], "0");
diff --git a/phosphor-power-sequencer/test/ucd90320_device_tests.cpp b/phosphor-power-sequencer/test/ucd90320_device_tests.cpp
index 980b960..951bd82 100644
--- a/phosphor-power-sequencer/test/ucd90320_device_tests.cpp
+++ b/phosphor-power-sequencer/test/ucd90320_device_tests.cpp
@@ -157,8 +157,8 @@
         // Call findPgoodFault() which calls storeGPIOValues()
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 10);
@@ -200,16 +200,17 @@
         EXPECT_CALL(services, getGPIOValues("ucd90320"))
             .Times(1)
             .WillOnce(Return(gpioValues));
-        EXPECT_CALL(services, logInfoMsg("Device UCD90320 GPIO values: ["
-                                         "1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, "
-                                         "1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, "
-                                         "1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, "
-                                         "1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, "
-                                         "1, 1, 0, 0, 1, 1, 1, 0, "
-                                         "1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, "
-                                         "1, 1, 0, 0, "
-                                         "1, 0, 0, 1, 1, 1, 0, 0, "
-                                         "1, 0, 0]"))
+        EXPECT_CALL(services,
+                    logInfoMsg("Device UCD90320 GPIO values: ["
+                               "1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, "
+                               "1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, "
+                               "1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, "
+                               "1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, "
+                               "1, 1, 0, 0, 1, 1, 1, 0, "
+                               "1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, "
+                               "1, 1, 0, 0, "
+                               "1, 0, 0, 1, 1, 1, 0, 0, "
+                               "1, 0, 0]"))
             .Times(1);
         EXPECT_CALL(services,
                     logInfoMsg("Device UCD90320 MFR_STATUS: 0x123456789abc"))
@@ -244,8 +245,8 @@
         // Call findPgoodFault() which calls storeGPIOValues()
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 6);
diff --git a/phosphor-power-sequencer/test/ucd90x_device_tests.cpp b/phosphor-power-sequencer/test/ucd90x_device_tests.cpp
index 3ab5369..2571e9b 100644
--- a/phosphor-power-sequencer/test/ucd90x_device_tests.cpp
+++ b/phosphor-power-sequencer/test/ucd90x_device_tests.cpp
@@ -182,8 +182,8 @@
         // Call findPgoodFault() which calls storePgoodFaultDebugData()
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 6);
@@ -236,8 +236,8 @@
         // Call findPgoodFault() which calls storePgoodFaultDebugData()
         std::string powerSupplyError{};
         std::map<std::string, std::string> additionalData{};
-        std::string error = device.findPgoodFault(services, powerSupplyError,
-                                                  additionalData);
+        std::string error =
+            device.findPgoodFault(services, powerSupplyError, additionalData);
         EXPECT_EQ(error,
                   "xyz.openbmc_project.Power.Error.PowerSequencerVoltageFault");
         EXPECT_EQ(additionalData.size(), 5);
