Releases: cedarbdd/cedar
Version 1.0
Almost 6 years ago, on Saturday, May 1, 2010, Cedar's first commit was made by Adam Milligan.
Today, we're really proud to announce the long awaited release of Cedar 1.0
What's New
It's a small revision on 0.13.1 which is already stable with Xcode 7.3 and Swift 2.2, but it's worth noting that we've retired the CedarPlugin and made a minor breaking change to global +beforeEach
and +afterEach
methods.
Cedar Plugin retired
Sadly, as much as we loved it, we've retired the Cedar Plugin (#386). It's become difficult to keep this working with the frequent changes to Xcode, and it's hoped that more future-proof facilities will become available as a result of open source development around XCTest.
Minor Breaking Change
+beforeEach
/+afterEach
are no longer automatically called on all Objective-C classes present at test execution time. If you want Cedar to call these methods, have them conform to the CDRHooks
protocol. (#387)
If you use PivotalCoreKit in your specs then you'll need to make sure you're using revision 6d8e684
or later.
Acknowledgements
Today's release wouldn't have been possible without the entire help of the Cedar community, so some achknowledgements are in order.
To all our users: Thanks for using Cedar and thanks for giving us your feedback. We really hope it's helped you!
Every contributor who has helped make Cedar what it is today:
Aaron Dargel, Aaron Levine, Adam Milligan, Alex Basson, Alex Denisov, Andrew Kitchen, Andy Brown, Andy Pliszka, Ashraf Hanafy, August Toman-Yih, Brian Croom, Can Berk Güder, Carl Jackson, Carson McDonald, Chris Brown, Chris Jobst, Christian Niles, Chulmin Lee, Claire Thompson, Cody Vandermyn, Constantin Lungu, DX205, Daniel Shusta, David Farber, Dmitriy Kalinin, Elana Koren, Eric Tsiliacos, Eugenia Dellapenna, Franklin Webber, Greg Cobb, Ian Fisher, J.J. Jackson, JB Steadman, Jeff Hui, Jeff Remer, Jesse Bounds, Joe Masilotti, Johan Ismael, John Barker, Jonah Williams, Jonathan Barnes, Jonathan Berger, Jordan Thoms, Juan David Dominguez, Kai Lee, Kamal Pabla, Keith Willsey, Kevin Fitzpatrick, Kris Hicks, Kurtis Seebaldt, Kyriacos Souroullas, Luke Metz, Matt Di Pasquale, Matt Parker, Matthew DuVall, Max Brunsfeld, Mike Gehard, Mike Stallard, Nathan Sentjens, Nathan Sobo, Nathan Wilmes, Neha Batra, Nero Leung, Onsi Fakhouri, Paul Meskers, Paul Taykalo, Pavel Taykalo, Peter Jihoon Kim, Philip Kuryloski, Philip Vasilchenko, Piet Jaspers, Prayag Verma, Priyanka Ranjan, Rachel Brindle, Raphael Weiner, ReadmeCritic, Renée Chu, Robbie Clutton, Sam Coward, Sara Tansey, Steve Conover, Steve Gravrock, Tim Frazer, Tim Jarratt, Todd Persen, Todd Santaniello, Tyler Schultz, Vinson Chuong, Weyman Fung, Wiley Kestner.
And of course, thanks to Pivotal Labs for sponsoring development on this project.
Version 0.13.1
Version 0.13.0
What's new
Swift support
- Cedar now supports Swift! (#367)
- Wiki has been updated with Swift code examples
Test Doubles
Matchers
- You can now test whether a dictionary should
contain_subset(subdictionary)
(#351) be_empty
matcher no longer accepts nil values- you can now define custom matchers conveniently using a block (#352)
General
- Pending tests are reported correctly in test bundle runs (#303, #371)
- Templates now install correctly on modern AppCode versions (#361)
- Epic re-organization of Rake tasks
- Fixed execution of the tvOS Spec Bundle
- Fixed podspec for tvOS (#363)
Thanks
A big thanks to everyone who worked on this release. Especially big shout out to @briancroom and @tjarratt for their awesome work!
- Brian Croom
- Tim Jarratt
- Can Berk Güder
- Neha Batra
- Sara Tansey
- Andy Brown
- Renée Chu
- Prayag Verma
Version 0.12.0
This release was almost big enough to warrant a major version bump! Lots of hard work went into this release, and we're excited to bring you some great tools that will help you write great tests.
Features
- Support for Xcode 7
- Frameworks for testing on watchOS and tvOS
- Support for the Carthage dependency manager
- integration with xctool
- you can now run your cedar tests in a test bundle with
xctool test
- for more info see #308
- you can now run your cedar tests in a test bundle with
... and lots more small fixes, including fixing crashes relating to boxing / unboxing nil values with certain matchers (especially have_received
).
As always, please report any issues you may discover so we can continue to improve Cedar.
Many thanks are due to the community for reporting bugs, helping diagnose crashes and contributing fixes. This release wouldn't have been possible without the hard work of
- Brian Croom
- Andrew Kitchen
- Sam Coward
- Kai Lee
- Priyanka Ranjan
- Neha Batra
- Elana Koren
- Daniel Shusta
- Juan David Dominguez
- Mike Stallard
- Rachel Brindle
- Joe Masilotti
- Jeff Hui
Version 0.11.3
Mostly small fixes for improved compatibility with recent editor versions, and a few other minor improvements.
@tjarratt
Update templates to work with Xcode 6.3 …
@pivotal-brian-croom
Print a helpful message if a matcher fails while setting up specs. …
@akitchen
Adds DVTPlugInCompatibilityUUID for Xcode 6.3
Xcode 6.3 housekeeping
Disables specs related to >= etc. matchers …
Kamal Pabla and Nathan Sentjens
@pivotal-nathan-sentjens
Add DVTPlugInCompatibilityUUID for Xcode 6.2
Have the colorized reporter be a buffered reporter
@cbguder
Fixed installation of AppCode 3.1 live templates
Sam Coward
Allow stubbing & expectation for pointer arguments
Weyman Fung
versions can be specified in the install script
@pivotal-brian-croom / @akitchen
Add a mechanism for boxing nil arguments to prevent an exception in HaveReceived
Cedar v0.11.2
Cedar 0.11.2
Installation no longer depends on ios-sim
Adds support for testing WatchKit apps via the PivotalCoreKit WatchKit stubs
Cedar Doubles can now be re-stubbed by adding a call to again()
Fixes Cedar test bundle target template to work with modern static library targets
Cedar Xcode plugin no longer re-indexes when no test files have changed
Fixes 64-bit conversion warning
New installations will copy AppCode snippets to the correct location for AppCode 3.1
Thanks to:
Alex Basson
Andrew Kitchen
Jeff Hui
Kai Lee
Kurtis Seebaldt
Sam Coward
Wiley Kestner
Cedar v0.11.1
Please refer to v0.11.0 for a list of changes in this release
v0.11.1 includes a fix for correctly reporting the Cedar version at run time
Cedar v0.11.0
This release includes support for Xcode 6.1. Xcode 6.0 and Xcode 5.x continue to be supported.
Marching Towards Cedar 1.0.0
0.11.0 can be viewed as another "Release Candidate" of Cedar 1.0.0. While this version may not remove all deprecations, it is planned to remove deprecated APIs and accidentally-publicized private headers gradually before 1.0.0 is released. Our goal is that 1.0.0 will mark the version that Cedar will more closely follow semantic versioning. Breaking changes may be more frequent as we get to 1.0
Breaking Changes
- Removed type coercion when comparing NSNumber, NSDecimal, NSDecimalNumber, and scalar types
- A number of previously deprecated functions have been removed
Known Issues
- Templates: Creating a test bundle with spaces in the target name may result in a broken build configuration on Xcode <= 6.0. To fix, manually edit the
FRAMEWORK_SEARCH_PATH
for the newly created bundle target.
New Features
- Xcode 6.1 Support
- Cedar Xcode Plugin has been updated to support Xcode 6.1
- Added UIImage comparison support
have_received()
shows history of messages the fake, spy or double has receivedbe_close_to
matcher can compare NSDates- Suggest a fix if an object fails the
be_instance_of
matcher but its class has the same name as the expected class - Added CoreGraphics geometry comparators for OS X
Bug Fixes
- Numerous fixes and improvements to the installation process
- Fixes regression in JUnitXMLReporter
Special Thanks
Thanks for everyone who contributed to this release.
- Andrew Kitchen
- Brian Croom
- Cody Vandermyn
- Constantin Lungu
- Eric Tsiliacos
- Jeff Hui
- Kurtis Seebaldt
- Paul Meskers
- Wiley Kestner
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
Version 0.9.8
This version includes various minor bug fixes for iOS 8 compatibility and does not introduce any breaking API changes.
Known Issues
Test bundles currently do not work under Xcode 6, it will be addressed in the next release. Use Spec Suites to work around this for now.
New Features
Arguments::any
matcher will match protocols as well
In addition to instance of classes checks, you can now pass a protocol to any
:
[fake use:objectConformingToMyProtocol];
fake should have_received(use:).with(any(@protocol(MyCustomProtocol))); // passes
inline dictionary context for itShouldBehaveLike
In addition to passing a dictionary literal, itShouldBehaveLike
can accept a block that modifies the context dictionary it is given instead:
itShouldBehaveLike(@"a shared example group", ^(NSMutableDictionary *context) {
context[@"value"] = globalValue__;
});
The provided block is invoked as a beforeEach
before the shared example group is called.