https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2011-08-01T19:00:33Z
Ruby Issue Tracking System
Ruby master - Bug #5132: test_parallel.rb fail when it run before 'make install'
https://redmine.ruby-lang.org/issues/5132?journal_id=19921
2011-08-01T19:00:33Z
znz (Kazuhiro NISHIYAMA)
<ul><li><strong>Assignee</strong> set to <i>sorah (Sorah Fukumori)</i></li></ul>
Ruby master - Bug #5132: test_parallel.rb fail when it run before 'make install'
https://redmine.ruby-lang.org/issues/5132?journal_id=19923
2011-08-01T19:21:49Z
ayumin (Ayumu AIZAWA)
ayumu.aizawa@gmail.com
<ul></ul><p>=begin<br>
すみません、大事な情報が漏れていました。<br>
Makefileを作る際に、./configure --prefix=/home/ayumin/ruby のようにインストール先を指定しています。</p>
<p>エラーのログを消すために以下のようなパッチをあてて実行すると</p>
<p>$ git diff<br>
diff --git a/lib/test/unit.rb b/lib/test/unit.rb<br>
index 09708d1..33301f9 100644<br>
--- a/lib/test/unit.rb<br>
+++ b/lib/test/unit.rb<br>
@@ -493,35 +493,38 @@ module Test<br>
end<br>
end<br>
end</p>
<ul>
<li>
<pre><code> @workers.each do |worker|
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> if @workers
</code></pre>
</li>
<li>
<pre><code> @workers.each do |worker|
</code></pre>
</li>
<li>
<pre><code> begin
</code></pre>
</li>
<li>
<pre><code> timeout(1) do
</code></pre>
</li>
<li>
<pre><code> worker.puts "quit"
</code></pre>
</li>
<li>
<pre><code> end
</code></pre>
</li>
<li>
<pre><code> rescue Errno::EPIPE
</code></pre>
</li>
<li>
<pre><code> rescue Timeout::Error
</code></pre>
</li>
<li>
<pre><code> end
</code></pre>
</li>
<li>
<pre><code> worker.close
</code></pre>
</li>
<li>
<pre><code> end
begin
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> timeout(1) do
</code></pre>
</li>
<li>
<pre><code> worker.puts "quit"
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> timeout(0.2*@workers.size) do
</code></pre>
</li>
<li>
<pre><code> Process.waitall
end
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> rescue Errno::EPIPE
rescue Timeout::Error
</code></pre>
</li>
<li>
<pre><code> end
</code></pre>
</li>
<li>
<pre><code> worker.close
</code></pre>
</li>
<li>
<pre><code> end
</code></pre>
</li>
<li>
<pre><code> begin
</code></pre>
</li>
<li>
<pre><code> timeout(0.2*@workers.size) do
</code></pre>
</li>
<li>
<pre><code> Process.waitall
</code></pre>
</li>
<li>
<pre><code> end
</code></pre>
</li>
<li>
<pre><code> rescue Timeout::Error
</code></pre>
</li>
<li>
<pre><code> @workers.each do |worker|
</code></pre>
</li>
<li>
<pre><code> begin
</code></pre>
</li>
<li>
<pre><code> Process.kill(:KILL,worker.pid)
</code></pre>
</li>
<li>
<pre><code> rescue Errno::ESRCH; end
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> @workers.each do |worker|
</code></pre>
</li>
<li>
<pre><code> begin
</code></pre>
</li>
<li>
<pre><code> Process.kill(:KILL,worker.pid)
</code></pre>
</li>
<li>
<pre><code> rescue Errno::ESRCH; end
</code></pre>
</li>
<li>
<pre><code> end
end
end
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> if @interrupt || @options[:no_retry] || @need_quit
</code></pre>
</li>
<li>
<pre><code> rep.each do |r|
</code></pre>
</li>
<li>
<pre><code> report.push(*r[:report])
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> unless rep.empty?
</code></pre>
</li>
<li>
<pre><code> rep.each do |r|
</code></pre>
</li>
<li>
<pre><code> report.push(*r[:report])
</code></pre>
</li>
<li>
<pre><code> end
</code></pre>
</li>
<li>
<pre><code> @errors += rep.map{|x| x[:result][0] }.inject(:+)
</code></pre>
</li>
<li>
<pre><code> @failures += rep.map{|x| x[:result][1] }.inject(:+)
</code></pre>
</li>
<li>
<pre><code> @skips += rep.map{|x| x[:result][2] }.inject(:+)
end
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> @errors += rep.map{|x| x[:result][0] }.inject(:+)
</code></pre>
</li>
<li>
<pre><code> @failures += rep.map{|x| x[:result][1] }.inject(:+)
</code></pre>
</li>
<li>
<pre><code> @skips += rep.map{|x| x[:result][2] }.inject(:+)
else
puts ""
puts "Retrying..."
</code></pre>
</li>
</ul>
<p>以下のように出力されるようになり、(({lib/test/unit.rb:240})) の (({IO.popen})) の呼び出しの時に(({ miniruby})) ではなく インストール先のrubyを参照しようとしているように見えます。</p>
<p>$ make test-all TESTS='-v test/testunit/test_parallel.rb'<br>
./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" -v test/testunit/test_parallel.rb<br>
Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" -v</p>
<a name="Running-tests"></a>
<h1 >Running tests:<a href="#Running-tests" class="wiki-anchor">¶</a></h1>
<p>TestParallel::TestParallel#test_ignore_jzero = 0.05 s = .<br>
TestParallel::TestParallel#test_jobs_status = 0.05 s = F<br>
TestParallel::TestParallel#test_no_retry_option = 0.05 s = F<br>
TestParallel::TestParallel#test_should_retry_failed_on_workers = 0.05 s = .<br>
TestParallel::TestParallel#test_should_run_all_without_any_leaks = 0.05 s = F<br>
TestParallel::TestParallelWorker#test_accept_run_command_multiple_times = 0.05 s = .<br>
TestParallel::TestParallelWorker#test_done = 0.06 s = .<br>
TestParallel::TestParallelWorker#test_p = 0.05 s = .<br>
TestParallel::TestParallelWorker#test_quit = 0.04 s = .<br>
TestParallel::TestParallelWorker#test_run = 0.05 s = .<br>
TestParallel::TestParallelWorker#test_run_multiple_testcase_in_one_file = 0.05 s = .</p>
<p>Finished tests in 0.543272s, 20.2477 tests/s, 73.6279 assertions/s.</p>
<ol>
<li>
<p>Failure:<br>
test_jobs_status(TestParallel::TestParallel) [/home/ayumin/github/ruby/test/testunit/test_parallel.rb:174]:<br>
Expected /\d+=ptest_(first|second|third|forth) */ to match "Run options: -j t1 --jobs-status\n\n# Running tests:\n\n\nRetrying...\n\n\n\n/home/ayumin/github/ruby/lib/test/unit.rb:240:in <code>popen': No such file or directory - /home/ayumin/tmp/ruby/bin/ruby (Errno::ENOENT)\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:240:in </code>launch'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:405:in <code>block in _run_parallel'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in </code>times'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in <code>each'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in </code>map'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in <code>_run_parallel'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:564:in </code>_run_suites'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:746:in <code>_run_anything'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:909:in </code>run_tests'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:896:in <code>block in _run'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:895:in </code>each'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:895:in <code>_run'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:884:in </code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:21:in <code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:633:in </code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:637:in <code>run'\n\tfrom /home/ayumin/github/ruby/test/testunit/tests_for_parallel/runner.rb:10:in </code>'\n".</p>
</li>
<li>
<p>Failure:<br>
test_no_retry_option(TestParallel::TestParallel) [/home/ayumin/github/ruby/test/testunit/test_parallel.rb:168]:<br>
Expected /^ +\d+) Failure:\ntest_fail_at_worker(TestD)/ to match "Run options: -j t1 --no-retry\n\n# Running tests:\n\n\n\n/home/ayumin/github/ruby/lib/test/unit.rb:240:in <code>popen': No such file or directory - /home/ayumin/tmp/ruby/bin/ruby (Errno::ENOENT)\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:240:in </code>launch'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:405:in <code>block in _run_parallel'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in </code>times'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in <code>each'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in </code>map'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in <code>_run_parallel'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:564:in </code>_run_suites'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:746:in <code>_run_anything'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:909:in </code>run_tests'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:896:in <code>block in _run'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:895:in </code>each'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:895:in <code>_run'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:884:in </code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:21:in <code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:633:in </code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:637:in <code>run'\n\tfrom /home/ayumin/github/ruby/test/testunit/tests_for_parallel/runner.rb:10:in </code>'\n".</p>
</li>
<li>
<p>Failure:<br>
test_should_run_all_without_any_leaks(TestParallel::TestParallel) [/home/ayumin/github/ruby/test/testunit/test_parallel.rb:155]:<br>
Expected /^[SF.]{7}$/ to match "Run options: -j t1\n\n# Running tests:\n\n\nRetrying...\n\n\n\n/home/ayumin/github/ruby/lib/test/unit.rb:240:in <code>popen': No such file or directory - /home/ayumin/tmp/ruby/bin/ruby (Errno::ENOENT)\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:240:in </code>launch'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:405:in <code>block in _run_parallel'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in </code>times'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in <code>each'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in </code>map'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:404:in <code>_run_parallel'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:564:in </code>_run_suites'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:746:in <code>_run_anything'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:909:in </code>run_tests'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:896:in <code>block in _run'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:895:in </code>each'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:895:in <code>_run'\n\tfrom /home/ayumin/github/ruby/lib/minitest/unit.rb:884:in </code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:21:in <code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:633:in </code>run'\n\tfrom /home/ayumin/github/ruby/lib/test/unit.rb:637:in <code>run'\n\tfrom /home/ayumin/github/ruby/test/testunit/tests_for_parallel/runner.rb:10:in </code>'\n".</p>
</li>
</ol>
<p>11 tests, 40 assertions, 3 failures, 0 errors, 0 skips<br>
make: *** [yes-test-all] エラー 3</p>
<p>=end</p>
Ruby master - Bug #5132: test_parallel.rb fail when it run before 'make install'
https://redmine.ruby-lang.org/issues/5132?journal_id=19932
2011-08-01T23:40:41Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Assigned</i></li><li><strong>Target version</strong> changed from <i>2.0.0</i> to <i>1.9.3</i></li></ul><p>Jeremy Evans も同じ話を <a href="/issues/5097">[ruby-core:38572]</a> で指摘していますね。<br>
というわけでそらさんよろしく。</p>
Ruby master - Bug #5132: test_parallel.rb fail when it run before 'make install'
https://redmine.ruby-lang.org/issues/5132?journal_id=19984
2011-08-02T20:18:59Z
sorah (Sorah Fukumori)
her@sorah.jp
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>This issue was solved with changeset r32812.<br>
Ayumu, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<hr>
<ul>
<li>test/testunit/test_parallel.rb: pass "--ruby" option to<br>
test/testunit/tests_for_parallel/runner.rb. [Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: test_parallel.rb fail when it run before 'make install' (Closed)" href="https://redmine.ruby-lang.org/issues/5132">#5132</a>] <a href="/issues/5132">[ruby-dev:44303]</a></li>
</ul>