aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrekoten' Marjan <krekoten@gmail.com>2010-09-16 19:03:55 +0300
committerJosé Valim <jose.valim@gmail.com>2010-09-18 20:49:36 +0200
commitd4fa120671e989eecb71c14647dd2051d28de4a5 (patch)
treee5b9e768a4661dbac8c5f895b85d240be094aa4f
parent76266a818449c732440e7e2ef4de8442ac6af891 (diff)
downloadrails-d4fa120671e989eecb71c14647dd2051d28de4a5.tar.gz
rails-d4fa120671e989eecb71c14647dd2051d28de4a5.tar.bz2
rails-d4fa120671e989eecb71c14647dd2051d28de4a5.zip
Move capture to Kernel. [#5641 state:resolved]
-rw-r--r--activesupport/lib/active_support/core_ext/kernel/reporting.rb19
-rw-r--r--activesupport/test/core_ext/kernel_test.rb5
-rw-r--r--railties/lib/rails/generators/test_case.rb20
-rw-r--r--railties/test/railties/engine_test.rb14
4 files changed, 26 insertions, 32 deletions
diff --git a/activesupport/lib/active_support/core_ext/kernel/reporting.rb b/activesupport/lib/active_support/core_ext/kernel/reporting.rb
index 5105c40e4d..37a827123a 100644
--- a/activesupport/lib/active_support/core_ext/kernel/reporting.rb
+++ b/activesupport/lib/active_support/core_ext/kernel/reporting.rb
@@ -59,4 +59,23 @@ module Kernel
raise unless exception_classes.any? { |cls| e.kind_of?(cls) }
end
end
+
+ # Captures the given stream and returns it:
+ #
+ # stream = capture(:stdout){ puts "Cool" }
+ # stream # => "Cool\n"
+ #
+ def capture(stream)
+ begin
+ stream = stream.to_s
+ eval "$#{stream} = StringIO.new"
+ yield
+ result = eval("$#{stream}").string
+ ensure
+ eval("$#{stream} = #{stream.upcase}")
+ end
+
+ result
+ end
+ alias :silence :capture
end
diff --git a/activesupport/test/core_ext/kernel_test.rb b/activesupport/test/core_ext/kernel_test.rb
index 904d56a87e..ede9b0a6aa 100644
--- a/activesupport/test/core_ext/kernel_test.rb
+++ b/activesupport/test/core_ext/kernel_test.rb
@@ -52,6 +52,11 @@ class KernelTest < Test::Unit::TestCase
class << o; @x = 1; end
assert_equal 1, o.class_eval { @x }
end
+
+ def test_capture
+ assert_equal 'STDERR', capture(:stderr) {$stderr.print 'STDERR'}
+ assert_equal 'STDOUT', capture(:stdout) {print 'STDOUT'}
+ end
end
class KernelSuppressTest < Test::Unit::TestCase
diff --git a/railties/lib/rails/generators/test_case.rb b/railties/lib/rails/generators/test_case.rb
index 3376b422cb..cab8708be3 100644
--- a/railties/lib/rails/generators/test_case.rb
+++ b/railties/lib/rails/generators/test_case.rb
@@ -1,6 +1,7 @@
require 'active_support/core_ext/class/attribute'
require 'active_support/core_ext/module/delegation'
require 'active_support/core_ext/hash/reverse_merge'
+require 'active_support/core_ext/kernel/reporting'
require 'rails/generators'
require 'fileutils'
@@ -65,25 +66,6 @@ module Rails
self.destination_root = path
end
- # Captures the given stream and returns it:
- #
- # stream = capture(:stdout){ puts "Cool" }
- # stream # => "Cool\n"
- #
- def capture(stream)
- begin
- stream = stream.to_s
- eval "$#{stream} = StringIO.new"
- yield
- result = eval("$#{stream}").string
- ensure
- eval("$#{stream} = #{stream.upcase}")
- end
-
- result
- end
- alias :silence :capture
-
# Asserts a given file exists. You need to supply an absolute path or a path relative
# to the configured destination:
#
diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb
index 6b90b32005..92d6fc74dc 100644
--- a/railties/test/railties/engine_test.rb
+++ b/railties/test/railties/engine_test.rb
@@ -1,22 +1,10 @@
require "isolation/abstract_unit"
require "railties/shared_tests"
require 'stringio'
+require 'active_support/core_ext/kernel/reporting'
module RailtiesTest
class EngineTest < Test::Unit::TestCase
- # TODO: it's copied from generators/test_case, maybe make a module with such helpers?
- def capture(stream)
- begin
- stream = stream.to_s
- eval "$#{stream} = StringIO.new"
- yield
- result = eval("$#{stream}").string
- ensure
- eval("$#{stream} = #{stream.upcase}")
- end
-
- result
- end
include ActiveSupport::Testing::Isolation
include SharedTests