mirror of
https://github.com/rubyjs/therubyrhino
synced 2023-03-27 23:21:34 -04:00
align spec (backtrace generation) with latest JRuby 1.7.12
This commit is contained in:
parent
a2e907ae25
commit
cccf922f03
1 changed files with 19 additions and 19 deletions
|
@ -1,40 +1,40 @@
|
||||||
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
||||||
|
|
||||||
describe Rhino::JSError do
|
describe Rhino::JSError do
|
||||||
|
|
||||||
it "works as a StandardError with a message being passed" do
|
it "works as a StandardError with a message being passed" do
|
||||||
js_error = Rhino::JSError.new 'an error message'
|
js_error = Rhino::JSError.new 'an error message'
|
||||||
lambda { js_error.to_s && js_error.inspect }.should_not raise_error
|
lambda { js_error.to_s && js_error.inspect }.should_not raise_error
|
||||||
|
|
||||||
js_error.cause.should be nil
|
js_error.cause.should be nil
|
||||||
js_error.message.should == 'an error message'
|
js_error.message.should == 'an error message'
|
||||||
js_error.javascript_backtrace.should be nil
|
js_error.javascript_backtrace.should be nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it "might wrap a RhinoException wrapped in a NativeException like error" do
|
it "might wrap a RhinoException wrapped in a NativeException like error" do
|
||||||
# JRuby's NativeException.new(rhino_e) does not work as it is
|
# JRuby's NativeException.new(rhino_e) does not work as it is
|
||||||
# intended to handle Java exceptions ... no new on the Ruby side
|
# intended to handle Java exceptions ... no new on the Ruby side
|
||||||
native_error_class = Class.new(RuntimeError) do
|
native_error_class = Class.new(RuntimeError) do
|
||||||
|
|
||||||
def initialize(cause)
|
def initialize(cause)
|
||||||
@cause = cause
|
@cause = cause
|
||||||
end
|
end
|
||||||
|
|
||||||
def cause
|
def cause
|
||||||
@cause
|
@cause
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
rhino_e = Rhino::JS::JavaScriptException.new("42".to_java)
|
rhino_e = Rhino::JS::JavaScriptException.new("42".to_java)
|
||||||
js_error = Rhino::JSError.new native_error_class.new(rhino_e)
|
js_error = Rhino::JSError.new native_error_class.new(rhino_e)
|
||||||
lambda { js_error.to_s && js_error.inspect }.should_not raise_error
|
lambda { js_error.to_s && js_error.inspect }.should_not raise_error
|
||||||
|
|
||||||
js_error.cause.should be rhino_e
|
js_error.cause.should be rhino_e
|
||||||
js_error.message.should == '42'
|
js_error.message.should == '42'
|
||||||
js_error.javascript_backtrace.should_not be nil
|
js_error.javascript_backtrace.should_not be nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it "keeps the thrown javascript object value" do
|
it "keeps the thrown javascript object value" do
|
||||||
begin
|
begin
|
||||||
Rhino::Context.eval "throw { foo: 'bar' }"
|
Rhino::Context.eval "throw { foo: 'bar' }"
|
||||||
|
@ -73,17 +73,17 @@ describe Rhino::JSError do
|
||||||
fail "expected to rescue"
|
fail "expected to rescue"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "has a correct javascript backtrace" do
|
it "has a correct javascript backtrace" do
|
||||||
begin
|
begin
|
||||||
Rhino::Context.eval "throw 42"
|
Rhino::Context.eval "throw 42"
|
||||||
rescue => e
|
rescue => e
|
||||||
|
# [ "at <eval>:1", "at org/mozilla/javascript/gen/<eval>:1" ]
|
||||||
e.javascript_backtrace.should be_a Enumerable
|
e.javascript_backtrace.should be_a Enumerable
|
||||||
e.javascript_backtrace.size.should == 1
|
e.javascript_backtrace.size.should >= 1
|
||||||
e.javascript_backtrace[0].should == "at <eval>:1"
|
e.javascript_backtrace[0].should == "at <eval>:1"
|
||||||
|
|
||||||
e.javascript_backtrace(true).should be_a Enumerable
|
e.javascript_backtrace(true).should be_a Enumerable
|
||||||
e.javascript_backtrace(true).size.should == 1
|
e.javascript_backtrace(true).size.should >= 1
|
||||||
element = e.javascript_backtrace(true)[0]
|
element = e.javascript_backtrace(true)[0]
|
||||||
element.file_name.should == '<eval>'
|
element.file_name.should == '<eval>'
|
||||||
element.function_name.should be nil
|
element.function_name.should be nil
|
||||||
|
@ -97,14 +97,14 @@ describe Rhino::JSError do
|
||||||
begin
|
begin
|
||||||
Rhino::Context.eval "function fortyTwo() { throw 42 }\n fortyTwo()"
|
Rhino::Context.eval "function fortyTwo() { throw 42 }\n fortyTwo()"
|
||||||
rescue => e
|
rescue => e
|
||||||
e.javascript_backtrace.size.should == 2
|
e.javascript_backtrace.size.should >= 2
|
||||||
e.javascript_backtrace[0].should == "at <eval>:1 (fortyTwo)"
|
e.javascript_backtrace[0].should == "at <eval>:1 (fortyTwo)"
|
||||||
e.javascript_backtrace[1].should == "at <eval>:2"
|
expect( e.javascript_backtrace.find { |trace| trace == "at <eval>:2" } ).to_not be nil
|
||||||
else
|
else
|
||||||
fail "expected to rescue"
|
fail "expected to rescue"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "backtrace starts with the javascript part" do
|
it "backtrace starts with the javascript part" do
|
||||||
begin
|
begin
|
||||||
Rhino::Context.eval "throw 42"
|
Rhino::Context.eval "throw 42"
|
||||||
|
@ -149,7 +149,7 @@ describe Rhino::JSError do
|
||||||
fail "expected to rescue"
|
fail "expected to rescue"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "raises correct error from function#apply" do
|
it "raises correct error from function#apply" do
|
||||||
begin
|
begin
|
||||||
context = Rhino::Context.new
|
context = Rhino::Context.new
|
||||||
|
@ -166,7 +166,7 @@ describe Rhino::JSError do
|
||||||
it "prints info about nested (ruby) error" do
|
it "prints info about nested (ruby) error" do
|
||||||
context = Rhino::Context.new
|
context = Rhino::Context.new
|
||||||
klass = Class.new do
|
klass = Class.new do
|
||||||
def hello(arg = 42)
|
def hello(arg = 42)
|
||||||
raise RuntimeError, 'hello' if arg != 42
|
raise RuntimeError, 'hello' if arg != 42
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -189,5 +189,5 @@ describe Rhino::JSError do
|
||||||
# from at hi (<eval>:1:28)
|
# from at hi (<eval>:1:28)
|
||||||
# from (irb):9
|
# from (irb):9
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
Loading…
Reference in a new issue