# More info at https://github.com/guard/guard#readme # You'll need to make sure Guard, and any of its plugins are in your Gemfile.local # # Example: # # Automatically run tests on file changes # gem 'guard', require: false # gem 'guard-rspec', require: false # gem 'guard-bundler', require: false # gem 'terminal-notifier-guard', require: false # # After running `bundle install`, you can run Guard via `bundle exec guard` # from the top of the repository checkout. notification(:terminal_notifier, app_name: "Puppet ::", group: `pwd`.chomp) if `uname` =~ /Darwin/ ## Uncomment and set this to only include directories you want to watch # directories %w(app lib config test spec features) \ # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")} ## Note: if you are using the `directories` clause above and you are not ## watching the project directory ('.'), then you will want to move ## the Guardfile to a watched dir and symlink it back, e.g. # # $ mkdir config # $ mv Guardfile config/ # $ ln -s config/Guardfile . # # and, you'll have to watch "config/Guardfile" instead of "Guardfile" guard :bundler do require 'guard/bundler' require 'guard/bundler/verify' helper = Guard::Bundler::Verify.new files = ['Gemfile', 'Gemfile.local'] files += Dir['*.gemspec'] if files.any? { |f| helper.uses_gemspec?(f) } # Assume files are symlinked from somewhere files.each { |file| watch(helper.real_path(file)) } end def file2specs(match) file = match[0] puts "Lib file changed: #{file.inspect}" %w{spec/unit spec/integration}.collect { |d| file.sub('lib/puppet', d).sub(".rb", "_spec.rb") }.find_all { |f| File.exist?(f) } end rspec_options = { cmd: "bundle exec rspec", run_all: { cmd: "bundle exec parallel_rspec -o '--format progress ", cmd_additional_args: "'" }, all_after_pass: false } guard :rspec, rspec_options do require "guard/rspec/dsl" dsl = Guard::RSpec::Dsl.new(self) # Feel free to open issues for suggestions and improvements # RSpec files rspec = dsl.rspec watch(rspec.spec_helper) { rspec.spec_dir } watch(rspec.spec_support) { rspec.spec_dir } watch(rspec.spec_files) # Ruby files ruby = dsl.ruby watch(ruby.lib_files) { |f| file2specs(f) } end