From 959fb5ea53fd128e877c9bb4fec964794730d877 Mon Sep 17 00:00:00 2001 From: Mattt Thompson Date: Mon, 20 Oct 2014 14:20:15 -0700 Subject: [PATCH] Xcode 6.1 Squashed commit of the following: commit 6b6facc0ac407bc37e6c71f5d93d11f21894b8ba Author: Mattt Thompson Date: Fri Oct 10 05:30:58 2014 -0700 [Issue #164] Fixed mistake in merge commit 8a814ee8c083faf4e02189665f5b2bc6abfc0650 Merge: 0930f42 29d8b97 Author: Mattt Thompson Date: Thu Oct 9 16:01:55 2014 -0700 Merge branch 'xcode-6.1' of github.com:Alamofire/Alamofire into xcode-6.1 Conflicts: Example/DetailViewController.swift Example/MasterViewController.swift Source/Alamofire.swift Tests/ParameterEncodingTests.swift commit 0930f428eb0b9d142e29a31b94a7af84f48a06e5 Merge: b1882a1 7362404 Author: Mattt Thompson Date: Thu Oct 9 15:58:36 2014 -0700 Merge branch 'master' into xcode-6.1 Conflicts: Source/Alamofire.swift commit 29d8b97bbc588703f5641255e5c2bcf17f58d009 Merge: 80cc057 18f1d57 Author: Mattt Thompson Date: Sun Oct 5 09:17:17 2014 -0700 Merge pull request #143 from nduplessis/xcode-6.1 Xcode 6.1 GM fixes commit 18f1d57fd8a40402c71eb85faba977ee1cd7fe01 Author: Nico du Plessis Date: Thu Oct 2 13:13:24 2014 +0200 Xcode 6.1 GM fixes commit 80cc05720013042eccfc8bc20a8304cd3ae656d7 Merge: 38e0783 f8bb0b4 Author: Mattt Thompson Date: Tue Sep 30 09:35:22 2014 -0700 Merge pull request #139 from orta/xcode-6.1 @mattt => update to support Xcode 6.1b3 commit f8bb0b4fb8780a5ee74098d09e9a5997f550e425 Author: Orta Therox Date: Tue Sep 30 17:17:27 2014 +0100 update to support Xcode 6.1b3 commit b1882a1d64ff4c5de8b514742f0d3a27bcf16bf1 Merge: 34ee306 bc6a58d Author: Mattt Thompson Date: Thu Sep 25 22:17:50 2014 -0700 Merge branch 'master' into xcode-6.1 Conflicts: Source/Alamofire.swift Tests/ParameterEncodingTests.swift commit 38e07830df5e44b03510c2d74286e82ecebb0513 Merge: 34ee306 9933340 Author: Mattt Thompson Date: Fri Sep 19 12:02:23 2014 -0700 Merge pull request #114 from rosskimes/xcode-6.1 Compiles on Xcode 6.1 Beta 2. commit 99333407f6fa9d7476a39eb9f8f7d1d89e38afe9 Author: Ross Kimes Date: Fri Sep 19 13:17:02 2014 -0500 Compiles on Xcode 6.1 Beta 2. commit 34ee3065c98ebd19a5012f3dc03a1b5eb990d51e Merge: 67ee13a 6c087a9 Author: Mattt Thompson Date: Thu Sep 18 07:49:27 2014 -0700 Merge branch 'aral-patch-2' into xcode-6.1 commit 6c087a956ea2947c4de97d3e4b6c13ff06924499 Merge: 2abe348 d49bbed Author: Mattt Thompson Date: Thu Sep 18 07:49:15 2014 -0700 Merge branch 'patch-2' of github.com:aral/Alamofire into aral-patch-2 commit 67ee13aa14baa50f71d2583d2f3b7996224b89ba Merge: 2abe348 ab4f4c0 Author: Mattt Thompson Date: Thu Sep 18 07:48:31 2014 -0700 Merge branch 'patch-1' of github.com:aral/Alamofire into aral-patch-1 Conflicts: Source/Alamofire.swift commit d49bbeda306850858e5ce189380665eea9eb8ee1 Author: Aral Balkan Date: Wed Sep 17 00:33:10 2014 +0100 Replaced toRaw with rawValue (Xcode 6.1 Beta 2 update) commit ab4f4c0fd83fc7c62018f9f19b4d54d1de107ef9 Author: Aral Balkan Date: Wed Sep 17 00:31:15 2014 +0100 Updated fromRaw and toRaw to rawValue Fixed for Xcode 6.1 Beta 2. --- Example/DetailViewController.swift | 14 ++++----- Example/HTTPBin.swift | 4 +-- Example/MasterViewController.swift | 13 ++++++--- README.md | 6 ++-- Source/Alamofire.swift | 47 +++++++++++++++--------------- Tests/DownloadTests.swift | 15 ++++++---- Tests/ManagerTests.swift | 4 +-- Tests/ParameterEncodingTests.swift | 17 ++++++----- Tests/RequestTests.swift | 22 +++++++------- Tests/UploadTests.swift | 6 ++-- Tests/ValidationTests.swift | 8 ++--- 11 files changed, 83 insertions(+), 73 deletions(-) diff --git a/Example/DetailViewController.swift b/Example/DetailViewController.swift index befd79499..53a958b09 100644 --- a/Example/DetailViewController.swift +++ b/Example/DetailViewController.swift @@ -86,7 +86,7 @@ class DetailViewController: UITableViewController { // MARK: UITableViewDataSource override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - switch Sections.fromRaw(section)! { + switch Sections(rawValue: section)! { case .Headers: return self.headers.count case .Body: @@ -98,20 +98,20 @@ class DetailViewController: UITableViewController { override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { - switch Sections.fromRaw(indexPath.section)! { + switch Sections(rawValue: indexPath.section)! { case .Headers: let cell = self.tableView.dequeueReusableCellWithIdentifier("Header") as UITableViewCell let field = self.headers.keys.array.sorted(<)[indexPath.row] let value = self.headers[field] - cell.textLabel!.text = field + cell.textLabel.text = field cell.detailTextLabel!.text = value return cell case .Body: let cell = self.tableView.dequeueReusableCellWithIdentifier("Body") as UITableViewCell - cell.textLabel!.text = self.body + cell.textLabel.text = self.body return cell } @@ -128,7 +128,7 @@ class DetailViewController: UITableViewController { return "" } - switch Sections.fromRaw(section)! { + switch Sections(rawValue: section)! { case .Headers: return "Headers" case .Body: @@ -137,7 +137,7 @@ class DetailViewController: UITableViewController { } override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { - switch Sections.fromRaw(indexPath.section)! { + switch Sections(rawValue: indexPath.section)! { case .Body: return 300 default: @@ -146,7 +146,7 @@ class DetailViewController: UITableViewController { } override func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String { - if Sections.fromRaw(section)! == .Body && self.elapsedTime != nil { + if Sections(rawValue: section)! == .Body && self.elapsedTime != nil { let numberFormatter = NSNumberFormatter() numberFormatter.numberStyle = .DecimalStyle diff --git a/Example/HTTPBin.swift b/Example/HTTPBin.swift index 6acb76933..e8ee88967 100644 --- a/Example/HTTPBin.swift +++ b/Example/HTTPBin.swift @@ -32,13 +32,13 @@ enum HTTPBinRoute: URLStringConvertible { let path: String = { switch self { case .Method(let method): - return "/\(method.toRaw().lowercaseString)" + return "/\(method.rawValue.lowercaseString)" case .BasicAuth(let user, let password): return "/basic-auth/\(user)/\(password)" } }() - return NSURL(string: path, relativeToURL: NSURL(string: baseURLString)).absoluteString! + return NSURL(string: path, relativeToURL: NSURL(string: baseURLString))!.absoluteString! } } diff --git a/Example/MasterViewController.swift b/Example/MasterViewController.swift index acccc8a87..199c16e06 100644 --- a/Example/MasterViewController.swift +++ b/Example/MasterViewController.swift @@ -52,10 +52,15 @@ class MasterViewController: UITableViewController { override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let detailViewController = segue.destinationViewController.topViewController as? DetailViewController { func requestForSegue(segue: UIStoryboardSegue) -> Request? { - switch segue.identifier { - case "GET", "POST", "PUT", "DELETE": - let method = Alamofire.Method.fromRaw(segue.identifier)! - return Alamofire.request(method, HTTPBinRoute.Method(method)) + switch segue.identifier as String! { + case "GET": + return Alamofire.request(.GET, "http://httpbin.org/get") + case "POST": + return Alamofire.request(.POST, "http://httpbin.org/post") + case "PUT": + return Alamofire.request(.PUT, "http://httpbin.org/put") + case "DELETE": + return Alamofire.request(.DELETE, "http://httpbin.org/delete") default: return nil } diff --git a/README.md b/README.md index d29a85c54..27af48e34 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,7 @@ Alamofire is an HTTP networking library written in Swift, from the [creator](htt ## Requirements - iOS 7.0+ / Mac OS X 10.9+ -- Xcode 6.0 - -> For Xcode 6.1, use [the `xcode-6.1` branch](https://github.com/Alamofire/Alamofire/tree/xcode-6.1). +- Xcode 6.1 ## Communication @@ -32,6 +30,8 @@ Alamofire is an HTTP networking library written in Swift, from the [creator](htt ## Installation +> For application targets that do not support embedded frameworks, such as iOS 7, Alamofire can be integrated by including the `Alamofire.swift` source file directly, and making the appropriate changes to calling semantics. + _Due to the current lack of [proper infrastructure](http://cocoapods.org) for Swift dependency management, using Alamofire in your project requires the following steps:_ 1. Add Alamofire as a [submodule](http://git-scm.com/docs/git-submodule) by opening the Terminal, `cd`-ing into your top-level project directory, and entering the command `git submodule add https://github.com/Alamofire/Alamofire.git` diff --git a/Source/Alamofire.swift b/Source/Alamofire.swift index 18bf1d52e..2556b3692 100644 --- a/Source/Alamofire.swift +++ b/Source/Alamofire.swift @@ -103,11 +103,12 @@ public enum ParameterEncoding { } } - let method = Method.fromRaw(mutableURLRequest.HTTPMethod) + let method = Method(rawValue: mutableURLRequest.HTTPMethod) if method != nil && encodesParametersInURL(method!) { - let URLComponents = NSURLComponents(URL: mutableURLRequest.URL!, resolvingAgainstBaseURL: false) - URLComponents.percentEncodedQuery = (URLComponents.query != nil ? URLComponents.query! + "&" : "") + query(parameters!) - mutableURLRequest.URL = URLComponents.URL + if let URLComponents = NSURLComponents(URL: mutableURLRequest.URL!, resolvingAgainstBaseURL: false) { + URLComponents.percentEncodedQuery = (URLComponents.query != nil ? URLComponents.query! + "&" : "") + query(parameters!) + mutableURLRequest.URL = URLComponents.URL + } } else { if mutableURLRequest.valueForHTTPHeaderField("Content-Type") == nil { mutableURLRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") @@ -241,18 +242,18 @@ public class Manager { // User-Agent Header; see http://tools.ietf.org/html/rfc7231#section-5.5.3 let userAgent: String = { - let info = NSBundle.mainBundle().infoDictionary - let executable: AnyObject = info[kCFBundleExecutableKey] ?? "Unknown" - let bundle: AnyObject = info[kCFBundleIdentifierKey] ?? "Unknown" - let version: AnyObject = info[kCFBundleVersionKey] ?? "Unknown" - let os: AnyObject = NSProcessInfo.processInfo().operatingSystemVersionString ?? "Unknown" - - var mutableUserAgent = NSMutableString(string: "\(executable)/\(bundle) (\(version); OS \(os))") as CFMutableString - let transform = NSString(string: "Any-Latin; Latin-ASCII; [:^ASCII:] Remove") as CFString - if CFStringTransform(mutableUserAgent, nil, transform, 0) == 1 { - return mutableUserAgent as NSString + if let info = NSBundle.mainBundle().infoDictionary { + let executable: AnyObject = info[kCFBundleExecutableKey] ?? "Unknown" + let bundle: AnyObject = info[kCFBundleIdentifierKey] ?? "Unknown" + let version: AnyObject = info[kCFBundleVersionKey] ?? "Unknown" + let os: AnyObject = NSProcessInfo.processInfo().operatingSystemVersionString ?? "Unknown" + + var mutableUserAgent = NSMutableString(string: "\(executable)/\(bundle) (\(version); OS \(os))") as CFMutableString + let transform = NSString(string: "Any-Latin; Latin-ASCII; [:^ASCII:] Remove") as CFString + if CFStringTransform(mutableUserAgent, nil, transform, 0) == 1 { + return mutableUserAgent as NSString + } } - return "Alamofire" }() @@ -1235,8 +1236,8 @@ extension Request: DebugPrintable { components.append("-X \(request.HTTPMethod!)") } - if let credentialStorage = session.configuration.URLCredentialStorage { - let protectionSpace = NSURLProtectionSpace(host: URL.host!, port: URL.port ?? 0, `protocol`: URL.scheme, realm: URL.host, authenticationMethod: NSURLAuthenticationMethodHTTPBasic) + if let credentialStorage = self.session.configuration.URLCredentialStorage { + let protectionSpace = NSURLProtectionSpace(host: URL.host!, port: URL.port?.integerValue ?? 0, `protocol`: URL.scheme!, realm: URL.host!, authenticationMethod: NSURLAuthenticationMethodHTTPBasic) if let credentials = credentialStorage.credentialsForProtectionSpace(protectionSpace)?.values.array { for credential: NSURLCredential in (credentials as [NSURLCredential]) { components.append("-u \(credential.user!):\(credential.password!)") @@ -1276,9 +1277,9 @@ extension Request: DebugPrintable { } if let HTTPBody = request.HTTPBody { - let escapedBody = NSString(data: HTTPBody, encoding: NSUTF8StringEncoding) - .stringByReplacingOccurrencesOfString("\"", withString: "\\\"") - components.append("-d \"\(escapedBody)\"") + if let escapedBody = NSString(data: HTTPBody, encoding: NSUTF8StringEncoding)?.stringByReplacingOccurrencesOfString("\"", withString: "\\\"") { + components.append("-d \"\(escapedBody)\"") + } } components.append("\"\(URL.absoluteString!)\"") @@ -1438,9 +1439,9 @@ extension Request { // MARK: - Convenience - -private func URLRequest(method: Method, URLString: URLStringConvertible) -> NSURLRequest { - let mutableURLRequest = NSMutableURLRequest(URL: NSURL(string: URLString.URLString)) - mutableURLRequest.HTTPMethod = method.toRaw() +private func URLRequest(method: Method, URL: URLStringConvertible) -> NSURLRequest { + let mutableURLRequest = NSMutableURLRequest(URL: NSURL(string: URL.URLString)!) + mutableURLRequest.HTTPMethod = method.rawValue return mutableURLRequest } diff --git a/Tests/DownloadTests.swift b/Tests/DownloadTests.swift index 74a7bb09c..4bde100ec 100644 --- a/Tests/DownloadTests.swift +++ b/Tests/DownloadTests.swift @@ -63,15 +63,18 @@ class AlamofireDownloadResponseTestCase: XCTestCase { let contents = fileManager.contentsOfDirectoryAtURL(directory, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles, error: &fileManagerError)! XCTAssertNil(fileManagerError, "fileManagerError should be nil") - let predicate = NSPredicate(format: "lastPathComponent = '\(numberOfLines)'") + let predicate = NSPredicate(format: "lastPathComponent = '\(numberOfLines)'")! let filteredContents = (contents as NSArray).filteredArrayUsingPredicate(predicate) XCTAssertEqual(filteredContents.count, 1, "should have one file in Documents") let file = filteredContents.first as NSURL XCTAssertEqual(file.lastPathComponent, "\(numberOfLines)", "filename should be \(numberOfLines)") - let data = NSData(contentsOfURL: file) - XCTAssertGreaterThan(data.length, 0, "data length should be non-zero") + if let data = NSData(contentsOfURL: file) { + XCTAssertGreaterThan(data.length, 0, "data length should be non-zero") + } else { + XCTFail("data should exist for contents of URL") + } } waitForExpectationsWithTimeout(10) { (error) in @@ -91,9 +94,9 @@ class AlamofireDownloadResponseTestCase: XCTestCase { download.progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) -> Void in expectation.fulfill() - XCTAssertGreaterThan(bytesRead, 0, "bytesRead should be > 0") - XCTAssertGreaterThan(totalBytesRead, 0, "totalBytesRead should be > 0") - XCTAssertEqual(totalBytesExpectedToRead, -1, "totalBytesExpectedToRead should be -1") + XCTAssert(bytesRead > 0, "bytesRead should be > 0") + XCTAssert(totalBytesRead > 0, "totalBytesRead should be > 0") + XCTAssert(totalBytesExpectedToRead == -1, "totalBytesExpectedToRead should be -1") download.cancel() } diff --git a/Tests/ManagerTests.swift b/Tests/ManagerTests.swift index 43d2a65a6..df24f7557 100644 --- a/Tests/ManagerTests.swift +++ b/Tests/ManagerTests.swift @@ -29,8 +29,8 @@ class AlamofireManagerTestCase: XCTestCase { let manager = Alamofire.Manager() manager.startRequestsImmediately = false - let URL = "http://httpbin.org/get" - let URLRequest = NSURLRequest(URL: NSURL(string: URL)) + let URL = NSURL(string: "http://httpbin.org/get")! + let URLRequest = NSURLRequest(URL: URL) let expectation = expectationWithDescription("\(URL)") diff --git a/Tests/ParameterEncodingTests.swift b/Tests/ParameterEncodingTests.swift index 5666012db..84feb6963 100644 --- a/Tests/ParameterEncodingTests.swift +++ b/Tests/ParameterEncodingTests.swift @@ -31,7 +31,7 @@ class AlamofireURLParameterEncodingTestCase: XCTestCase { override func setUp() { super.setUp() - let URL = NSURL(string: "http://example.com/") + let URL = NSURL(string: "http://example.com/")! self.URLRequest = NSURLRequest(URL: URL) } @@ -52,7 +52,7 @@ class AlamofireURLParameterEncodingTestCase: XCTestCase { func testURLParameterEncodeOneStringKeyStringValueParameterAppendedToQuery() { var mutableURLRequest = self.URLRequest.mutableCopy() as NSMutableURLRequest - let URLComponents = NSURLComponents(URL: mutableURLRequest.URL!, resolvingAgainstBaseURL: false) + let URLComponents = NSURLComponents(URL: mutableURLRequest.URL!, resolvingAgainstBaseURL: false)! URLComponents.query = "baz=qux" mutableURLRequest.URL = URLComponents.URL @@ -174,7 +174,7 @@ class AlamofireURLParameterEncodingTestCase: XCTestCase { func testURLParameterEncodeGETParametersInURL() { var mutableURLRequest = self.URLRequest.mutableCopy() as NSMutableURLRequest - mutableURLRequest.HTTPMethod = Method.GET.toRaw() + mutableURLRequest.HTTPMethod = Method.GET.rawValue let parameters = ["foo": 1, "bar": 2] let (URLRequest, error) = self.encoding.encode(mutableURLRequest, parameters: parameters) @@ -186,12 +186,12 @@ class AlamofireURLParameterEncodingTestCase: XCTestCase { func testURLParameterEncodePOSTParametersInHTTPBody() { var mutableURLRequest = self.URLRequest.mutableCopy() as NSMutableURLRequest - mutableURLRequest.HTTPMethod = Method.POST.toRaw() + mutableURLRequest.HTTPMethod = Method.POST.rawValue let parameters = ["foo": 1, "bar": 2] let (URLRequest, error) = self.encoding.encode(mutableURLRequest, parameters: parameters) - XCTAssertEqual(NSString(data: URLRequest.HTTPBody!, encoding: NSUTF8StringEncoding), "bar=2&foo=1", "HTTPBody is incorrect") + XCTAssertEqual(NSString(data: URLRequest.HTTPBody!, encoding: NSUTF8StringEncoding)!, "bar=2&foo=1", "HTTPBody is incorrect") XCTAssertEqual(URLRequest.valueForHTTPHeaderField("Content-Type")!, "application/x-www-form-urlencoded", "Content-Type should be application/x-www-form-urlencoded") XCTAssertNotNil(URLRequest.HTTPBody, "HTTPBody should not be nil") } @@ -204,7 +204,7 @@ class AlamofireJSONParameterEncodingTestCase: XCTestCase { override func setUp() { super.setUp() - let URL = NSURL(string: "http://example.com/") + let URL = NSURL(string: "http://example.com/")! self.URLRequest = NSURLRequest(URL: URL) } @@ -250,7 +250,7 @@ class AlamofirePropertyListParameterEncodingTestCase: XCTestCase { override func setUp() { super.setUp() - let URL = NSURL(string: "http://example.com/") + let URL = NSURL(string: "http://example.com/")! self.URLRequest = NSURLRequest(URL: URL) } @@ -322,7 +322,8 @@ class AlamofireCustomParameterEncodingTestCase: XCTestCase { let encoding: ParameterEncoding = .Custom(encodingClosure) - let URLRequest = NSURLRequest(URL: NSURL(string: "http://example.com")) + let URL = NSURL(string: "http://example.com")! + let URLRequest = NSURLRequest(URL: URL) let parameters: [String: AnyObject] = [:] XCTAssertEqual(encoding.encode(URLRequest, parameters: parameters).0, encodingClosure(URLRequest, parameters).0, "URLRequest should be equal") diff --git a/Tests/RequestTests.swift b/Tests/RequestTests.swift index 1376036e7..9bf6ecc7a 100644 --- a/Tests/RequestTests.swift +++ b/Tests/RequestTests.swift @@ -30,7 +30,7 @@ class AlamofireRequestInitializationTestCase: XCTestCase { let request = Alamofire.request(.GET, URL) XCTAssertNotNil(request.request, "request should not be nil") - XCTAssertEqual(request.request.URL, NSURL(string: URL), "request URL should be equal") + XCTAssertEqual(request.request.URL, NSURL(string: URL)!, "request URL should be equal") XCTAssertNil(request.response, "response should be nil") } @@ -39,7 +39,7 @@ class AlamofireRequestInitializationTestCase: XCTestCase { let request = Alamofire.request(.GET, URL, parameters: ["foo": "bar"]) XCTAssertNotNil(request.request, "request should not be nil") - XCTAssertNotEqual(request.request.URL, NSURL(string: URL), "request URL should be equal") + XCTAssertNotEqual(request.request.URL, NSURL(string: URL)!, "request URL should be equal") XCTAssertEqual(request.request.URL.query!, "foo=bar", "query is incorrect") XCTAssertNil(request.response, "response should be nil") } @@ -101,9 +101,9 @@ class AlamofireRequestDebugDescriptionTestCase: XCTestCase { let request = Alamofire.request(.GET, URL) let components = cURLCommandComponents(request) - XCTAssertEqual(components[0..<3], ["$", "curl", "-i"]) + XCTAssert(components[0..<3] == ["$", "curl", "-i"], "components should be equal") XCTAssert(!contains(components, "-X"), "command should not contain explicit -X flag") - XCTAssertEqual(components.last!, "\"\(URL)\"") + XCTAssert(components.last! == "\"\(URL)\"", "URL component should be equal") } func testPOSTRequestDebugDescription() { @@ -111,9 +111,9 @@ class AlamofireRequestDebugDescriptionTestCase: XCTestCase { let request = Alamofire.request(.POST, URL) let components = cURLCommandComponents(request) - XCTAssertEqual(components[0..<3], ["$", "curl", "-i"]) - XCTAssertEqual(components[3..<5], ["-X", "POST"]) - XCTAssertEqual(components.last!, "\"\(URL)\"") + XCTAssert(components[0..<3] == ["$", "curl", "-i"], "components should be equal") + XCTAssert(components[3..<5] == ["-X", "POST"], "command should contain explicit -X flag") + XCTAssert(components.last! == "\"\(URL)\"", "URL component should be equal") } func testPOSTRequestWithJSONParametersDebugDescription() { @@ -121,10 +121,10 @@ class AlamofireRequestDebugDescriptionTestCase: XCTestCase { let request = Alamofire.request(.POST, URL, parameters: ["foo": "bar"], encoding: .JSON) let components = cURLCommandComponents(request) - XCTAssertEqual(components[0..<3], ["$", "curl", "-i"]) - XCTAssertEqual(components[3..<5], ["-X", "POST"]) + XCTAssert(components[0..<3] == ["$", "curl", "-i"], "components should be equal") + XCTAssert(components[3..<5] == ["-X", "POST"], "command should contain explicit -X flag") XCTAssert(request.debugDescription.rangeOfString("-H \"Content-Type: application/json\"") != nil) - XCTAssert(request.debugDescription.rangeOfString("-d \"{\"foo\":\"bar\"}\"") != nil) - XCTAssertEqual(components.last!, "\"\(URL)\"") + XCTAssert(request.debugDescription.rangeOfString("-d \"{\\\"foo\\\":\\\"bar\\\"}\"") != nil) + XCTAssert(components.last! == "\"\(URL)\"", "URL component should be equal") } } diff --git a/Tests/UploadTests.swift b/Tests/UploadTests.swift index 7ed4c1bb3..9b69e1dea 100644 --- a/Tests/UploadTests.swift +++ b/Tests/UploadTests.swift @@ -55,9 +55,9 @@ class UploadResponseTestCase: XCTestCase { upload.progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) -> Void in expectation.fulfill() - XCTAssertGreaterThan(bytesWritten, 0, "bytesWritten should be > 0") - XCTAssertGreaterThan(totalBytesWritten, 0, "totalBytesWritten should be > 0") - XCTAssertGreaterThan(totalBytesExpectedToWrite, 0, "totalBytesExpectedToWrite should be > 0") + XCTAssert(bytesWritten > 0, "bytesWritten should be > 0") + XCTAssert(totalBytesWritten > 0, "totalBytesWritten should be > 0") + XCTAssert(totalBytesExpectedToWrite > 0, "totalBytesExpectedToWrite should be > 0") upload.cancel() } diff --git a/Tests/ValidationTests.swift b/Tests/ValidationTests.swift index 207ec8c18..d742fa388 100644 --- a/Tests/ValidationTests.swift +++ b/Tests/ValidationTests.swift @@ -203,7 +203,7 @@ class AlamofireMultipleValidationTestCase: XCTestCase { class AlamofireAutomaticValidationTestCase: XCTestCase { func testValidationForRequestWithAcceptableStatusCodeAndContentTypeResponse() { - let URL = NSURL(string: "http://httpbin.org/ip") + let URL = NSURL(string: "http://httpbin.org/ip")! let mutableURLRequest = NSMutableURLRequest(URL: URL) mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Accept") @@ -243,7 +243,7 @@ class AlamofireAutomaticValidationTestCase: XCTestCase { func testValidationForRequestWithAcceptableWildcardContentTypeResponse() { - let URL = NSURL(string: "http://httpbin.org/ip") + let URL = NSURL(string: "http://httpbin.org/ip")! let mutableURLRequest = NSMutableURLRequest(URL: URL) mutableURLRequest.setValue("application/*", forHTTPHeaderField: "Accept") @@ -263,7 +263,7 @@ class AlamofireAutomaticValidationTestCase: XCTestCase { } func testValidationForRequestWithAcceptableComplexContentTypeResponse() { - let URL = NSURL(string: "http://httpbin.org/xml") + let URL = NSURL(string: "http://httpbin.org/xml")! let mutableURLRequest = NSMutableURLRequest(URL: URL) mutableURLRequest.setValue("text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8,*/*;q=0.5", forHTTPHeaderField: "Accept") @@ -283,7 +283,7 @@ class AlamofireAutomaticValidationTestCase: XCTestCase { } func testValidationForRequestWithUnacceptableContentTypeResponse() { - let URL = NSURL(string: "http://httpbin.org/xml") + let URL = NSURL(string: "http://httpbin.org/xml")! let mutableURLRequest = NSMutableURLRequest(URL: URL) mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Accept")