Permalink
Browse files

backport r48127 from ruby/ruby trunk.

  • Loading branch information...
hsbt committed Oct 25, 2014
1 parent 5fc3fe0 commit b76941753d7d7f506e526c852ec6d892a5ff455c
Showing with 58 additions and 28 deletions.
  1. +12 −0 lib/rake/cpu_counter.rb
  2. +46 −28 test/test_rake_cpu_counter.rb
@@ -44,6 +44,18 @@ def count
end
end
begin
require 'etc'
rescue LoadError
else
if Etc.respond_to?(:nprocessors)
undef count
def count
return Etc.nprocessors
end
end
end
def count_via_java_runtime
Java::Java.lang.Runtime.getRuntime.availableProcessors
rescue StandardError
@@ -8,43 +8,61 @@ def setup
@cpu_counter = Rake::CpuCounter.new
end
def test_count_via_win32
if Rake::Win32.windows? then
assert_kind_of Numeric, @cpu_counter.count_via_win32
else
assert_nil @cpu_counter.count_via_win32
end
def test_count
num = @cpu_counter.count
skip 'cannot count CPU' if num == nil
assert_kind_of Numeric, num
assert_operator num, :>=, 1
end
def test_in_path_command
with_ruby_in_path do |ruby|
assert_equal ruby, @cpu_counter.in_path_command(ruby)
end
rescue Errno::ENOENT => e
raise unless e.message =~ /\bwhich\b/
def test_count_with_default_nil
def @cpu_counter.count; nil; end
assert_equal(8, @cpu_counter.count_with_default(8))
assert_equal(4, @cpu_counter.count_with_default)
end
skip 'cannot find which for this test'
def test_count_with_default_raise
def @cpu_counter.count; raise; end
assert_equal(8, @cpu_counter.count_with_default(8))
assert_equal(4, @cpu_counter.count_with_default)
end
def test_run
with_ruby_in_path do |ruby|
assert_equal 7, @cpu_counter.run(ruby, '-e', 'puts 3 + 4')
class TestClassMethod < Rake::TestCase
def setup
super
@klass = Class.new(Rake::CpuCounter)
end
end
def with_ruby_in_path
ruby = File.basename Gem.ruby
ruby_dir = File.dirname Gem.ruby
def test_count
@klass.class_eval do
def count; 8; end
end
assert_equal(8, @klass.count)
end
begin
orig_path, ENV['PATH'] =
ENV['PATH'], [ruby_dir, *ENV['PATH']].join(File::PATH_SEPARATOR)
def test_count_nil
counted = false
@klass.class_eval do
define_method(:count) do
counted = true
nil
end
end
assert_equal(4, @klass.count)
assert_equal(true, counted)
end
yield ruby
ensure
ENV['PATH'] = orig_path
def test_count_raise
counted = false
@klass.class_eval do
define_method(:count) do
counted = true
raise
end
end
assert_equal(4, @klass.count)
assert_equal(true, counted)
end
end
end

0 comments on commit b769417

Please sign in to comment.