=============
This release is compatible with Xcode 7.0 (Swift 2.0). If you're looking for
the `swift-2.0` branch, it is now the `master` branch.
Breaking Changes from RCs
=========================
There's one breaking changes besides the upgrade to Swift 2.0 if you haven't be
using the release candidates.
Weak Linking to XCTest
----------------------
**Nimble is now weakly linked to XCTest**. If you're not explicitly linking to
XCTest (either via import or explicitly linking frameworks), you must now do so
or else XCTest may not be automatically linked into your project. The default
behavior of test bundles **will link** XCTest correctly.
The README documents using Nimble without XCTest, if you choose to integrate
Nimble to your own test runner or framework.
Changes from RCs
================
- Added tvOS support
- Added `haveCount` matcher which is a convenience to check for length.
- Added `NSMapTable` support for `beEmpty`. `haveCount` also supports
`NSMapTable`.
- Fix warning of missing reference to `$SDKROOT/Developer/Library/Frameworks`
- waitUntil's done argument now accepts variadic arguments to allow passing
directly to completion blocks that requires other arguments.
Past Release Candidate Changes
==============================
For convenience, here's the list of changes between the release candidates to
1.x.x versions.
Backwards Incompatible Changes
------------------------------
- Backwards incompatible changes for Swift 2.0
- swift: Expectations now properly handle the new Swift error handling syntax.
This means expectations implicitly allow throws and will fail with a useful
error message if a closure throws one:
expect { try throwAnError() }.to(equal(1)) // Failed - Expected to equal 1, got an unexpected error thrown: ...
- objc: expectAction() is now a macro that requires an Objective-C block instead of building an implicit block:
Old:
expectAction([obj raiseException]).to(raiseException(...));
New:
expectAction(^{ [obj raiseException]; }).to(raiseException(...));
Changes
-------
- beEmpty() matcher is now defined specifically for String
- `beCloseTo` now works with `NSDate` without having to convert it
- Cocoapod users can now run Nimble in devices
- objc: Added fail() and failWithMessage() functions
- You can now specify custom error messages for expectations. This is useful
for large integration tests, where an expectation is usually a sanity check to
a larger operation:
expect(1).to(equal(2), description: "Just checking equality!") // failed - Just checking equality!
- swift: Fixed ≈ precedence
- swift: beAKindOf() and beAnInstanceOf() emits useful errors when trying to
compare against Swift Types. This is not allowed in Nimble because the Swift
compiler already enforces this.
- swift: Added throwError() matcher for verifying the behavior of closures that throw an error:
expect { try somethingDangerous() }.to(throwAnError())
- objc: NMBObjCMatcher initializers are now public
- objc: contain() matcher now accepts variadic arguments. Each value passed to contain() is expected to be in the container:
expect(@[@1, @2, @3]).to(contain(@1, @2)); // passes