Wil,

I went ahead and re-worked the example specification.

Please take a look at the commit message and the way I'm setting an
expectation that mocks the behavior of lookupvar for both Mac OS X and
Linux.

https://github.com/jeffmccune/puppetlabs-stdlib/tree/feature/master/has_interface_with

$ rspec --format d spec/unit/puppet/parser/functions/has_interface_with_spec.rb

function_has_interface_with
  On Mac OS X Systems
    should have loopback (lo0)
    should not have loopback (lo)
  On Linux Systems
    should have loopback (lo)
    should not have loopback (lo0)

Finished in 0.04262 seconds
4 examples, 0 failures

Please feel free to reply here if you have any questions.  We might
also want to consider moving this thread to puppet-dev since it's
developing a new function.

Hope this helps,
-Jeff

On Wed, Apr 11, 2012 at 9:03 AM, Jeff McCune <j...@puppetlabs.com> wrote:
> On Tue, Apr 10, 2012 at 11:00 PM, Wil Cooley <wilcoo...@gmail.com> wrote:
>> I have been working on adding some predicate functions to puppetlabs-stdlib
>> that test things based on 'interfaces' and related facts.
>
> Sweet!
>
>> The functions themselves seem to work fine in my manifest-based smoketests,
>> but I am running into trouble that may or may not be due to my ignorance
>> about rspec or Facter. Something needs to be done to initialize Facter
>> because lookupvar('interfaces') just returns :undefined. I have not found
>> any examples in the existing rspec tests; getvar_spec.rb seems like it
>> should have something but the tests it does are pretty basic.
>
> In general, you should assume the spec_helper for stdlib will
> initialize facter for you.  In fact, you don't need to do require
> 'facter' in your example specification.
>
>> You can see some of what I've been trying at
>> https://github.com/wcooley/puppetlabs-stdlib/blob/master/spec/unit/puppet/parser/functions/has_interface_with_spec.rb
>
> Cool, I went ahead and pulled down your branch.  If I might make a
> suggestion, I notice you're developing on the "master branch" and you
> have a number of commits that have not actually been merged into the
> "master" branch of the puppetlabs repository.
>
> This situation of having two different branches, both named master, is
> confusing and makes it a bit difficult to work with.
>
> When using Git, creating new branches is almost effortless.  It's just
> two commands.
>
> When you start hacking please create a topic branch:
>
> # Create a branch indicating this is a new feature based on master
> having something to do with an interface function
> git branch feature/master/has_interface_with_function origin/master
> # Checkout the branch
> git checkout feature/master/has_interface_with_spec
> # Hack away
>
> It's also fairly easy to rename your current topic branch which is
> named "master"
>
> # Rename your local master branch to a topic branch
> git branch rename master  feature/master/has_interface_with_function
>
> # Push the new name to your github repository
> git push wcooley
> feature/master/has_interface_with_function:feature/master/has_interface_with_function
>
> # Set your local topic branch to track the published copy of it.
> git branch --set-upstream feature/master/has_interface_with_function
> wcooley/feature/master/has_interface_with_function
>
> # Re-synchronize the Puppet Labs master branch (I assume origin is
> git://github.com/puppetlabs/puppetlabs-stdlib.git)
> git fetch origin
>
> # Create your local master tracking Puppet Labs master  (These should
> always be in sync.  Don't commit on this branch...)
> git branch master --track origin/master
>
> # Replace your own master branch on Github with the Puppet Labs master
> branch (because it's not actually master right now)
> git push wcooley +origin/master:master
>
> # Finally, work in your topic branch
> git co feature/master/has_interface_with_function
>
>> Is there something obvious I'm missing?
>
> The setup looks to be quite strange.  You shouldn't ever need to
> define a get_scope method.  I recommend looking at the
> validate_re_spec.rb for a good example.
>
> I'm also re-working your topic branch in my own if you'd like to take
> a look at the changes.
>
> -Jeff

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to