lib/minitest/silence_plugin.rb in minitest-silence-0.2.0 vs lib/minitest/silence_plugin.rb in minitest-silence-0.2.1
- old
+ new
@@ -13,32 +13,27 @@
module ResultOutputPatch
attr_accessor :output
end
module RunOneMethodPatch
- attr_reader :original_stdin, :original_stdout, :original_stderr
-
- def __run(*)
- @original_stdin = $stdin.dup
- @original_stdout = $stdout.dup
- @original_stderr = $stderr.dup
- super
- end
-
def run_one_method(klass, method_name)
+ @original_stdin ||= $stdin.dup
+ @original_stdout ||= $stdout.dup
+ @original_stderr ||= $stderr.dup
+
output_reader, output_writer = IO.pipe
output_thread = Thread.new { output_reader.read }
result = begin
$stdout.reopen(output_writer)
$stderr.reopen(output_writer)
$stdin.reopen(File::NULL)
super
ensure
- $stdout.reopen(original_stdout)
- $stderr.reopen(original_stderr)
- $stdin.reopen(original_stdin)
+ $stdout.reopen(@original_stdout)
+ $stderr.reopen(@original_stderr)
+ $stdin.reopen(@original_stdin)
output_writer.close
end
result.output = output_thread.value
result