aboutsummaryrefslogtreecommitdiffstats
path: root/test/mkmf/base.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/mkmf/base.rb')
-rw-r--r--test/mkmf/base.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/mkmf/base.rb b/test/mkmf/base.rb
index 49553cf10f..d4cf80376f 100644
--- a/test/mkmf/base.rb
+++ b/test/mkmf/base.rb
@@ -13,6 +13,42 @@ class TestMkmf < Test::Unit::TestCase
class << MKMFLOG
alias to_s call
end
+
+ class Capture
+ def initialize
+ @buffer = ""
+ @filter = nil
+ @out = true
+ end
+ def clear
+ @buffer.clear
+ end
+ def flush
+ STDOUT.print @filter ? @filter.call(@buffer) : @buffer
+ clear
+ end
+ def reopen(io)
+ case io
+ when Capture
+ initialize_copy(io)
+ when File
+ @out = false
+ when IO
+ @out = true
+ else
+ @out = false
+ end
+ end
+ def filter(&block)
+ @filter = block
+ end
+ def write(s)
+ @buffer << s if @out
+ end
+ end
+
+ attr_reader :stdout
+
def mkmflog(msg)
log = proc {MKMFLOG[] << msg}
class << log
@@ -25,6 +61,7 @@ class TestMkmf < Test::Unit::TestCase
@tmpdir = Dir.mktmpdir
@curdir = Dir.pwd
@mkmfobj = Object.new
+ @stdout = Capture.new
Dir.chdir(@tmpdir)
@quiet, Logging.quiet = Logging.quiet, true
end
@@ -37,7 +74,11 @@ class TestMkmf < Test::Unit::TestCase
end
def mkmf(*args, &block)
+ @stdout.clear
+ stdout, $stdout = $stdout, @stdout
@mkmfobj.instance_eval(*args, &block)
+ ensure
+ $stdout = stdout
end
def config_value(name)