Repository: Quick/Quick (swift)

Issue:
Allow async `xit`
- [x] I have read [CONTRIBUTING](https://github.com/Quick/Quick/blob/main/CONTRIBUTING.md) and have done my best to follow them.

### What did you do?

It is currently not possible to `xit` an async test. 

![Screenshot 2023-06-01 at 13 07 16](https://github.com/Quick/Quick/assets/6216959/dda5b7a8-0487-4879-92ff-54ba264b4237)

Maybe this is fixed with a simple async here and down the line:
https://github.com/Quick/Quick/blob/e206b8deba0d01fce70388a6d9dc66cba5603958/Sources/Quick/DSL/AsyncDSL.swift#L226

```diff
-  public static func xit(_ description: String, file: FileString = #file, line: UInt = #line, closure: @escaping () throws -> Void) {
+  public static func xit(_ description: String, file: FileString = #file, line: UInt = #line, closure: @escaping () async throws -> Void) {
```

### What did you expect to happen?

It compiles and the test is skipped

### What actually happened instead?

Compile time error

### Environment

List the software versions you're using:

 - Quick: `7.0.0`
 - Nimble: `N/A`
 - Xcode Version: `14.3`
 - Swift Version: `5.8`

Please also mention which package manager you used and its version. Delete the
other package managers in this list:

 - CocoaPods: `N/A`
 - Carthage: `N/A`
 - Swift Package Manager: `N/A`

### Project that demonstrates the issue

Please link to a project we can download that reproduces the issue. Feel free
to delete this section if it's not relevant to the issue (eg - feature request).

The project should be [short, self-contained, and correct example](http://sscce.org/).

Pull request:
Fixes https://github.com/Quick/Quick/issues/1219

Thanks @stonko1994!

Patch:
diff --git a/Sources/Quick/DSL/AsyncDSL.swift b/Sources/Quick/DSL/AsyncDSL.swift
index 11b6713c..bb1168ac 100644
--- a/Sources/Quick/DSL/AsyncDSL.swift
+++ b/Sources/Quick/DSL/AsyncDSL.swift
@@ -223,7 +223,7 @@ extension AsyncDSLUser {
      Use this to quickly mark an `it` closure as pending.
      This disables the example and ensures the code within the closure is never run.
      */
-    public static func xit(_ description: String, file: FileString = #file, line: UInt = #line, closure: @escaping () throws -> Void) {
+    public static func xit(_ description: String, file: FileString = #file, line: UInt = #line, closure: @escaping () async throws -> Void) {
         AsyncWorld.sharedWorld.xit(description, file: file, line: line, closure: closure)
     }
 
diff --git a/Sources/Quick/DSL/AsyncWorld+DSL.swift b/Sources/Quick/DSL/AsyncWorld+DSL.swift
index f0e12c91..5302eab2 100644
--- a/Sources/Quick/DSL/AsyncWorld+DSL.swift
+++ b/Sources/Quick/DSL/AsyncWorld+DSL.swift
@@ -110,7 +110,7 @@ extension AsyncWorld {
     }
 
     @nonobjc
-    internal func xit(_ description: String, file: FileString, line: UInt, closure: @escaping () throws -> Void) {
+    internal func xit(_ description: String, file: FileString, line: UInt, closure: @escaping () async throws -> Void) {
         self.it(description, flags: [Filter.pending: true], file: file, line: line, closure: closure)
     }
 


Test patch:
diff --git a/Tests/QuickTests/QuickTests/FunctionalTests/Async/PendingAsyncTests.swift b/Tests/QuickTests/QuickTests/FunctionalTests/Async/PendingAsyncTests.swift
index 7fbbea06..2014e00c 100644
--- a/Tests/QuickTests/QuickTests/FunctionalTests/Async/PendingAsyncTests.swift
+++ b/Tests/QuickTests/QuickTests/FunctionalTests/Async/PendingAsyncTests.swift
@@ -15,7 +15,7 @@ class FunctionalTests_PendingAsyncSpec_AsyncBehavior: AsyncBehavior<Void> {
 class FunctionalTests_PendingAsyncSpec: AsyncSpec {
     override class func spec() {
         xit("an example that will not run") {
-            expect(true).to(beFalsy())
+            await expect(true).toEventually(beFalsy())
         }
         xitBehavesLike(FunctionalTests_PendingAsyncSpec_AsyncBehavior.self) { () -> Void in }
         describe("a describe block containing only one enabled example") {