I tested my facts like this: https://github.com/Spantree/puppet-thrift/blob/master/spec/unit/facter/thrift_version_spec.rb
One detail to take into account is that I change the mock library from its default to rspec: https://github.com/Spantree/puppet-thrift/blob/master/spec/spec_helper.rb Regards On Tue, Sep 2, 2014 at 1:28 PM, Hunter Haugen <[email protected]> wrote: > > On Tue, Sep 2, 2014 at 10:48 AM, Brett Swift <[email protected]> wrote: > >> >> rspec-puppet supports classes, functions, defined types, but not facts. >> >> >> spec >> | >> -> classses >> -> defines >> -> facts ? ? ? ?? ? >> >> >> Is there a recommended way to test facts? >> > > You don't actually need any of the helpers in rspec-puppet to test facts > with rspec. > > In rspec, you would stub any facts that are required but not under test > with `allow(Facter.fact(:osfamily)).to > receive(:value).and_return("fakeosfamily")`, then stub any commands that > the fact that you're testing with `expect(Facter::Util::Resolution).to > receive(:exec).with("some command here").and_return("out that the command > would return")` > > Then you can call `expect(Facter.fact(:myfact).value).to eq("factvalue")` > > Eg, testing the root_home fact in stdlib: > https://github.com/puppetlabs/puppetlabs-stdlib/blob/master/spec/unit/facter/root_home_spec.rb#L34-L50 > > >> >> I've seen a few examples, but they seem hacky, and I have a feeling this >> should be or is available from puppet modules. >> >> >> http://unethicalblogger.com/2014/03/01/testing-custom-facts-with-rspec.html >> >> --> requires re-writing every fact. Not super keen on doing that if I >> don't have to. >> >> >> github.com/vStone/puppet-testing-example >> --> seems to work at first, but then when I change an expectation from >> false to true, it still passes. This is 2 years old and the version of >> rspec isn't locked down in the gemfile, so it may not even be valid with >> the latest version. >> >> >> Does anyone have a working solution? Maybe my google-fu isn't very >> good.. there has to be something out there that works? >> >> >> >> >> >> -- >> 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 [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/puppet-users/e55b7789-ea18-4440-933b-efa1e5bc3263%40googlegroups.com >> <https://groups.google.com/d/msgid/puppet-users/e55b7789-ea18-4440-933b-efa1e5bc3263%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/puppet-users/CAJaQvGDj3Vf0LaVR2Q9c6PtUeYDHgzAp6%2B9T5C8mh46sQF7fSA%40mail.gmail.com > <https://groups.google.com/d/msgid/puppet-users/CAJaQvGDj3Vf0LaVR2Q9c6PtUeYDHgzAp6%2B9T5C8mh46sQF7fSA%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- Those who do not understand Unix are condemned to reinvent it, poorly. Any sufficiently recent Microsoft OS contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Unix. -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/CAApMPgyCT_YmWm-anqXtyvPAF1Wuf%3DFBOk4zgn2dTCuLh48Aeg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
