[DRE-commits] [ruby-delayer-deferred] 04/06: New upstream version 1.1.1
Daisuke Higuchi
dai at moszumanska.debian.org
Mon Mar 20 01:45:39 UTC 2017
This is an automated email from the git hooks/post-receive script.
dai pushed a commit to branch exp/debian
in repository ruby-delayer-deferred.
commit 0a35222673608a9cd46c5de19f6a9704639de3bd
Author: HIGUCHI Daisuke (VDR dai) <dai at debian.org>
Date: Mon Mar 20 10:29:04 2017 +0900
New upstream version 1.1.1
---
.gitignore | 3 ++-
delayer-deferred.gemspec | 3 +++
lib/delayer/deferred/deferred.rb | 19 ++++++++++++++-----
lib/delayer/deferred/tools.rb | 4 ++--
lib/delayer/deferred/version.rb | 2 +-
test/deferred_test.rb | 41 ++++++++++++++++++++++++++++++++++++++++
6 files changed, 63 insertions(+), 9 deletions(-)
diff --git a/.gitignore b/.gitignore
index f09ddf1..dcf865c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,5 @@
*.o
*.a
mkmf.log
-/vendor/
\ No newline at end of file
+/vendor/
+/Guardfile
diff --git a/delayer-deferred.gemspec b/delayer-deferred.gemspec
index 94f4cef..4ad228b 100644
--- a/delayer-deferred.gemspec
+++ b/delayer-deferred.gemspec
@@ -26,4 +26,7 @@ Gem::Specification.new do |spec|
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "minitest", "~> 5.7"
spec.add_development_dependency "ruby-prof"
+ spec.add_development_dependency 'guard'
+ spec.add_development_dependency 'guard-shell'
+ spec.add_development_dependency 'guard-rake'
end
diff --git a/lib/delayer/deferred/deferred.rb b/lib/delayer/deferred/deferred.rb
index 801d68c..02c5c41 100644
--- a/lib/delayer/deferred/deferred.rb
+++ b/lib/delayer/deferred/deferred.rb
@@ -51,12 +51,13 @@ module Delayer::Deferred
end
def self.fiber(&block)
- @_fiber ||= Fiber.new do |b|
- loop do
- b = Fiber.yield(b.())
- end
+ @_fiber ||= _gen_new_fiber
+ begin
+ result = @_fiber.resume(block)
+ rescue FiberError
+ @_fiber = _gen_new_fiber
+ result = @_fiber.resume(block)
end
- result = @_fiber.resume(block)
if result.is_a?(Delayer::Deferred::ResultContainer)
result
else
@@ -65,5 +66,13 @@ module Delayer::Deferred
return result, _fiber
end
end
+
+ def self._gen_new_fiber
+ Fiber.new do |b|
+ loop do
+ b = Fiber.yield(b.())
+ end
+ end
+ end
end
end
diff --git a/lib/delayer/deferred/tools.rb b/lib/delayer/deferred/tools.rb
index ffde7eb..12784ba 100644
--- a/lib/delayer/deferred/tools.rb
+++ b/lib/delayer/deferred/tools.rb
@@ -40,7 +40,7 @@ module Delayer::Deferred
# Kernel#systemを呼び出して、コマンドが成功たら成功するDeferredを返す。
# 失敗した場合、trap{}ブロックには $? の値(Process::Status)か、例外が発生した場合それが渡される
# ==== Args
- # [*args] Kernel#system の引数
+ # [*args] Kernel#spawn の引数
# ==== Return
# Deferred
def system(*args)
@@ -50,7 +50,7 @@ module Delayer::Deferred
if status && status.success?
status
else
- raise ForeignCommandAborted.new("command aborted: #{args.join(' ')}", process: $?) end
+ raise ForeignCommandAborted.new("command aborted: #{args.join(' ')}", process: status) end
}
end
end
diff --git a/lib/delayer/deferred/version.rb b/lib/delayer/deferred/version.rb
index 4d27467..1f7821f 100644
--- a/lib/delayer/deferred/version.rb
+++ b/lib/delayer/deferred/version.rb
@@ -1,5 +1,5 @@
module Delayer
module Deferred
- VERSION = "1.1.0"
+ VERSION = "1.1.1"
end
end
diff --git a/test/deferred_test.rb b/test/deferred_test.rb
index c1de727..ca4fd2a 100644
--- a/test/deferred_test.rb
+++ b/test/deferred_test.rb
@@ -213,6 +213,47 @@ describe(Delayer::Deferred) do
end
end
+ describe 'recursive delayer' do
+ it 'Deferred#next call in Deferred.next' do
+ delayer = Delayer.generate_class
+ buf = []
+ erra = errb = errc = nil
+ eval_all_events(delayer) do
+ delayer.Deferred.next{
+ buf << 'begin A'
+ delayer.run
+ buf << 'end A'
+ }.trap{|err|
+ erra = err
+ }
+ delayer.Deferred.next{
+ buf << 'begin B'
+ delayer.run
+ buf << 'end B'
+ }.trap{|err|
+ errb = err
+ }
+ delayer.Deferred.next{
+ buf << 'begin C'
+ delayer.run
+ buf << 'end C'
+ }.trap{|err|
+ errc = err
+ }
+
+ end
+ refute erra
+ refute errb
+ refute errc
+ assert_includes buf, 'begin A'
+ assert_includes buf, 'end A'
+ assert_includes buf, 'begin B'
+ assert_includes buf, 'end B'
+ assert_includes buf, 'begin C'
+ assert_includes buf, 'end C'
+ end
+ end
+
describe "Deferredable#system" do
it "command successed" do
succeed = failure = false
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-delayer-deferred.git
More information about the Pkg-ruby-extras-commits
mailing list