James, As you have discovered, the setup you want is not quite documented the way or in the locations you would expect, but it is documented in many places, such as https://puppet.com/blog/unit-testing-rspec-puppet-for-beginners and https://puppet.com/blog/use-onceover-start-testing-rspec-puppet.
IMO, what you really want to do is integrate tests with your version-controlled code, in-place, rather than replicating it somewhere else. You can do this by using ruby's bundler and a Gemfile to get started, then add a spec/spec_helper.rb and spec/classes/*_spec.rb files for unit tests and so on and so forth. But, you don't actually need puppet installed, as that can come from a gem in the bundler setup. There's a lot to do and many ways to do it, so there's no single solution to choose. I've written a lot about my explorations with rspec on my blog ( https://rnelson0.com/?s=rspec) but here's how I would start. Use puppet-module-skeleton (https://github.com/garethr/puppet-module-skeleton) which creates a new module with rspec tests. It is designed for a module rather than a controlrepo, so will take a little re-working to align it properly for that ( https://rnelson0.com/2015/11/24/modern-rspec-puppet-practices/ and optionally https://rnelson0.com/2016/11/06/puppet-tech-debt-moving-rspec-tests/), but is pretty good for both. Once you get it all working, you commit the changes to your module/controlrepo and then it's bundled with your puppet code, and thus always available for testing. It does mean the tests are deployed on your master, but aside from a little extra disk space, it will have no impact on agents connecting and should not be a concern. It's also portable for when you get a vagrant or docker setup going. With the bundler/rspec framework in place, your workflow becomes: * Clone your controlrepo * Checkout a feature branch for changes * Run `bundle install` with appropriate args (I use `bundle install --path vendor --without system_tests development` most of the time) * Run `bundle exec rake test` to run all the tests (the target `spec`, or the pair `spec_prep` and `spec_clean` will JUST run your unit tests), everything should pass * Make all the edits you need * Run `bundle exec rake test` and ensure the tests continue to pass. If not, repeat the previous step until tests do pass. * Commit your code, push to upstream There are plenty of examples of control repos out there but not all have a working test setup included. Check out these two that show the example: * https://github.com/example42/psick * https://github.com/puppetinabox/controlrepo I hope this helps! Rob Nelson rnels...@gmail.com On Tue, Jul 18, 2017 at 7:51 PM, James Perry <jjperr...@gmail.com> wrote: > Years ago there were a lot of docs about how to setup Puppet to allow > someone to build modules outside having to have a master/client setup using > puppet apply. > > I am trying to figure out the very cryptic world of spec/rspec, as it > seems to not be documented very well anywhere for anyone other than someone > that already knows it, In doing so I don't want to be able to develop in my > home directory in a server versus having to develop modules and test with > rspec against a full puppet server configuration. > > So far I have found little bits and pieces around, but nothing definitive > or documented well for building something of this nature. The best I found > so far were pre-built Ubuntu Docker containers or Vagrant builds. I don't > have access to either presently or the time to build out a server to handle > hosting either. > > Does anyone have a guide to setting up a stand-alone puppet client for > development. There used to be a rspec-puppet.com/setup page and that is > what is linked from inside the documentation, but the page is gone. > > What I have so far is: > > 1. .Install puppet-agent to the host as root. > 2. Setup paths to use the Ruby configuration from the puppet-agent so that > the any gem add-ons are compatible with the version of the puppet-agent > RPM. > 3. Install puppetlabs-stdlib, rspec-puppet and any dependencies they > require. > > When I have done a puppet module generate <name> and a rspec-puppet-init, > I create a basic test to ensure the module compiles, as noted on the > rspec-puppet Github page https://github.com/rodjek/rspec-puppet, That > fails saying it can find compile. > > describe 'mymodule' do > it { is_expected.to compile } > end > > Any other tests that "should" work don't. either. > > So in modules/test/manifests/init.pp I have: > class test { > package { 'somepackage': > ensure => present, > } > } > > And my modules/test/spec/class/init_spec.rb has > > require 'spec_helper' > > describe 'test' do > it { is_expected.to contain('somepackage').with_ensure('present') > end > > So since this seems to be non-functional in my puppet development > environment, which is a copy of my prod, I want to set it up fresh. When I > tried in my home directory all i got were errors. > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to puppet-dev+unsubscr...@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/puppet-dev/23805142-d49e-4612-9590-472ab581dade%40googlegroups.com > <https://groups.google.com/d/msgid/puppet-dev/23805142-d49e-4612-9590-472ab581dade%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 Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/CAC76iT_HvrpB_H%3DYB-4_nbzLQw4deZ3Sw%2BtS%3DSHjOx9t1jPBQw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.