[chef] Re: Re: Re: Hooking into execute resources in chefspec


Chronological Thread 
  • From: Joe Nuspl < >
  • To: Lamont Granquist < >
  • Cc:
  • Subject: [chef] Re: Re: Re: Hooking into execute resources in chefspec
  • Date: Thu, 30 Oct 2014 13:35:31 -0700

Thanks!  I can use that to emulate the test scenarios.

Joe

On Oct 30, 2014, at 1:26 PM, Lamont Granquist < "> > wrote:


you can and_return(true, false) to return a sequence of a values...

http://stackoverflow.com/a/5948282/506908

that doesn't answer your question, but i think that's what you're trying to do?

On Thu Oct 30 11:16:51 2014, Joe Nuspl wrote:
Stubbing of block style guards seems to work for me:

   before do
     allow(File).to receive(:exists?).and_call_original
     allow(File).to receive(:exists?).with('/tmp/guard').and_return(true)
   end


But that was not this issue I was describing.  I was wondering if
there was a way to run some code after the runner processed
“execute[refresh]” but before “execute[reconfigure]”.

Joe

On Oct 29, 2014, at 4:17 PM, Ranjib Dey < ">
< ">mailto: >> wrote:

chefspec does not allow stubbing block style guards, it does allow
command / string style gurards. If you change the guard to use `test
-e file`  (and from your example, it looks you can) then you use
stub_command("test -e file").and_return(true) or false depending upon
your use case

On Wed, Oct 29, 2014 at 3:21 PM, Joe Nuspl < ">
< ">mailto: >> wrote:

   I’m automating some 3rd party code.  What I have is something like:

       execute ‘refresh’ do
         only_if { CONDITION }
       end

       execute ‘reconfigure' do
         only_if { ::File.exists?(GUARD) }
       end


   Sometimes refresh creates GUARD.  GUARD could also be created by
   an admin. reconfigure removes GUARD upon success.

   I am try to write chefspec tests to cover all the cases:

   1) no-existing-guard refresh-creates-gaurd
   2) no-existing-guard refresh-does-not-create-guard

   3) existing-guard refresh-creates-guard
   4) existing-guard refresh-does-not-create-guard
   5) no-existing-guard no-refresh
   6) exisiting-guard no-refresh

   What I want to do is to “hook” into execute[refresh] and
   conditionally update the ::File.exists? stub to return true.

   If I update the stub before the run, I’ve collapsed #1 and #4
   into one case.

   Is it possible to hook into a resource?   I tried :step_into but
   that did not seem to do the trick.  Any guidance would be
   appreciated.

   Thanks.

   Joe




Archive powered by MHonArc 2.6.16.

§