~ubuntu-branches/ubuntu/quantal/ruby1.9.1/quantal

« back to all changes in this revision

Viewing changes to test/ruby/test_beginendblock.rb

  • Committer: Bazaar Package Importer
  • Author(s): Lucas Nussbaum
  • Date: 2010-07-31 17:08:39 UTC
  • mfrom: (1.1.4 upstream) (8.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20100731170839-j034dmpdqt1cc4p6
Tags: 1.9.2~svn28788-1
* New release based on upstream snapshot from the 1.9.2 branch,
  after 1.9.2 RC2. That branch is (supposed to be) binary-compatible
  with the 1.9.1 branch.
  + Builds fine on i386. Closes: #580852.
* Upgrade to Standards-Version: 3.9.1. No changes needed.
* Updated generated incs.
* Patches that still need work:
  + Unclear status, need more investigation:
   090729_fix_Makefile_deps.dpatch
   090803_exclude_rdoc.dpatch
   203_adjust_base_of_search_path.dpatch
   902_define_YAML_in_yaml_stringio.rb.dpatch
   919_common.mk_tweaks.dpatch
   931_libruby_suffix.dpatch
   940_test_thread_mutex_sync_shorter.dpatch
  + Maybe not needed anymore, keeping but not applying.
   102_skip_test_copy_stream.dpatch (test doesn't block anymore?)
   104_skip_btest_io.dpatch (test doesn't block anymore?)
   201_gem_prelude.dpatch (we don't use that rubygems anyway?)
   202_gem_default_dir.dpatch (we don't use that rubygems anyway?)
   940_test_file_exhaustive_fails_as_root.dpatch
   940_test_priority_fails.dpatch
   100518_load_libc_libm.dpatch
* Add disable-tests.diff: disable some tests that cause failures on FreeBSD.
  Closes: #590002, #543805, #542927.
* However, many new failures on FreeBSD. Since that version is still an
  improvement, add the check that makes test suite failures non-fatal on
  FreeBSD again. That still needs to be investigated.
* Re-add 903_skip_base_ruby_check.dpatch
* Add build-dependency on ruby1.8 and drop all pre-generated files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
require 'test/unit'
2
 
require 'rbconfig'
3
2
require 'tempfile'
 
3
require 'timeout'
4
4
require_relative 'envutil'
5
5
 
6
6
class TestBeginEndBlock < Test::Unit::TestCase
55
55
    errout = Tempfile.new(self.class.name)
56
56
 
57
57
    launcher << <<EOF
 
58
# -*- coding: #{ruby.encoding.name} -*-
58
59
errout = ARGV.shift
59
60
STDERR.reopen(File.open(errout, "w"))
60
61
STDERR.sync = true
81
82
                     '-e', 'raise %[SomethingElse]']) {|f|
82
83
      f.read
83
84
    }
84
 
    assert_match /SomethingBad/, out, "[ruby-core:9675]"
85
 
    assert_match /SomethingElse/, out, "[ruby-core:9675]"
 
85
    assert_match(/SomethingBad/, out, "[ruby-core:9675]")
 
86
    assert_match(/SomethingElse/, out, "[ruby-core:9675]")
86
87
  end
87
88
 
88
89
  def test_should_propagate_exit_code
92
93
    assert_nil $?.termsig
93
94
  end
94
95
 
95
 
  if Config::CONFIG['arch'] != 'hppa-linux'
96
96
  def test_should_propagate_signaled
97
97
    ruby = EnvUtil.rubybin
98
98
    out = IO.popen(
99
99
      [ruby,
100
100
       '-e', 'STDERR.reopen(STDOUT)',
101
 
       '-e', 'at_exit{Process.kill(:INT, $$); loop{}}']) {|f|
102
 
      f.read
 
101
       '-e', 'at_exit{Process.kill(:INT, $$); sleep 5 }']) {|f|
 
102
      timeout(10) {
 
103
        f.read
 
104
      }
103
105
    }
104
 
    assert_match /Interrupt$/, out
 
106
    assert_match(/Interrupt$/, out)
105
107
    Process.kill(0, 0) rescue return # check if signal works
106
108
    assert_nil $?.exitstatus
107
109
    assert_equal Signal.list["INT"], $?.termsig
108
110
  end
 
111
 
 
112
  def test_endblock_raise
 
113
    ruby = EnvUtil.rubybin
 
114
    out = IO.popen(
 
115
      [ruby,
 
116
       '-e', 'class C; def write(x); puts x; STDOUT.flush; sleep 0.01; end; end',
 
117
       '-e', '$stderr = C.new',
 
118
       '-e', 'END {raise "e1"}; END {puts "e2"}',
 
119
       '-e', 'END {raise "e3"}; END {puts "e4"}',
 
120
       '-e', 'END {raise "e5"}; END {puts "e6"}']) {|f|
 
121
      Thread.new {sleep 5; Process.kill :KILL, f.pid}
 
122
      f.read
 
123
    }
 
124
    assert_match(/e1/, out)
 
125
    assert_match(/e6/, out)
109
126
  end
110
127
end