mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
137c547c3e
message attributes during parse failure. * ext/psych/parser.c: Update parser to raise exception with correct values. * test/psych/test_exception.rb: corresponding tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
54 lines
1 KiB
Ruby
54 lines
1 KiB
Ruby
require 'psych/helper'
|
|
|
|
module Psych
|
|
class TestException < TestCase
|
|
class Wups < Exception
|
|
attr_reader :foo, :bar
|
|
def initialize *args
|
|
super
|
|
@foo = 1
|
|
@bar = 2
|
|
end
|
|
end
|
|
|
|
def setup
|
|
super
|
|
@wups = Wups.new
|
|
end
|
|
|
|
def test_attributes
|
|
e = assert_raises(Psych::SyntaxError) {
|
|
Psych.load '--- `foo'
|
|
}
|
|
|
|
assert_equal '<unknown>', e.file
|
|
assert_equal 1, e.line
|
|
assert_equal 5, e.column
|
|
# FIXME: offset isn't being set correctly by libyaml
|
|
# assert_equal 5, e.offset
|
|
|
|
assert e.problem
|
|
assert e.context
|
|
end
|
|
|
|
def test_convert
|
|
w = Psych.load(Psych.dump(@wups))
|
|
assert_equal @wups, w
|
|
assert_equal 1, w.foo
|
|
assert_equal 2, w.bar
|
|
end
|
|
|
|
def test_to_yaml_properties
|
|
class << @wups
|
|
def to_yaml_properties
|
|
[:@foo]
|
|
end
|
|
end
|
|
|
|
w = Psych.load(Psych.dump(@wups))
|
|
assert_equal @wups, w
|
|
assert_equal 1, w.foo
|
|
assert_nil w.bar
|
|
end
|
|
end
|
|
end
|