* 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
This commit is contained in:
hsbt 2014-09-06 09:31:37 +00:00
Родитель 6057695c87
Коммит f6d2b48588
16 изменённых файлов: 141 добавлений и 13 удалений

Просмотреть файл

@ -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,

Просмотреть файл

@ -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|

Просмотреть файл

Просмотреть файл

@ -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

Просмотреть файл

@ -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)

25
lib/rake/ext/pathname.rb Normal file
Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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' }

Просмотреть файл

@ -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.

Просмотреть файл

@ -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

Просмотреть файл

@ -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