Version 0.10.0
Another release of Cedar has arrived (that was fast). This release includes support for Xcode 6.0.1. Xcode 6.1 support has not been verified yet. Fixes to address Xcode 6.1 will come in a later release of Cedar.
This version is still compatible with Xcode 5.
Marching Towards Cedar 1.0.0
Also, 0.10.0 can be viewed as a "Release Candidate" of Cedar 1.0.0. While this version does not remove all deprecations, it is planned to remove deprecated APIs and accidentally-publicized private headers before 1.0.0 is released. Our goal is that 1.0.0 will mark the version that Cedar will follow sematic versioning. Breaking changes will be more frequent as we get to 1.0
Breaking Changes
- Cedar officially no longer supports iOS 6.1. This version and future versions may not work for iOS 6.1.
- Matchers classes are now in a private namespace. Cedar matcher classes (not functions) are now nested into a Cedar::Matchers::Private namespace to avoid accidental Xcode-autocompletion. They should be considered private to Cedar's implementation.
- Cedar templates now use ios-sim to launch Spec Suites. iOS 7.1 and beyond broke the previous method Cedar used to bootstrap spec suites. ios-sim / xcodebuild test work for 7.1+, but they occationally fail to launch the simulator properly. When creating test bundles, remember to check the new box for Xcode 6 to "Allow Testing Host Application APIs" for test bundles to access your application's code.
- Rewritten XCTest/SenTestingKit support. Cedar now uses XCTest's (or SenTestingKit's) test runner to run all the tests. Internally, Cedar will generate XCTestCase/SenTestCase classes for each CDRSpec and test methods for each example you write. This uses public APIs instead of private APIs to work with Xcode 6 (and potential future versions of Xcode). Several things Cedar does may not be expected:
- CEDAR_RANDOM_SEED randomizes test suites as well as examples. Example randomization only applies to Test Bundles right now.
- Because of the new randomization, custom reporters will receive repeated
-[runWillStartExampleGroup:]
and-[runDidFinishExampleGroup:]
for the same example group (previous versions did not do this).
- Cedar iOS Application that displays a table view of tests inside the application has been removed. This was enabled using the CEDAR_GUI environment variable.
Known Issues
- Templates: Creating a test bundle template will duplicate build phases. This will be fixed when Xcode 5 support is dropped (soon). The build phases themselves are no-ops and can be safely removed.
- Example randomization only applies to Test Bundles right now.
New Features
- Suppressed useless output right before tests start running
- Xcode 6.0 Support
- Test Bundles: Randomization is now done on a per example basis and not a per Spec class basis.
- Templates: Cedar's Test Bundle Templates no longer create prefix headers (like Xcode 6's templates)
- Templates: Cedar's Test Bundle Templates now link to XCTest instead of SenTestingKit.
- Cedar now raises an error if XCTest or SenTestingKit is not linked to a Cedar Test Bundle
- Test Bundles: Name mangling of test methods are created when multiple examples generate the same method name.
- Cedar Xcode Plugin has been updated to support Xcode 6.0.1
Bug Fixes
- Cedar no longer prefixes 'Cedar Version:' twice
- Upgrading frameworks in Cedar supports file paths with spaces
Special Thanks
Thanks for everyone who contributed to this release with a special shoutout to TIm Jarratt (tjarratt) for contributing a lot of hard work into this release.
- Andrew Kitchen
- Eric Tsiliacos
- Greg Cobb
- Sam Coward
- Steve Gravrock
- Tim Jarratt