[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