File: test_globals.rb

package info (click to toggle)
jruby 1.5.1-1
  • links: PTS, VCS
  • area: non-free
  • in suites: squeeze
  • size: 46,252 kB
  • ctags: 72,039
  • sloc: ruby: 398,155; java: 169,482; yacc: 3,782; xml: 2,469; ansic: 415; sh: 279; makefile: 78; tcl: 40
file content (135 lines) | stat: -rw-r--r-- 2,754 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
require 'test/unit'

class TestGlobals < Test::Unit::TestCase
  def check_global_variable
    assert_equal "a global variable.", $output
  end
  def test_global_scope
    $output = "a global variable."
    check_global_variable
  end

  def test_global_alias
    $bar = 5
    alias $foo $bar
    assert_equal 5, $foo

    $bar = 10
    assert_equal 10, $foo

    $foo = 5
    assert_equal 5, $bar
  end

  # Make sure $@ == nil if $! is not nil and $!.backtrace is an array
  class MyWobblyError < StandardError
    def initialize(backtrace) ; @backtrace = backtrace ; end
    def backtrace ; @backtrace ; end
  end

  def test_global_error_vars
    begin
      raise MyWobblyError.new(nil)
    rescue
      assert_equal nil, $@
    end

    begin
      raise MyWobblyError.new("abc")
    rescue
      assert_equal nil, $@
    end

    #inconsistent with set_backtrace but it's what MRI does
    begin
      raise MyWobblyError.new(["abc", 123])
    rescue
      assert $@ != nil
    end

    begin
      raise MyWobblyError.new(["abc", "123"])
    rescue
      assert $@ != nil
    end

    begin
      raise MyWobblyError.new([])
    rescue
      assert $@ != nil
    end
  end
  
  def test_program_name
    assert_equal $0, $PROGRAM_NAME
    old, $0 = $0, "abc"
    $0 = old
  end
  
  def test_locally_scoped_globals
    assert_nothing_raised { print }
    assert_nothing_raised { $_.to_s }
    assert_nothing_raised { $~.to_s }
    $_ = 'one'
    'one' =~ /one/
    second_call
    assert_equal('one', $_)
    assert_equal('one', $~[0])
  end
  
  def second_call
    $_ = 'two'
    'two' =~ /two/
  end

  def test_aliases_backref_globals
    alias $POSTMATCH $'
    alias $PREMATCH $`
    alias $MATCH $&
    alias $LAST_MATCH_INFO $~

    /^is/ =~ "isFubared"

    assert_not_nil($LAST_MATCH_INFO)
    assert_equal($~, $LAST_MATCH_INFO)
	assert_equal "Fubared", $'
    assert_equal $', $POSTMATCH
    assert_equal "", $`
    assert_equal $`, $PREMATCH
    assert_equal "is", $&
    assert_equal $&, $MATCH
  end
  
  def test_english_ignore_case
    alias $IGNORECASE $=
    assert_not_nil($IGNORECASE)
    assert_equal($=, $IGNORECASE)
    assert_nil("fOo" =~ /foo/)
    assert("fOo" =~ /foo/i)
    $= = true
    assert("fOo" =~ /foo/i)
    $= = false
  end

  # JRUBY-1396, $? was returning Java null instead of nil when uninitialized
  def test_last_exit_status_as_param
    assert_nothing_raised {'foo' == $?}
  end
  def test_that_last_exit_status_is_nil
    assert_nil $?
  end
  
  def test_backref_set_checks_for_matchdata
    assert_raises(TypeError){$~ = 1}
  end
  
  def test_backref_assignment
    "ac" =~ /a/
    m = $~
    "ab" =~ /a/

    assert_equal(m.post_match, "c")
    $~ = m
    assert_equal($~.post_match, "c")
  end
end