ChefSpec 4.0!

Ohai Chefs!

I just released ChefSpec 4.0. I realize this may come as a shock since ChefSpec has seemed fairly stale these past few months, but I’ve been working on some awesome stuff incognito.

Breaking Changes:

  • Upgraded to RSpec 3! RSpec 3 brings many new API changes and syntaxes
  • Bump minimum required Chef version to 11.12! Without this change, Chef Zero will blow up


  • Gracefully fail if a resource does not report it’s source line in the reporter
  • Pull the correct cookbook folder from the stack on Windows (88bfc6)
  • Cover resources in render_file matchers for reporting
  • Cover resources in link_to matchers for reporting
  • Cover resources in do_nothing matchers for reporting
  • Fix memory leak in LWRP Resource classes
  • Restore the original cookbook_path when using librarian-chef
  • Documentation fixes
  • Disable lazy loading of cached resources
  • Fix a bug that will happen in later Chef versions because FreeBSD is evil (13ff143)
  • Do not pass local file paths to preferred_filename_on_disk_location


  • Add runner methods for all the bash, csh, perl, etc resources
  • Upgraded fauxhai dependency and specs
  • Upgrade Chef Zero for multi-org support


  • Improved documentation around the define_runner_method method
  • Update badges to be all SVG
  • Test on Ruby 2.1
  • Use a randomly assigned port for Chef Zero
  • Remove references to .stub from documentation

I’m going to say this as loudly and bluntly as possible - ChefSpec 4 will not blindly work with existing codebases! The RSpec syntaxes have changed. Some are deprecated, some are completely removed. I’d recommend reading the RSpec 3 upgrade guide for a full list of changes.

As per the deprecation gods of the Internet, 2.0 is no longer officially supported. 3.0 is now in maintenance mode and will only receive backward-compatible patches, but no new features.

Happy testing,