diff --git a/test/ipz_parser/parser.cpp b/test/ipz_parser/parser.cpp
index c4c7566..0a36ad7 100644
--- a/test/ipz_parser/parser.cpp
+++ b/test/ipz_parser/parser.cpp
@@ -1,13 +1,14 @@
 #include "ipz_parser.hpp"
 
-#include <cassert>
 #include <const.hpp>
 #include <defines.hpp>
-#include <fstream>
 #include <impl.hpp>
-#include <iterator>
 #include <store.hpp>
 
+#include <cassert>
+#include <fstream>
+#include <iterator>
+
 #include <gtest/gtest.h>
 
 using namespace openpower::vpd;
diff --git a/test/keyword_vpd_parser_test/kw_vpd_test.cpp b/test/keyword_vpd_parser_test/kw_vpd_test.cpp
index 413e31b..becdd56 100644
--- a/test/keyword_vpd_parser_test/kw_vpd_test.cpp
+++ b/test/keyword_vpd_parser_test/kw_vpd_test.cpp
@@ -210,4 +210,4 @@
     ::testing::InitGoogleTest(&argc, argv);
 
     return RUN_ALL_TESTS();
-}
\ No newline at end of file
+}
diff --git a/test/parser/parser.cpp b/test/parser/parser.cpp
index 57da82f..d9f441e 100644
--- a/test/parser/parser.cpp
+++ b/test/parser/parser.cpp
@@ -1,10 +1,11 @@
-#include <cassert>
 #include <defines.hpp>
-#include <fstream>
-#include <iterator>
 #include <store.hpp>
 #include <vpd-parser/ipz_parser.hpp>
 
+#include <cassert>
+#include <fstream>
+#include <iterator>
+
 void runTests()
 {
     using namespace openpower::vpd;
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
+}
