[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, master, updated. debian/0.24.6-1-356-g5718585
James Turnbull
james at lovedthanlost.net
Fri Jan 23 14:21:52 UTC 2009
The following commit has been merged in the master branch:
commit 3570c71cf41a1705f36e48724012661dbca42b84
Author: Brice Figureau <brice-puppet at daysofwonder.com>
Date: Mon Dec 1 20:14:33 2008 +0100
Fix #1788 - allow rspec rake to run only some tests
Signed-off-by: Brice Figureau <brice-puppet at daysofwonder.com>
diff --git a/spec/Rakefile b/spec/Rakefile
index e2996f6..19ef278 100644
--- a/spec/Rakefile
+++ b/spec/Rakefile
@@ -7,6 +7,49 @@ puppetlibdir = File.join(basedir, "../lib")
puppettestlibdir = File.join(basedir, "../test/lib")
speclibdir = File.join(basedir, "lib")
+require 'find'
+
+include Find
+include FileTest
+
+$exclusions = %W(lib)
+
+filemap = Hash.new { |hash, key| hash[key] = [] }
+
+allfiles = []
+
+# First collect the entire file list.
+find(".") do |f|
+ # Get rid of the leading ./
+ f = f.sub(/^\.\//, '')
+
+ file = File.basename(f)
+ dir = File.dirname(f)
+
+ # Prune . directories and excluded dirs
+ if (file =~ /^\./ and f != ".") or $exclusions.include?(File.basename(file))
+ prune
+ next
+ end
+ next if f == "."
+ next if dir == "."
+
+ # If we're a ruby script, then add it to the list of files for that dir
+ if file =~ /\.rb$/
+ allfiles << f
+ # Add it to all of the parent dirs, not just our own
+ parts = File.split(dir)
+ if parts[0] == "."
+ parts.shift
+ end
+ parts.each_with_index { |part, i|
+ path = File.join(parts[0..i])
+ filemap[path] << f
+ }
+ end
+end
+
+
libs = [puppetlibdir, puppettestlibdir, speclibdir]
desc "Run all specs"
Spec::Rake::SpecTask.new('all') do |t|
@@ -16,3 +59,33 @@ Spec::Rake::SpecTask.new('all') do |t|
end
task :default => [:all]
+
+# Now create a task for every directory
+filemap.each do |dir, files|
+ ns = dir.gsub "/", ":"
+
+ # First create a separate task for each file in the namespace.
+ namespace ns do
+ files.each do |file|
+ Spec::Rake::SpecTask.new(file) do |t|
+ t.spec_files = File.basename(file, '.rb')
+ t.libs = libs
+ t.spec_opts = ['--options', 'spec.opts']
+ end
+ end
+ end
+
+ # Then create a task that matches the directory itself.
+ Spec::Rake::SpecTask.new(dir) do |t|
+ if ENV["TESTFILES"]
+ t.spec_files = ENV["TESTFILES"].split(/\s+/)
+ else
+ t.spec_files = files.sort
+ end
+ t.libs = libs
+ t.spec_opts = ['--options', 'spec.opts']
+ end
+
+ # And alias it with a slash on the end
+ task(dir + "/" => dir)
+end
--
Puppet packaging for Debian
More information about the Pkg-puppet-devel
mailing list