Skip to content

Version 1.0

@idoru idoru released this Apr 25, 2016 · 1 commit to master since this release

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.


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

@idoru idoru released this Apr 1, 2016 · 5 commits to master since this release

This is a small release to fix a few minor things

  • test output for Xcode 7.3 (#383).
  • compilation fails when using custom matchers (#381).


Version 0.13.0

@idoru idoru released this Mar 23, 2016 · 11 commits to master since this release

What's new

Swift support

  • Cedar now supports Swift! (#367)
  • Wiki has been updated with Swift code examples

Test Doubles

  • Class fakes now handle KVC calls more gracefully (#355, #357)


  • 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)


  • 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)


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

@tjarratt tjarratt released this Oct 8, 2015 · 64 commits to master since this release

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.


  • 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

... 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

@akitchen akitchen released this May 5, 2015 · 149 commits to master since this release

Mostly small fixes for improved compatibility with recent editor versions, and a few other minor improvements.

Update templates to work with Xcode 6.3 …

Print a helpful message if a matcher fails while setting up specs. …

Adds DVTPlugInCompatibilityUUID for Xcode 6.3
Xcode 6.3 housekeeping
Disables specs related to >= etc. matchers …

Kamal Pabla and Nathan Sentjens
Add DVTPlugInCompatibilityUUID for Xcode 6.2
Have the colorized reporter be a buffered reporter

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

@akitchen akitchen released this Jan 6, 2015 · 178 commits to master since this release

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

@akitchen akitchen released this Nov 14, 2014 · 193 commits to master since this release

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

@akitchen akitchen released this Nov 12, 2014 · 194 commits to master since this release

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 received
  • be_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

@jeffh jeffh released this Oct 4, 2014 · 241 commits to master since this release

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.

screen_shot_2014-09-25_at_10 15 19_am

  • 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

@jeffh jeffh released this Sep 23, 2014 · 300 commits to master since this release

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.


Something went wrong with that request. Please try again.