diff --git a/shared/cppDesktopTestTask.gradle b/shared/cppDesktopTestTask.gradle
index 04b7224..928cc33 100644
--- a/shared/cppDesktopTestTask.gradle
+++ b/shared/cppDesktopTestTask.gradle
@@ -1,21 +1,21 @@
-model {
-    tasks {
-        def ts = $.testSuites
-        project.tasks.register('testDesktopCpp') { testTask->
-            def systemArch = getCurrentArch()
-            def found = false
-            ts.each {
-                if (it in GoogleTestTestSuiteSpec && it.name == "${nativeName}Test") {
-                    it.binaries.each {
-                        if (found) return
-                        def arch = it.targetPlatform.name
-                        if (arch == systemArch && it.buildType.name == 'debug') {
-                            testTask.dependsOn it.tasks.run
-                            found = true
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
+model {
+    tasks {
+        def ts = $.testSuites
+        project.tasks.register('testDesktopCpp') { testTask->
+            def systemArch = getCurrentArch()
+            def found = false
+            ts.each {
+                if (it in GoogleTestTestSuiteSpec && it.name == "${nativeName}Test") {
+                    it.binaries.each {
+                        if (found) return
+                            def arch = it.targetPlatform.name
+                        if (arch == systemArch && it.buildType.name == 'debug') {
+                            testTask.dependsOn it.tasks.run
+                            found = true
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
