mirror of
https://github.com/rubyjs/therubyracer
synced 2023-03-27 23:21:42 -04:00
![Georgy Angelov](/assets/img/avatar_default.png)
This fixes segmentation fault in the tests as extending the examples in a before block with override of `#instance_eval` seems to not work. Also, the context wrap is now opt-in with a helper method, instead of opt-out and relying on `#described_class` (which has slightly different behavior in RSpec 3). Tested on Ruby 2.1.5 and RSpec 2.99.2.
36 lines
832 B
Ruby
36 lines
832 B
Ruby
require 'spec_helper'
|
|
|
|
describe V8::C::Locker do
|
|
it "can lock and unlock the VM" do
|
|
V8::C::Locker::IsLocked().should be_false
|
|
V8::C::Locker() do
|
|
V8::C::Locker::IsLocked().should be_true
|
|
V8::C::Unlocker() do
|
|
V8::C::Locker::IsLocked().should be_false
|
|
end
|
|
end
|
|
V8::C::Locker::IsLocked().should be_false
|
|
end
|
|
|
|
it "properly unlocks if an exception is thrown inside a lock block" do
|
|
begin
|
|
V8::C::Locker() do
|
|
raise "boom!"
|
|
end
|
|
rescue
|
|
V8::C::Locker::IsLocked().should be_false
|
|
end
|
|
end
|
|
|
|
it "properly re-locks if an exception is thrown inside an un-lock block" do
|
|
V8::C::Locker() do
|
|
begin
|
|
V8::C::Unlocker() do
|
|
raise "boom!"
|
|
end
|
|
rescue
|
|
V8::C::Locker::IsLocked().should be_true
|
|
end
|
|
end
|
|
end
|
|
end
|