2017-08-03 05:39:25 -04:00
|
|
|
#!/usr/bin/env ruby
|
|
|
|
require 'open3'
|
|
|
|
require 'tempfile'
|
|
|
|
require 'test/unit'
|
|
|
|
|
|
|
|
class TestLLDBInit < Test::Unit::TestCase
|
|
|
|
def assert_rp(expr, pattern, message=nil)
|
|
|
|
Tempfile.create('lldb') do |tf|
|
|
|
|
tf.puts <<eom
|
|
|
|
target create ./miniruby
|
|
|
|
command script import -r misc/lldb_cruby.py
|
2019-04-02 17:13:22 -04:00
|
|
|
b rb_inspect
|
2017-08-03 05:39:25 -04:00
|
|
|
run -e'p #{expr}'
|
|
|
|
rp obj
|
|
|
|
eom
|
|
|
|
tf.flush
|
|
|
|
o, s = Open3.capture2('lldb', '-b', '-s', tf.path)
|
|
|
|
assert_true s.success?, message
|
|
|
|
assert_match /^\(lldb\) rp obj\n#{pattern}/, o, message
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_rp_object
|
|
|
|
assert_rp 'Object.new', 'T_OBJECT'
|
|
|
|
end
|
|
|
|
|
2019-04-02 17:13:22 -04:00
|
|
|
def test_rp_regex
|
|
|
|
assert_rp '/foo/', '[(]Regex'
|
|
|
|
end
|
|
|
|
|
2017-08-03 05:39:25 -04:00
|
|
|
def test_rp_symbol
|
2019-04-02 17:13:22 -04:00
|
|
|
assert_rp ':abcde', /T_SYMBOL: \(\h+\)/
|
2017-08-03 05:39:25 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_rp_string
|
|
|
|
assert_rp '"abc"', /\(char \[\d+\]\) ary = "abc"/
|
|
|
|
assert_rp "\"\u3042\"", /\(char \[\d+\]\) ary = "\u3042"/
|
|
|
|
assert_rp '"' + "\u3042"*10 + '"', /\(RString::\(anonymous struct\)\) heap = \{/
|
|
|
|
end
|
|
|
|
end
|