summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-06 09:31:37 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-09-06 09:31:37 +0000
commitf6d2b4858891376dec83e43dccfa028d4b32b184 (patch)
tree053f00bd120e730616a371793eb579edddba29e4
parent6057695c87cf8281f3ff9aa37cfdf1c317e1f9c1 (diff)
* lib/rake.rb, lib/rake/*, test/rake/*: Update latest rake master(e47d023)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47433 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--lib/rake/cloneable.rb2
-rw-r--r--lib/rake/contrib/.document0
-rw-r--r--lib/rake/cpu_counter.rb3
-rw-r--r--lib/rake/dsl_definition.rb1
-rw-r--r--lib/rake/ext/pathname.rb25
-rw-r--r--lib/rake/ext/string.rb2
-rw-r--r--lib/rake/file_list.rb22
-rw-r--r--lib/rake/file_task.rb2
-rw-r--r--lib/rake/task_manager.rb2
-rw-r--r--test/rake/helper.rb10
-rw-r--r--test/rake/test_rake_directory_task.rb13
-rw-r--r--test/rake/test_rake_file_list.rb28
-rw-r--r--test/rake/test_rake_file_task.rb15
-rw-r--r--test/rake/test_rake_pathname_extensions.rb15
-rw-r--r--test/rake/test_rake_task_argument_parsing.rb10
16 files changed, 141 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 0615dd79e8..f54009742b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Sep 6 18:31:32 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
+
+ * lib/rake.rb, lib/rake/*, test/rake/*: Update latest rake master(e47d023)
+
Sat Sep 6 16:38:08 2014 Masaki Suketa <masaki.suketa@nifty.ne.jp>
* ext/win32ole/win32ole_variant.c (ole_val2variant_err,
diff --git a/lib/rake/cloneable.rb b/lib/rake/cloneable.rb
index cd19cd3733..d53645f2f3 100644
--- a/lib/rake/cloneable.rb
+++ b/lib/rake/cloneable.rb
@@ -3,7 +3,7 @@ module Rake
# Mixin for creating easily cloned objects.
module Cloneable # :nodoc:
- # The hook that invoked by 'clone' and 'dup' methods.
+ # The hook that is invoked by 'clone' and 'dup' methods.
def initialize_copy(source)
super
source.instance_variables.each do |var|
diff --git a/lib/rake/contrib/.document b/lib/rake/contrib/.document
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/lib/rake/contrib/.document
diff --git a/lib/rake/cpu_counter.rb b/lib/rake/cpu_counter.rb
index c05b69b7a7..d7c92a6cbe 100644
--- a/lib/rake/cpu_counter.rb
+++ b/lib/rake/cpu_counter.rb
@@ -38,7 +38,8 @@ module Rake
count_via_win32 ||
count_via_sysctl ||
count_via_hwprefs_thread_count ||
- count_via_hwprefs_cpu_count
+ count_via_hwprefs_cpu_count ||
+ count_via_cpuinfo
end
end
end
diff --git a/lib/rake/dsl_definition.rb b/lib/rake/dsl_definition.rb
index 28e9631c3c..b521b7dc5c 100644
--- a/lib/rake/dsl_definition.rb
+++ b/lib/rake/dsl_definition.rb
@@ -98,6 +98,7 @@ module Rake
def directory(*args, &block) # :doc:
result = file_create(*args, &block)
dir, _ = *Rake.application.resolve_args(args)
+ dir = Rake.from_pathname(dir)
Rake.each_dir_parent(dir) do |d|
file_create d do |t|
mkdir_p t.name unless File.exist?(t.name)
diff --git a/lib/rake/ext/pathname.rb b/lib/rake/ext/pathname.rb
new file mode 100644
index 0000000000..49e2cd47ac
--- /dev/null
+++ b/lib/rake/ext/pathname.rb
@@ -0,0 +1,25 @@
+require 'rake/ext/core'
+require 'pathname'
+
+class Pathname
+
+ rake_extension("ext") do
+ # Return a new Pathname with <tt>String#ext</tt> applied to it.
+ #
+ # This Pathname extension comes from Rake
+ def ext(newext='')
+ Pathname.new(Rake.from_pathname(self).ext(newext))
+ end
+ end
+
+ rake_extension("pathmap") do
+ # Apply the pathmap spec to the Pathname, returning a
+ # new Pathname with the modified paths. (See String#pathmap for
+ # details.)
+ #
+ # This Pathname extension comes from Rake
+ def pathmap(spec=nil, &block)
+ Pathname.new(Rake.from_pathname(self).pathmap(spec, &block))
+ end
+ end
+end
diff --git a/lib/rake/ext/string.rb b/lib/rake/ext/string.rb
index 34ee328f72..b47b055a74 100644
--- a/lib/rake/ext/string.rb
+++ b/lib/rake/ext/string.rb
@@ -49,7 +49,7 @@ class String
end
protected :pathmap_partial
- # Preform the pathmap replacement operations on the given path. The
+ # Perform the pathmap replacement operations on the given path. The
# patterns take the form 'pat1,rep1;pat2,rep2...'.
#
# This String extension comes from Rake
diff --git a/lib/rake/file_list.rb b/lib/rake/file_list.rb
index b01dbbb341..006ec7703e 100644
--- a/lib/rake/file_list.rb
+++ b/lib/rake/file_list.rb
@@ -49,7 +49,7 @@ module Rake
# List of methods that should not be delegated here (we define special
# versions of them explicitly below).
- MUST_NOT_DEFINE = %w[to_a to_ary partition *]
+ MUST_NOT_DEFINE = %w[to_a to_ary partition * <<]
# List of delegated methods that return new array values which need
# wrapping.
@@ -119,7 +119,7 @@ module Rake
if fn.respond_to? :to_ary
include(*fn.to_ary)
else
- @pending_add << fn
+ @pending_add << Rake.from_pathname(fn)
end
end
@pending = true
@@ -149,7 +149,7 @@ module Rake
#
def exclude(*patterns, &block)
patterns.each do |pat|
- @exclude_patterns << pat
+ @exclude_patterns << Rake.from_pathname(pat)
end
@exclude_procs << block if block_given?
resolve_exclude unless @pending
@@ -196,6 +196,12 @@ module Rake
end
end
+ def <<(obj)
+ resolve
+ @items << Rake.from_pathname(obj)
+ self
+ end
+
# Resolve all the pending adds now.
def resolve
if @pending
@@ -346,7 +352,7 @@ module Rake
# Should the given file name be excluded from the list?
#
- # NOTE: This method was formally named "exclude?", but Rails
+ # NOTE: This method was formerly named "exclude?", but Rails
# introduced an exclude? method as an array method and setup a
# conflict with file list. We renamed the method to avoid
# confusion. If you were using "FileList#exclude?" in your user
@@ -410,5 +416,13 @@ module Rake
dir = File.dirname(dir)
end
end
+
+ # Convert Pathname and Pathname-like objects to strings;
+ # leave everything else alone
+ def from_pathname(path) # :nodoc:
+ path = path.to_path if path.respond_to?(:to_path)
+ path = path.to_str if path.respond_to?(:to_str)
+ path
+ end
end
end # module Rake
diff --git a/lib/rake/file_task.rb b/lib/rake/file_task.rb
index 03e26d967b..11823bbe46 100644
--- a/lib/rake/file_task.rb
+++ b/lib/rake/file_task.rb
@@ -39,7 +39,7 @@ module Rake
# Apply the scope to the task name according to the rules for this kind
# of task. File based tasks ignore the scope when creating the name.
def scope_name(scope, task_name)
- task_name
+ Rake.from_pathname(task_name)
end
end
end
diff --git a/lib/rake/task_manager.rb b/lib/rake/task_manager.rb
index af53e3f586..221c68cec4 100644
--- a/lib/rake/task_manager.rb
+++ b/lib/rake/task_manager.rb
@@ -35,7 +35,7 @@ module Rake
task_name = task_class.scope_name(@scope, task_name)
deps = [deps] unless deps.respond_to?(:to_ary)
- deps = deps.map { |d| d.to_s }
+ deps = deps.map { |d| Rake.from_pathname(d).to_s }
task = intern(task_class, task_name)
task.set_arg_names(arg_names) unless arg_names.empty?
if Rake::TaskManager.record_task_metadata
diff --git a/test/rake/helper.rb b/test/rake/helper.rb
index 74cab7559f..992c6bffae 100644
--- a/test/rake/helper.rb
+++ b/test/rake/helper.rb
@@ -2,7 +2,7 @@ require 'rubygems'
$:.unshift File.expand_path('../../lib', __FILE__)
begin
- gem 'minitest'
+ gem 'minitest', '~> 4'
rescue Gem::LoadError
end
@@ -11,13 +11,15 @@ require 'rake'
require 'tmpdir'
require File.expand_path('../file_creation', __FILE__)
-require_relative 'support/ruby_runner'
-require_relative 'support/rakefile_definitions'
begin
require_relative '../ruby/envutil'
+ require_relative 'support/ruby_runner'
+ require_relative 'support/rakefile_definitions'
rescue NoMethodError, LoadError
- # for ruby trunk
+ # ruby 1.8
+ require 'test/support/ruby_runner'
+ require 'test/support/rakefile_definitions'
end
class Rake::TestCase < MiniTest::Unit::TestCase
diff --git a/test/rake/test_rake_directory_task.rb b/test/rake/test_rake_directory_task.rb
index c8275e6d10..0014d1c158 100644
--- a/test/rake/test_rake_directory_task.rb
+++ b/test/rake/test_rake_directory_task.rb
@@ -1,5 +1,6 @@
require File.expand_path('../helper', __FILE__)
require 'fileutils'
+require 'pathname'
class TestRakeDirectoryTask < Rake::TestCase
include Rake
@@ -60,4 +61,16 @@ class TestRakeDirectoryTask < Rake::TestCase
assert_equal ["t2", "a/b/c"], runlist
assert File.directory?("a/b/c")
end
+
+ def test_can_use_pathname
+ directory Pathname.new "a/b/c"
+
+ assert_equal FileCreationTask, Task["a/b/c"].class
+
+ verbose(false) {
+ Task['a/b/c'].invoke
+ }
+
+ assert File.directory?("a/b/c")
+ end
end
diff --git a/test/rake/test_rake_file_list.rb b/test/rake/test_rake_file_list.rb
index 899f3bc509..c1b4c92086 100644
--- a/test/rake/test_rake_file_list.rb
+++ b/test/rake/test_rake_file_list.rb
@@ -1,4 +1,5 @@
require File.expand_path('../helper', __FILE__)
+require 'pathname'
class TestRakeFileList < Rake::TestCase
FileList = Rake::FileList
@@ -46,6 +47,12 @@ class TestRakeFileList < Rake::TestCase
fl.sort
end
+ def test_create_with_pathname
+ fl = FileList.new(Pathname.new("*.c"))
+ assert_equal ["abc.c", "x.c", "xyz.c"].sort,
+ fl.sort
+ end
+
def test_create_with_block
fl = FileList.new { |f| f.include("x") }
assert_equal ["x"], fl.resolve
@@ -74,12 +81,24 @@ class TestRakeFileList < Rake::TestCase
fl.sort
end
+ def test_include_with_pathname
+ fl = FileList.new.include(Pathname.new("*.c"))
+ assert_equal ["abc.c", "x.c", "xyz.c"].sort,
+ fl.sort
+ end
+
def test_append
fl = FileList.new
fl << "a.rb" << "b.rb"
assert_equal ['a.rb', 'b.rb'], fl
end
+ def test_append_pathname
+ fl = FileList.new
+ fl << Pathname.new("a.rb")
+ assert_equal ['a.rb'], fl
+ end
+
def test_add_many
fl = FileList.new
fl.include %w(a d c)
@@ -163,6 +182,15 @@ class TestRakeFileList < Rake::TestCase
assert_equal [], fl
end
+ def test_exclude_pathname
+ fl = FileList['x.c', 'abc.c', 'other']
+ fl.each { |fn| touch fn, :verbose => false }
+
+ fl.exclude(Pathname.new('*.c'))
+
+ assert_equal ['other'], fl
+ end
+
def test_excluding_via_block
fl = FileList['a.c', 'b.c', 'xyz.c']
fl.exclude { |fn| fn.pathmap('%n') == 'xyz' }
diff --git a/test/rake/test_rake_file_task.rb b/test/rake/test_rake_file_task.rb
index ae828c9ba1..a6a9fa2c51 100644
--- a/test/rake/test_rake_file_task.rb
+++ b/test/rake/test_rake_file_task.rb
@@ -1,5 +1,6 @@
require File.expand_path('../helper', __FILE__)
require 'fileutils'
+require 'pathname'
class TestRakeFileTask < Rake::TestCase
include Rake
@@ -162,6 +163,20 @@ class TestRakeFileTask < Rake::TestCase
assert_equal ["preqA", "preqB"], t.sources
end
+ def test_task_can_be_pathname
+ name = "dummy"
+ file Pathname.new name
+
+ ftask = Task[name]
+
+ assert_equal name.to_s, ftask.name
+ end
+
+ def test_prerequisite_can_be_pathname
+ t = file :f => Pathname.new("preq")
+ assert_equal "preq", t.source
+ end
+
# I have currently disabled this test. I'm not convinced that
# deleting the file target on failure is always the proper thing to
# do. I'm willing to hear input on this topic.
diff --git a/test/rake/test_rake_pathname_extensions.rb b/test/rake/test_rake_pathname_extensions.rb
new file mode 100644
index 0000000000..7da702d0c7
--- /dev/null
+++ b/test/rake/test_rake_pathname_extensions.rb
@@ -0,0 +1,15 @@
+require File.expand_path('../helper', __FILE__)
+require 'rake/ext/pathname'
+
+class TestRakePathnameExtensions < Rake::TestCase
+ def test_ext_works_on_pathnames
+ pathname = Pathname.new("abc.foo")
+ assert_equal Pathname.new("abc.bar"), pathname.ext("bar")
+ end
+
+ def test_path_map_works_on_pathnames
+ pathname = Pathname.new("this/is/a/dir/abc.rb")
+ assert_equal Pathname.new("abc.rb"), pathname.pathmap("%f")
+ assert_equal Pathname.new("this/is/a/dir"), pathname.pathmap("%d")
+ end
+end
diff --git a/test/rake/test_rake_task_argument_parsing.rb b/test/rake/test_rake_task_argument_parsing.rb
index 0294a9fb2c..3cb5d9cfe3 100644
--- a/test/rake/test_rake_task_argument_parsing.rb
+++ b/test/rake/test_rake_task_argument_parsing.rb
@@ -49,6 +49,16 @@ class TestRakeTaskArgumentParsing < Rake::TestCase
assert_equal ["one", "two", "three_a, three_b", "four"], args
end
+ def test_treat_blank_arg_as_empty_string
+ name, args = @app.parse_task_string("name[one,]")
+ assert_equal "name", name
+ assert_equal ["one", ""], args
+
+ name, args = @app.parse_task_string("name[one,,two]")
+ assert_equal "name", name
+ assert_equal ["one", "", "two"], args
+ end
+
def test_terminal_width_using_env
app = Rake::Application.new
app.terminal_columns = 1234