diff --git a/test/vpd-manager-test/editor_test.cpp b/test/vpd-manager-test/editor_test.cpp
index b6fcfa8..53f32ad 100644
--- a/test/vpd-manager-test/editor_test.cpp
+++ b/test/vpd-manager-test/editor_test.cpp
@@ -1,8 +1,9 @@
 #include "editor_impl.hpp"
 #include "ipz_parser.hpp"
 
-#include <algorithm>
 #include <nlohmann/json.hpp>
+
+#include <algorithm>
 #include <vector>
 
 #include <gtest/gtest.h>
@@ -176,4 +177,4 @@
     ::testing::InitGoogleTest(&argc, argv);
 
     return RUN_ALL_TESTS();
-}
\ No newline at end of file
+}
diff --git a/test/vpd-manager-test/reader_test.cpp b/test/vpd-manager-test/reader_test.cpp
index 58d8d2f..7c1dccf 100644
--- a/test/vpd-manager-test/reader_test.cpp
+++ b/test/vpd-manager-test/reader_test.cpp
@@ -4,8 +4,9 @@
 #include "reader_impl.hpp"
 #include "types.hpp"
 
-#include <fstream>
 #include <nlohmann/json.hpp>
+
+#include <fstream>
 #include <tuple>
 
 #include <gmock/gmock.h>
@@ -151,8 +152,8 @@
 
     MockUtilCalls uCalls;
     ReaderImpl read(uCalls);
-    ListOfPaths paths =
-        read.getFrusAtLocation(LocationCode, nodeNumber, fruLocationCode);
+    ListOfPaths paths = read.getFrusAtLocation(LocationCode, nodeNumber,
+                                               fruLocationCode);
     std::string expected =
         "/xyz/openbmc_project/inventory/system/chassis/motherboard";
     EXPECT_EQ(paths.at(0), expected);
@@ -167,8 +168,8 @@
     ReaderImpl read(uCalls);
     ListOfPaths paths;
     EXPECT_ANY_THROW({
-        paths =
-            read.getFRUsByExpandedLocationCode(locationCode, fruLocationCode);
+        paths = read.getFRUsByExpandedLocationCode(locationCode,
+                                                   fruLocationCode);
     });
 
     // unused variable warning
@@ -177,8 +178,8 @@
     // length is les sthan 17 for expanded location code
     locationCode = "U9105.22A.SIMP10";
     EXPECT_ANY_THROW({
-        paths =
-            read.getFRUsByExpandedLocationCode(locationCode, fruLocationCode);
+        paths = read.getFRUsByExpandedLocationCode(locationCode,
+                                                   fruLocationCode);
     });
 
     // Invalid location code. No "."
@@ -194,8 +195,8 @@
     // unused variable warning
     (void)paths;
     EXPECT_ANY_THROW({
-        paths =
-            read.getFRUsByExpandedLocationCode(locationCode, fruLocationCode);
+        paths = read.getFRUsByExpandedLocationCode(locationCode,
+                                                   fruLocationCode);
     });
 }
 
@@ -212,8 +213,8 @@
             testing::Return("78DAPQRS")); // return a dummy value for FC keyword
 
     ReaderImpl read(uCalls);
-    ListOfPaths paths =
-        read.getFRUsByExpandedLocationCode(validLocationCode, fruLocationCode);
+    ListOfPaths paths = read.getFRUsByExpandedLocationCode(validLocationCode,
+                                                           fruLocationCode);
 
     std::string expected =
         "/xyz/openbmc_project/inventory/system/chassis/motherboard";
@@ -240,8 +241,8 @@
             testing::Return("9105PQRS")); // return a dummy value for TM keyword
 
     ReaderImpl read(uCalls);
-    ListOfPaths paths =
-        read.getFRUsByExpandedLocationCode(validLocationCode, fruLocationCode);
+    ListOfPaths paths = read.getFRUsByExpandedLocationCode(validLocationCode,
+                                                           fruLocationCode);
 
     std::string expected = "/xyz/openbmc_project/inventory/system";
     EXPECT_EQ(paths.at(0), expected);
@@ -252,4 +253,4 @@
     ::testing::InitGoogleTest(&argc, argv);
 
     return RUN_ALL_TESTS();
-}
\ No newline at end of file
+}
