diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-02-05 18:28:51 -0200 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-02-05 18:28:51 -0200 |
commit | 6953f16efa364793b29686db032d32673134f4fd (patch) | |
tree | 45d7a4858bdba4630f6c1d1fc950b11c4f4cdd6a /activesupport/lib/active_support | |
parent | 35e2255b7afd31f78d7d1978f3dff91f3dfed719 (diff) | |
parent | 166ce95f65cd6b54e23d43e0e61875d6c3a38047 (diff) | |
download | rails-6953f16efa364793b29686db032d32673134f4fd.tar.gz rails-6953f16efa364793b29686db032d32673134f4fd.tar.bz2 rails-6953f16efa364793b29686db032d32673134f4fd.zip |
Merge pull request #18526 from vipulnsward/add-silence-stream
Extracted silence_stream method to new module in activesupport/testing
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r-- | activesupport/lib/active_support/testing/stream.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/testing/stream.rb b/activesupport/lib/active_support/testing/stream.rb new file mode 100644 index 0000000000..895192ad05 --- /dev/null +++ b/activesupport/lib/active_support/testing/stream.rb @@ -0,0 +1,42 @@ +module ActiveSupport + module Testing + module Stream #:nodoc: + private + + def silence_stream(stream) + old_stream = stream.dup + stream.reopen(IO::NULL) + stream.sync = true + yield + ensure + stream.reopen(old_stream) + old_stream.close + end + + def quietly + silence_stream(STDOUT) do + silence_stream(STDERR) do + yield + end + end + end + + def capture(stream) + 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 + end + end +end |