зеркало из https://github.com/github/ruby.git
* 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:
Родитель
6057695c87
Коммит
f6d2b48588
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче