diff --git a/.clang-format b/.clang-format
index 79a474d..d92a3f1 100644
--- a/.clang-format
+++ b/.clang-format
@@ -6,12 +6,14 @@
 AlignConsecutiveAssignments: false
 AlignConsecutiveDeclarations: false
 AlignEscapedNewlines: Right
-AlignOperands:   true
-AlignTrailingComments: true
+AlignOperands:  Align
+AlignTrailingComments:
+  Kind: Always
+  OverEmptyLines: 1
 AllowAllParametersOfDeclarationOnNextLine: true
-AllowShortBlocksOnASingleLine: false
+AllowShortBlocksOnASingleLine: Empty
 AllowShortCaseLabelsOnASingleLine: false
-AllowShortFunctionsOnASingleLine: None
+AllowShortFunctionsOnASingleLine: Empty
 AllowShortIfStatementsOnASingleLine: false
 AllowShortLoopsOnASingleLine: false
 AlwaysBreakAfterReturnType: None
@@ -36,6 +38,7 @@
   SplitEmptyFunction:   false
   SplitEmptyRecord:     false
   SplitEmptyNamespace:  false
+BreakAfterAttributes: Never
 BreakBeforeBinaryOperators: None
 BreakBeforeBraces: Custom
 BreakBeforeTernaryOperators: true
@@ -75,9 +78,13 @@
   - Regex:           '.*'
     Priority:        6
 IndentCaseLabels: true
+IndentRequiresClause: true
 IndentWidth:     4
 IndentWrappedFunctionNames: true
+InsertNewlineAtEOF: true
 KeepEmptyLinesAtTheStartOfBlocks: false
+LambdaBodyIndentation: OuterScope
+LineEnding: LF
 MacroBlockBegin: ''
 MacroBlockEnd:   ''
 MaxEmptyLinesToKeep: 1
@@ -85,13 +92,19 @@
 ObjCBlockIndentWidth: 2
 ObjCSpaceAfterProperty: false
 ObjCSpaceBeforeProtocolList: true
+PenaltyBreakAssignment: 25
 PenaltyBreakBeforeFirstCallParameter: 19
 PenaltyBreakComment: 300
 PenaltyBreakFirstLessLess: 120
 PenaltyBreakString: 1000
 PenaltyExcessCharacter: 1000000
 PenaltyReturnTypeOnItsOwnLine: 60
+PenaltyIndentedWhitespace: 0
+QualifierAlignment: Left
+ReferenceAlignment: Left
 ReflowComments:  true
+RequiresClausePosition: OwnLine
+RequiresExpressionIndentation: Keyword
 SortIncludes:    true
 SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
@@ -111,6 +124,6 @@
 SpacesInSquareBrackets: false
 Standard:        Latest
 TabWidth:        4
-UseCRLF: false
 UseTab:          Never
 ...
+
diff --git a/manager/json-config.hpp b/manager/json-config.hpp
index 2c4e16d..4eb77db 100644
--- a/manager/json-config.hpp
+++ b/manager/json-config.hpp
@@ -70,17 +70,16 @@
      */
     bool filePathExists(const std::vector<std::string>& names)
     {
-        auto it =
-            std::find_if(names.begin(), names.end(), [this](const auto& name) {
-                auto tempConfFile =
-                    fs::path{confBasePath} / name / confFileName;
-                if (fs::exists(tempConfFile))
-                {
-                    confFile = tempConfFile;
-                    return true;
-                }
-                return false;
-            });
+        auto it = std::find_if(names.begin(), names.end(),
+                               [this](const auto& name) {
+            auto tempConfFile = fs::path{confBasePath} / name / confFileName;
+            if (fs::exists(tempConfFile))
+            {
+                confFile = tempConfFile;
+                return true;
+            }
+            return false;
+        });
         return it == names.end() ? false : true;
     }
 
@@ -160,8 +159,8 @@
         try
         {
             // Get all objects implementing the compatible interface
-            auto objects =
-                dBusHandler.getSubTreePaths("/", confCompatibleInterface);
+            auto objects = dBusHandler.getSubTreePaths("/",
+                                                       confCompatibleInterface);
             for (const auto& path : objects)
             {
                 try
diff --git a/manager/lamptest/lamptest.cpp b/manager/lamptest/lamptest.cpp
index 57e5a33..5fd430c 100644
--- a/manager/lamptest/lamptest.cpp
+++ b/manager/lamptest/lamptest.cpp
@@ -108,9 +108,10 @@
 
     for (const auto& path : physicalLEDPaths)
     {
-        auto iter = std::find_if(
-            skipUpdateLEDs.begin(), skipUpdateLEDs.end(),
-            [&path](const auto& skipLed) { return skipLed == path; });
+        auto iter = std::find_if(skipUpdateLEDs.begin(), skipUpdateLEDs.end(),
+                                 [&path](const auto& skipLed) {
+            return skipLed == path;
+        });
 
         if (iter != skipUpdateLEDs.end())
         {
diff --git a/manager/led-main.cpp b/manager/led-main.cpp
index 86c13f5..b589bc0 100644
--- a/manager/led-main.cpp
+++ b/manager/led-main.cpp
@@ -71,9 +71,9 @@
     /** Now create so many dbus objects as there are groups */
     std::ranges::transform(systemLedMap, std::back_inserter(groups),
                            [&bus, &manager, &serialize](auto& grp) {
-                               return std::make_unique<phosphor::led::Group>(
-                                   bus, grp.first, manager, serialize);
-                           });
+        return std::make_unique<phosphor::led::Group>(bus, grp.first, manager,
+                                                      serialize);
+    });
 
     // Attach the bus to sd_event to service user requests
     bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
diff --git a/test/utest.cpp b/test/utest.cpp
index 2bd222b..9508a1e 100644
--- a/test/utest.cpp
+++ b/test/utest.cpp
@@ -32,8 +32,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/SingleLed";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -63,8 +63,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/SingleLed";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -94,8 +94,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/SingleLed";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -119,8 +119,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/SingleLed";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         EXPECT_EQ(0, ledsAssert.size());
@@ -138,8 +138,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -173,8 +173,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -208,8 +208,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -237,8 +237,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsAssserted populated with these.
@@ -272,8 +272,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -301,8 +301,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsAssserted populated with these.
@@ -330,8 +330,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
         EXPECT_EQ(0, ledsDeAssert.size());
         EXPECT_EQ(0, ledsAssert.size());
@@ -348,8 +348,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsMix";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -387,8 +387,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -416,8 +416,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -451,8 +451,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -480,8 +480,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -514,8 +514,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -543,8 +543,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -571,8 +571,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsDeAssserted populated with these.
@@ -606,8 +606,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -635,8 +635,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -663,8 +663,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsDeAssserted populated with these.
@@ -710,8 +710,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -739,8 +739,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -768,8 +768,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsDeAssserted populated with these.
@@ -803,8 +803,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -832,8 +832,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -861,8 +861,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsDeAssserted populated with these.
@@ -908,8 +908,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -939,8 +939,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -964,8 +964,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsDeAssserted populated with these.
@@ -997,8 +997,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1028,8 +1028,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these
@@ -1063,8 +1063,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.'Two' gets to Blink
@@ -1095,8 +1095,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1135,8 +1135,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1166,8 +1166,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1197,8 +1197,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1238,8 +1238,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1269,8 +1269,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
         EXPECT_EQ(0, ledsDeAssert.size());
         EXPECT_EQ(0, ledsAssert.size());
@@ -1291,8 +1291,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1324,8 +1324,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1356,8 +1356,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsDeAsssert populated with these.
@@ -1403,8 +1403,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1436,8 +1436,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1468,8 +1468,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsDeAsssert populated with these.
@@ -1514,8 +1514,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1547,8 +1547,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1590,8 +1590,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1623,8 +1623,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1655,8 +1655,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1702,8 +1702,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1735,8 +1735,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, true, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, true, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(true, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1767,8 +1767,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1809,8 +1809,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
 
         // Need just the ledsAssserted populated with these.
@@ -1842,8 +1842,8 @@
         ActionSet ledsDeAssert{};
 
         auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
-        auto result =
-            manager.setGroupState(group, false, ledsAssert, ledsDeAssert);
+        auto result = manager.setGroupState(group, false, ledsAssert,
+                                            ledsDeAssert);
         EXPECT_EQ(false, result);
         EXPECT_EQ(0, ledsDeAssert.size());
         EXPECT_EQ(0, ledsAssert.size());
