[chef] ChefSpec for LWRPs without recipes...


Chronological Thread 
  • From: Bryan Stenson < >
  • To:
  • Subject: [chef] ChefSpec for LWRPs without recipes...
  • Date: Wed, 1 May 2013 07:53:21 -0700

Ohai!

Following the cookbook pattern described in the "Berkshelf Way", I'm trying to create a library cookbook which contains some custom LWRPs.  This library cookbook will not have any meaningful recipe on its own...it will only supply providers and resources to be consumed by application cookbooks.

I'd like to test the library cookbook separately, and I think ChefSpec is the correct approach for unit testing.  I see that ChefSpec takes a recipe list when "converging", but, since my library cookbook won't have recipes, I don't have one to give to ChefRunner.

I suppose I'd like some suggestions/experiences on how to do this.  From my perspective, I can see at least two ways to solve it (with a STRONG preference on the latter):

1. Create a "lwrp_testing.rb" recipe which will specifically call out to each LWRP the library cookbook provides.  I don't like this cause then I've got a testing recipe floating around which COULD be applied to a node in production - and that's just silly.  I could prefix this recipe with a "_" (as in, "_lwrp_testing.rb"), but again, it feels like a hack.

2. Create a recipe fixture for testing the LWRP for use only during ChefSpec runs.  The recipe would only exist in the context of a ChefSpec run, and allow for valid exercise of the underlying LWRPs during testing...at the same time, the recipe would not exist "for reals" in the cookbook, and couldn't be assigned to a run_list.  This seems like an elegant approach (design wise), but my Ruby skills are not to the level they should be to easily implement this.  Anybody else try this?

Or, perhaps there's another solution I'm overlooking?

Thanks for your thoughts.

Bryan

PS - Thanks to everybody for another great ChefConf!



Archive powered by MHonArc 2.6.16.

§