diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-09-20 20:18:52 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-09-20 20:18:52 +0000 |
commit | 1d15d5f08032acf1b7bceacbb450d617ff6e0931 (patch) | |
tree | a3785a79899302bc149e4a6e72f624ac27dc1f10 /spec/ruby/core/mutex/unlock_spec.rb | |
parent | 75bfc6440d595bf339007f4fb280fd4d743e89c1 (diff) | |
download | ruby-1d15d5f08032acf1b7bceacbb450d617ff6e0931.tar.gz |
Move spec/rubyspec to spec/ruby for consistency
* Other ruby implementations use the spec/ruby directory.
[Misc #13792] [ruby-core:82287]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/core/mutex/unlock_spec.rb')
-rw-r--r-- | spec/ruby/core/mutex/unlock_spec.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/ruby/core/mutex/unlock_spec.rb b/spec/ruby/core/mutex/unlock_spec.rb new file mode 100644 index 0000000000..4601fde634 --- /dev/null +++ b/spec/ruby/core/mutex/unlock_spec.rb @@ -0,0 +1,38 @@ +require File.expand_path('../../../spec_helper', __FILE__) + +describe "Mutex#unlock" do + it "raises ThreadError unless Mutex is locked" do + mutex = Mutex.new + lambda { mutex.unlock }.should raise_error(ThreadError) + end + + it "raises ThreadError unless thread owns Mutex" do + mutex = Mutex.new + wait = Mutex.new + wait.lock + th = Thread.new do + mutex.lock + wait.lock + end + + # avoid race on mutex.lock + Thread.pass until mutex.locked? + Thread.pass while th.status and th.status != "sleep" + + lambda { mutex.unlock }.should raise_error(ThreadError) + + wait.unlock + th.join + end + + it "raises ThreadError if previously locking thread is gone" do + mutex = Mutex.new + th = Thread.new do + mutex.lock + end + + th.join + + lambda { mutex.unlock }.should raise_error(ThreadError) + end +end |