Skip to content
Permalink
Browse files

Remove deprecated methods at `Kernel`.

`silence_stderr`, `silence_stream`, `capture` and `quietly`.
  • Loading branch information...
rafaelfranca committed Jan 3, 2015
1 parent 98ea199 commit 481e49c64f790e46f4aff3ed539ed227d2eb46cb
@@ -29,7 +29,7 @@ class Astronaut < ActiveRecord::Base

teardown do
if defined?(@connection)
@connection.drop_table "astronauts" if @connection.table_exists? 'astronauts'
@connection.drop_table "astronauts" if @connection.table_exists? 'astronauts'
@connection.drop_table "rockets" if @connection.table_exists? 'rockets'
end
end
@@ -220,6 +220,18 @@ def test_add_foreign_key_is_reversible
ensure
silence_stream($stdout) { migration.migrate(:down) }
end

private

def silence_stream(stream)
old_stream = stream.dup
stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
stream.sync = true
yield
ensure
stream.reopen(old_stream)
old_stream.close
end
end
end
end
@@ -936,4 +936,14 @@ def quietly
end
end
end

def silence_stream(stream)
old_stream = stream.dup
stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
stream.sync = true
yield
ensure
stream.reopen(old_stream)
old_stream.close
end
end
@@ -1,3 +1,9 @@
* Remove deprecated methods at `Kernel`.

`silence_stderr`, `silence_stream`, `capture` and `quietly`.

*Rafael Mendonça França*

* Remove deprecated `active_support/core_ext/big_decimal/yaml_conversions`
file.

@@ -29,34 +29,6 @@ def with_warnings(flag)
$VERBOSE = old_verbose
end

# For compatibility
def silence_stderr #:nodoc:
ActiveSupport::Deprecation.warn(
"`#silence_stderr` is deprecated and will be removed in the next release."
) #not thread-safe
silence_stream(STDERR) { yield }
end

# Deprecated : this method is not thread safe
# Silences any stream for the duration of the block.
#
# silence_stream(STDOUT) do
# puts 'This will never be seen'
# end
#
# puts 'But this will'
#
# This method is not thread-safe.
def silence_stream(stream)
old_stream = stream.dup
stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
stream.sync = true
yield
ensure
stream.reopen(old_stream)
old_stream.close
end

# Blocks and ignores any exception passed as argument if raised within the block.
#
# suppress(ZeroDivisionError) do
@@ -69,56 +41,4 @@ def suppress(*exception_classes)
yield
rescue *exception_classes
end

# Captures the given stream and returns it:
#
# stream = capture(:stdout) { puts 'notice' }
# stream # => "notice\n"
#
# stream = capture(:stderr) { warn 'error' }
# stream # => "error\n"
#
# even for subprocesses:
#
# stream = capture(:stdout) { system('echo notice') }
# stream # => "notice\n"
#
# stream = capture(:stderr) { system('echo error 1>&2') }
# stream # => "error\n"
def capture(stream)
ActiveSupport::Deprecation.warn(
"`#capture(stream)` is deprecated and will be removed in the next release."
) #not thread-safe
stream = stream.to_s
captured_stream = Tempfile.new(stream)
stream_io = eval("$#{stream}")
origin_stream = stream_io.dup
stream_io.reopen(captured_stream)

yield

stream_io.rewind
return captured_stream.read
ensure
captured_stream.close
captured_stream.unlink
stream_io.reopen(origin_stream)
end
alias :silence :capture

# Silences both STDOUT and STDERR, even for subprocesses.
#
# quietly { system 'bundle install' }
#
# This method is not thread-safe.
def quietly
ActiveSupport::Deprecation.warn(
"`#quietly` is deprecated and will be removed in the next release."
) #not thread-safe
silence_stream(STDOUT) do
silence_stream(STDERR) do
yield
end
end
end
end
@@ -15,7 +15,6 @@ def test_silence_warnings_verbose_invariant
assert_equal old_verbose, $VERBOSE
end


def test_enable_warnings
enable_warnings { assert_equal true, $VERBOSE }
assert_equal 1234, enable_warnings { 1234 }
@@ -29,57 +28,11 @@ def test_enable_warnings_verbose_invariant
assert_equal old_verbose, $VERBOSE
end


def test_silence_stream
old_stream_position = STDOUT.tell
silence_stream(STDOUT) { STDOUT.puts 'hello world' }
assert_equal old_stream_position, STDOUT.tell
rescue Errno::ESPIPE
# Skip if we can't stream.tell
end

def test_silence_stream_closes_file_descriptors
stream = StringIO.new
dup_stream = StringIO.new
stream.stubs(:dup).returns(dup_stream)
dup_stream.expects(:close)
silence_stream(stream) { stream.puts 'hello world' }
end

def test_quietly
old_stdout_position, old_stderr_position = STDOUT.tell, STDERR.tell
assert_deprecated do
quietly do
puts 'see me, feel me'
STDERR.puts 'touch me, heal me'
end
end
assert_equal old_stdout_position, STDOUT.tell
assert_equal old_stderr_position, STDERR.tell
rescue Errno::ESPIPE
# Skip if we can't STDERR.tell
end

def test_class_eval
o = Object.new
class << o; @x = 1; end
assert_equal 1, o.class_eval { @x }
end

def test_capture
assert_deprecated do
assert_equal 'STDERR', capture(:stderr) { $stderr.print 'STDERR' }
end
assert_deprecated do
assert_equal 'STDOUT', capture(:stdout) { print 'STDOUT' }
end
assert_deprecated do
assert_equal "STDERR\n", capture(:stderr) { system('echo STDERR 1>&2') }
end
assert_deprecated do
assert_equal "STDOUT\n", capture(:stdout) { system('echo STDOUT') }
end
end
end

class KernelSuppressTest < ActiveSupport::TestCase
@@ -49,4 +49,14 @@ def quietly
end
end
end

def silence_stream(stream)
old_stream = stream.dup
stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
stream.sync = true
yield
ensure
stream.reopen(old_stream)
old_stream.close
end
end
@@ -338,6 +338,16 @@ def quietly
end
end
end

def silence_stream(stream)
old_stream = stream.dup
stream.reopen(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ? 'NUL:' : '/dev/null')
stream.sync = true
yield
ensure
stream.reopen(old_stream)
old_stream.close
end
end

# Create a scope and build a fixture rails app

0 comments on commit 481e49c

Please sign in to comment.
You can’t perform that action at this time.