diff --git a/src/test/erase/crypto_test.cpp b/src/test/erase/crypto_test.cpp
index 030f6bb..909e54d 100644
--- a/src/test/erase/crypto_test.cpp
+++ b/src/test/erase/crypto_test.cpp
@@ -63,8 +63,8 @@
 
     EXPECT_CALL(*mockCryptIface, cryptKeyslotDestroy(_, 0)).Times(1);
 
-    CryptErase myCryptErase = CryptErase(testFileName,
-                                         std::move(mockCryptIface));
+    CryptErase myCryptErase =
+        CryptErase(testFileName, std::move(mockCryptIface));
     EXPECT_NO_THROW(myCryptErase.doErase());
 }
 
@@ -79,8 +79,8 @@
     EXPECT_CALL(*mockCryptIface, cryptKeySlotMax(StrEq(CRYPT_LUKS2)))
         .WillOnce(Return(-1));
 
-    CryptErase myCryptErase = CryptErase(testFileName,
-                                         std::move(mockCryptIface));
+    CryptErase myCryptErase =
+        CryptErase(testFileName, std::move(mockCryptIface));
     EXPECT_THROW(myCryptErase.doErase(), ResourceNotFound);
 }
 
@@ -95,8 +95,8 @@
     EXPECT_CALL(*mockCryptIface, cryptKeySlotMax(StrEq(CRYPT_LUKS2)))
         .WillOnce(Return(0));
 
-    CryptErase myCryptErase = CryptErase(testFileName,
-                                         std::move(mockCryptIface));
+    CryptErase myCryptErase =
+        CryptErase(testFileName, std::move(mockCryptIface));
     EXPECT_THROW(myCryptErase.doErase(), ResourceNotFound);
 }
 
@@ -114,8 +114,8 @@
     EXPECT_CALL(*mockCryptIface, cryptKeySlotStatus(_, _))
         .WillRepeatedly(Return(CRYPT_SLOT_INVALID));
 
-    CryptErase myCryptErase = CryptErase(testFileName,
-                                         std::move(mockCryptIface));
+    CryptErase myCryptErase =
+        CryptErase(testFileName, std::move(mockCryptIface));
     EXPECT_NO_THROW(myCryptErase.doErase());
 }
 
@@ -136,8 +136,8 @@
     EXPECT_CALL(*mockCryptIface, cryptKeyslotDestroy(_, 0))
         .WillOnce(Return(-1));
 
-    CryptErase myCryptErase = CryptErase(testFileName,
-                                         std::move(mockCryptIface));
+    CryptErase myCryptErase =
+        CryptErase(testFileName, std::move(mockCryptIface));
     EXPECT_THROW(myCryptErase.doErase(), InternalFailure);
 }
 
diff --git a/src/test/erase/pattern_test.cpp b/src/test/erase/pattern_test.cpp
index bccbd37..6a475d5 100644
--- a/src/test/erase/pattern_test.cpp
+++ b/src/test/erase/pattern_test.cpp
@@ -112,41 +112,47 @@
     // test write pattern with short blocks
     EXPECT_CALL(mock, write(_))
         .WillOnce(Invoke([](std::span<const std::byte> x) {
-        std::copy_n(x.begin(), shortData1.size(), shortData1.begin());
-        return shortData1;
-    })).RetiresOnSaturation();
+            std::copy_n(x.begin(), shortData1.size(), shortData1.begin());
+            return shortData1;
+        }))
+        .RetiresOnSaturation();
     EXPECT_CALL(mock, write(_))
         .WillOnce(Invoke([](std::span<const std::byte> x) {
-        std::copy_n(x.begin(), restOfData.size(), restOfData.begin());
-        return restOfData;
-    })).RetiresOnSaturation();
+            std::copy_n(x.begin(), restOfData.size(), restOfData.begin());
+            return restOfData;
+        }))
+        .RetiresOnSaturation();
     EXPECT_CALL(mock, write(_))
         .WillOnce(Invoke([](std::span<const std::byte> x) {
-        std::copy_n(x.begin(), shortData2.size(), shortData2.begin());
-        return shortData2;
-    })).RetiresOnSaturation();
+            std::copy_n(x.begin(), shortData2.size(), shortData2.begin());
+            return shortData2;
+        }))
+        .RetiresOnSaturation();
 
     // test read pattern
     EXPECT_CALL(mock, read(_))
         .WillOnce(Invoke([](std::span<std::byte> x) {
-        std::copy_n(shortData1.begin(), shortData1.size(), x.data());
-        std::span ret(shortData1);
-        return ret;
-    })).RetiresOnSaturation();
+            std::copy_n(shortData1.begin(), shortData1.size(), x.data());
+            std::span ret(shortData1);
+            return ret;
+        }))
+        .RetiresOnSaturation();
 
     EXPECT_CALL(mock, read(_))
         .WillOnce(Invoke([](std::span<std::byte> x) {
-        std::copy_n(restOfData.begin(), restOfData.size(), x.data());
-        std::span ret(restOfData);
-        return ret;
-    })).RetiresOnSaturation();
+            std::copy_n(restOfData.begin(), restOfData.size(), x.data());
+            std::span ret(restOfData);
+            return ret;
+        }))
+        .RetiresOnSaturation();
 
     EXPECT_CALL(mock, read(_))
         .WillOnce(Invoke([](std::span<std::byte> x) {
-        std::copy_n(shortData2.begin(), shortData2.size(), x.data());
-        std::span ret(shortData2);
-        return ret;
-    })).RetiresOnSaturation();
+            std::copy_n(shortData2.begin(), shortData2.size(), x.data());
+            std::span ret(shortData2);
+            return ret;
+        }))
+        .RetiresOnSaturation();
 
     EXPECT_NO_THROW(pass.writePattern(size, mock));
     EXPECT_NO_THROW(pass.verifyPattern(size, mock));
@@ -160,8 +166,8 @@
     size_t shortSize = 128;
     Pattern tryPattern(testFileName);
     auto shortData = std::vector<std::byte>(shortSize, std::byte{0});
-    auto restOfData = std::vector<std::byte>(size - shortSize * 3,
-                                             std::byte{0});
+    auto restOfData =
+        std::vector<std::byte>(size - shortSize * 3, std::byte{0});
     std::span shortDataSpan{shortData};
     std::span restOfDataSpan{restOfData};
     // open the file and write none to it
diff --git a/src/test/erase/zero_test.cpp b/src/test/erase/zero_test.cpp
index ee9dd50..a681d6d 100644
--- a/src/test/erase/zero_test.cpp
+++ b/src/test/erase/zero_test.cpp
@@ -126,8 +126,8 @@
     size_t shortSize = 128;
     Zero pass(testFileName);
     auto shortData = std::vector<std::byte>(shortSize, std::byte{0});
-    auto restOfData = std::vector<std::byte>(size - shortSize * 3,
-                                             std::byte{0});
+    auto restOfData =
+        std::vector<std::byte>(size - shortSize * 3, std::byte{0});
     std::span shortDataSpan{shortData};
     std::span restOfDataSpan{restOfData};
     stdplus::fd::FdMock mock;
@@ -159,8 +159,8 @@
     size_t shortSize = 128;
     Zero tryZero(testFileName);
     auto shortData = std::vector<std::byte>(shortSize, std::byte{0});
-    auto restOfData = std::vector<std::byte>(size - shortSize * 3,
-                                             std::byte{0});
+    auto restOfData =
+        std::vector<std::byte>(size - shortSize * 3, std::byte{0});
     std::span shortDataSpan{shortData};
     std::span restOfDataSpan{restOfData};
     // open the file and write none zero to it
diff --git a/src/test/util_test.cpp b/src/test/util_test.cpp
index e2fdcc3..2736777 100644
--- a/src/test/util_test.cpp
+++ b/src/test/util_test.cpp
@@ -132,8 +132,8 @@
     /* Look for the device file. */
     std::filesystem::path deviceFile, sysfsDir;
     std::string luksName, locationCode;
-    auto result = estoraged::util::findDevice(data,
-                                              std::filesystem::path("./"));
+    auto result =
+        estoraged::util::findDevice(data, std::filesystem::path("./"));
     EXPECT_TRUE(result.has_value());
 
     /* Validate the results. */
@@ -190,8 +190,8 @@
     /* Look for the device file. */
     std::filesystem::path deviceFile, sysfsDir;
     std::string luksName, locationCode;
-    auto result = estoraged::util::findDevice(data,
-                                              std::filesystem::path("./"));
+    auto result =
+        estoraged::util::findDevice(data, std::filesystem::path("./"));
     EXPECT_TRUE(result.has_value());
 
     /* Validate the results. */
@@ -237,8 +237,8 @@
     typeFile.close();
 
     /* Look for the device file. */
-    auto result = estoraged::util::findDevice(data,
-                                              std::filesystem::path("./"));
+    auto result =
+        estoraged::util::findDevice(data, std::filesystem::path("./"));
     EXPECT_FALSE(result.has_value());
 
     /* Delete the dummy files. */
@@ -276,8 +276,8 @@
     typeFile.close();
 
     /* Look for the device file. */
-    auto result = estoraged::util::findDevice(data,
-                                              std::filesystem::path("./"));
+    auto result =
+        estoraged::util::findDevice(data, std::filesystem::path("./"));
     EXPECT_FALSE(result.has_value());
 
     /* Delete the dummy files. */
@@ -308,8 +308,8 @@
     std::filesystem::create_directories("def/device");
 
     /* Look for the device file. */
-    auto result = estoraged::util::findDevice(data,
-                                              std::filesystem::path("./"));
+    auto result =
+        estoraged::util::findDevice(data, std::filesystem::path("./"));
     EXPECT_FALSE(result.has_value());
 
     /* Delete the dummy files. */
