summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-01 12:54:39 +0000
committersorah <sorah@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-03-01 12:54:39 +0000
commit0a9442983d5194f3975e93c6af6dd025be45ebc2 (patch)
tree55dd8045ffe27e8869a37e8243d055f62eb34450
parentaf3e36158fd820634cfed1ad318c87152690d086 (diff)
* lib/test/unit/parallel.rb: For Windows.
* test/testunit/test_parallel.rb(TestParallelWorker#test_quit_in_test): Fix for above specification change. * test/testunit/test_parallel.rb(TestParallel#spawn_runner): Fix outputing empty line in running test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rw-r--r--lib/test/unit/parallel.rb53
-rw-r--r--test/testunit/test_parallel.rb10
3 files changed, 31 insertions, 41 deletions
diff --git a/ChangeLog b/ChangeLog
index 12796215a1..8f61e5cebe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Tue Mar 1 21:48:22 2011 Shota Fukumori <sorah@tubusu.net>
+
+ * lib/test/unit/parallel.rb: For Windows.
+
+ * test/testunit/test_parallel.rb(TestParallelWorker#test_quit_in_test):
+ Fix for above specification change.
+ * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
+ Fix outputing empty line in running test.
+
Tue Mar 1 20:51:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* test/ruby/test_system.rb (TestSystem#test_system_at):
diff --git a/lib/test/unit/parallel.rb b/lib/test/unit/parallel.rb
index 9296165ebb..c278746544 100644
--- a/lib/test/unit/parallel.rb
+++ b/lib/test/unit/parallel.rb
@@ -12,6 +12,12 @@ module Test
undef _run_suites
undef run
+ def inclement_io orig
+ *rest, io = 500.times.inject([orig.dup]){|ios, | ios << ios.last.dup }
+ rest.each(&:close)
+ io
+ end
+
def _run_suites suites, type
suites.map do |suite|
result = _run_suite(suite, type)
@@ -24,12 +30,10 @@ module Test
i,o = IO.pipe
MiniTest::Unit.output = o
- stdout = STDOUT.dup
-
th = Thread.new do
begin
while buf = (self.verbose ? i.gets : i.read(5))
- stdout.puts "p #{[buf].pack("m").gsub("\n","")}"
+ @stdout.puts "p #{[buf].pack("m").gsub("\n","")}"
end
rescue IOError
rescue Errno::EPIPE
@@ -56,7 +60,7 @@ module Test
result << suite.name
begin
- STDOUT.puts "done #{[Marshal.dump(result)].pack("m").gsub("\n","")}"
+ @stdout.puts "done #{[Marshal.dump(result)].pack("m").gsub("\n","")}"
rescue Errno::EPIPE; end
return result
ensure
@@ -73,28 +77,17 @@ module Test
Signal.trap(:INT,"IGNORE")
@old_loadpath = []
begin
- STDOUT.sync = true
- STDOUT.puts "ready"
- stdin = STDIN.dup
- stdout = STDOUT.dup
- while buf = stdin.gets
+ @stdout = inclement_io(STDOUT)
+ @stdin = inclement_io(STDIN)
+ @stdout.sync = true
+ @stdout.puts "ready"
+ while buf = @stdin.gets
case buf.chomp
when /^loadpath (.+?)$/
@old_loadpath = $:.dup
$:.push(*Marshal.load($1.unpack("m")[0].force_encoding("ASCII-8BIT"))).uniq!
when /^run (.+?) (.+?)$/
- STDOUT.puts "okay"
-
- th = Thread.new do
- while puf = stdin.gets
- if puf.chomp == "quit"
- begin
- stdout.puts "bye"
- rescue Errno::EPIPE; end
- exit
- end
- end
- end
+ @stdout.puts "okay"
@options = @opts.dup
suites = MiniTest::Unit::TestCase.test_suites
@@ -102,21 +95,16 @@ module Test
begin
require $1
rescue LoadError
- th.kill
- STDOUT.puts "after #{[Marshal.dump([$1, $!])].pack("m").gsub("\n","")}"
- STDOUT.puts "ready"
+ @stdout.puts "after #{[Marshal.dump([$1, $!])].pack("m").gsub("\n","")}"
+ @stdout.puts "ready"
next
end
_run_suites MiniTest::Unit::TestCase.test_suites-suites, $2.to_sym
- STDIN.reopen(stdin)
- STDOUT.reopen(stdout)
-
- th.kill
- STDOUT.puts "ready"
+ @stdout.puts "ready"
when /^quit$/
begin
- STDOUT.puts "bye"
+ @stdout.puts "bye"
rescue Errno::EPIPE; end
exit
end
@@ -124,11 +112,12 @@ module Test
rescue Errno::EPIPE
rescue Exception => e
begin
- STDOUT.puts "bye #{[Marshal.dump(e)].pack("m").gsub("\n","")}"
+ @stdout.puts "bye #{[Marshal.dump(e)].pack("m").gsub("\n","")}"
rescue Errno::EPIPE;end
exit
ensure
- stdin.close
+ @stdin.close
+ @stdout.close
end
end
end
diff --git a/test/testunit/test_parallel.rb b/test/testunit/test_parallel.rb
index 8f921e01d1..cd9587cee5 100644
--- a/test/testunit/test_parallel.rb
+++ b/test/testunit/test_parallel.rb
@@ -117,14 +117,6 @@ module TestParallel
assert_match(/^bye$/m,@worker_out.read)
end
end
-
- def test_quit_in_test
- timeout(10) do
- @worker_in.puts "run #{TESTS}/test_third.rb ptest"
- @worker_in.puts "quit"
- assert_match(/^ready\nokay\nbye/m,@worker_out.read)
- end
- end
end
class TestParallel < Test::Unit::TestCase
@@ -137,7 +129,7 @@ module TestParallel
def spawn_runner(*opt_args)
@test_out, o = IO.pipe
@test_pid = spawn(*@options[:ruby], TESTS+"/runner.rb",
- "-j","t2","-x","sleeping",*opt_args, out: o)
+ "-j","t2","-x","sleeping",*opt_args, out: o, err: :out)
o.close
end