Hi Simon,

On Tue, Apr 30, 2013 at 12:08 PM, Simon Piette <piette.si...@gmail.com>wrote:

> Hi Wolfe,
>
> On Tue, Apr 30, 2013 at 12:05 PM, Wolf Noble <wno...@datapipe.com> wrote:
>
>> Hi Simon,
>> On Apr 29, 2013, at 7:45 PM, Simon Piette <piette.si...@gmail.com>
>>  wrote:
>>
>> What I've done elsewhere is to make a parameter for, in your case, vardir:
>>
>>
>> (untested, but close)
>>
>> Class foo($vardir = $::settings::vardir){
>> file { "${vardir}/files":
>>   ensure => directory
>> }
>> }
>>
>>
>> Then in
>> spec/classes/foo_main_spec.rb:
>> require 'spec_helper'
>> require 'puppetlabs_spec_helper/module_spec_helper'
>> vartest = Puppet.settings[:vardir]
>> describe 'foo', :type => :class do
>>   #...
>>   #Then you can assign vartest as a class parameter to your tests.
>> end
>>
>>
>>
>>
> That's what I did for this module:
>
> https://github.com/spiette/puppet-selinux/blob/master/manifests/params.pp
>
> But under other circumstances, (a puppet module) I can't do this, I have
> to use the $::settings variable.
>
> Thanks,
>
> Simon
>
>

I suspect what's going on here, is the class you're testing doesn't have
the ability to override the $::settings::vardir variable.
I've found that if I make the relevant variable a parameter to the class in
question, I can override it in the tests in question.

It may be possible to set a different class's parameter to a value from a
test, but I've not found a way.

This has resulted in me making whatever variables I need to override
parameters to the class I'm testing. I'd be curious to hear how others have
accomplished this.

Would you mind showing us the module you're talking about where you were
having problems with this approach? Perhaps the list can offer some input
on other ways to accomplish your needs.

CAVEAT: The statement that I've not seen a better way doesn't mean there
isn't one.

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


Reply via email to