diff --git a/test/fanpwm_unittest.cpp b/test/fanpwm_unittest.cpp
index 66910c3..8f12b19 100644
--- a/test/fanpwm_unittest.cpp
+++ b/test/fanpwm_unittest.cpp
@@ -37,9 +37,9 @@
                                                         StrEq(intf), NotNull()))
             .WillOnce(Invoke(
                 [=](sd_bus*, const char*, const char*, const char** names) {
-            EXPECT_STREQ(property.c_str(), names[0]);
-            return 0;
-        }));
+                    EXPECT_STREQ(property.c_str(), names[0]);
+                    return 0;
+                }));
     }
 
     return;
@@ -137,9 +137,9 @@
                     IsNull(), StrEq("asdf"), StrEq(FanPwmIntf), NotNull()))
         .WillOnce(
             Invoke([&](sd_bus*, const char*, const char*, const char** names) {
-        EXPECT_EQ(0, strncmp("Target", names[0], 6));
-        return 0;
-    }));
+                EXPECT_EQ(0, strncmp("Target", names[0], 6));
+                return 0;
+            }));
 
     EXPECT_EQ(target, f.target(target));
 }
diff --git a/test/hwmonio_mock.hpp b/test/hwmonio_mock.hpp
index 6caa67e..0edcf52 100644
--- a/test/hwmonio_mock.hpp
+++ b/test/hwmonio_mock.hpp
@@ -10,7 +10,7 @@
 class HwmonIOMock : public HwmonIOInterface
 {
   public:
-    virtual ~HwmonIOMock(){};
+    virtual ~HwmonIOMock() {};
 
     MOCK_CONST_METHOD5(read, int64_t(const std::string&, const std::string&,
                                      const std::string&, size_t,
diff --git a/test/sensor_unittest.cpp b/test/sensor_unittest.cpp
index dd57595..b40cdae 100644
--- a/test/sensor_unittest.cpp
+++ b/test/sensor_unittest.cpp
@@ -62,8 +62,8 @@
     EXPECT_CALL(env::mockEnv, get(StrEq("REMOVERCS_temp5")))
         .WillOnce(Return(""));
 
-    auto sensor = std::make_unique<sensor::Sensor>(sensorKey,
-                                                   hwmonio_mock.get(), path);
+    auto sensor =
+        std::make_unique<sensor::Sensor>(sensorKey, hwmonio_mock.get(), path);
     EXPECT_FALSE(sensor == nullptr);
 }
 
@@ -90,8 +90,8 @@
 
     EXPECT_CALL(gMock, build(StrEq("chipA"), StrEq("5")))
         .WillOnce(Invoke([&](const std::string&, const std::string&) {
-        return std::move(handleMock);
-    }));
+            return std::move(handleMock);
+        }));
 
     /* Always calls GAIN and OFFSET, can use ON_CALL instead of EXPECT_CALL */
     EXPECT_CALL(env::mockEnv, get(StrEq("GAIN_temp5"))).WillOnce(Return(""));
@@ -99,8 +99,8 @@
     EXPECT_CALL(env::mockEnv, get(StrEq("REMOVERCS_temp5")))
         .WillOnce(Return(""));
 
-    auto sensor = std::make_unique<sensor::Sensor>(sensorKey,
-                                                   hwmonio_mock.get(), path);
+    auto sensor =
+        std::make_unique<sensor::Sensor>(sensorKey, hwmonio_mock.get(), path);
     EXPECT_FALSE(sensor == nullptr);
 }
 
@@ -126,8 +126,8 @@
     EXPECT_CALL(env::mockEnv, get(StrEq("REMOVERCS_temp5")))
         .WillOnce(Return(""));
 
-    auto sensor = std::make_unique<sensor::Sensor>(sensorKey,
-                                                   hwmonio_mock.get(), path);
+    auto sensor =
+        std::make_unique<sensor::Sensor>(sensorKey, hwmonio_mock.get(), path);
     EXPECT_FALSE(sensor == nullptr);
 
     double startingValue = 1.0;
