celluloid 0.17.1.2 → 0.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f410e14db4441077b7642b2912ecd009652a3c7a
4
- data.tar.gz: 11a6583dceb546cb9302ab5257a2feb1095b415f
3
+ metadata.gz: 7e4fef1274946e44231177bcac481a79c785e496
4
+ data.tar.gz: ddabf286ed4d0ac58f7f58f6ae9f843fd5b82a62
5
5
  SHA512:
6
- metadata.gz: a5c31f45caf8b91ee7a10a20ab3a858f4d3101e7f8e597d6c4434104a226d0c437b299895e67b1fbd67f1396e1481057560cec216aedf448fa4c3efd93d7e101
7
- data.tar.gz: 65c78e6b525fc3b54659db9a0a47feacf00abd0f2f1d0b23d1581551b62e8d6bb5027e51116c770c12f92c602688a8e6d9f48ad418946dba5e7ab7ed7b572539
6
+ metadata.gz: 8864299ee4256cc2fbe2f5cd32bd59f49f80033f6352a65ae76ac4381c9903835b563147d66ef19585d836e5a1bac92801269276dca003a093dc2c845c91c04d
7
+ data.tar.gz: fc79f37cf47fd47111cf2304c977c64d0d1e1e37b5c07f9d863e4975f1dd901ab2f43692a0cb656a36c98a93d9811bcdbcf10edecb027444ced46f916b19685d
data/CHANGES.md CHANGED
@@ -1,4 +1,19 @@
1
- 0.17.5 (HEAD)
1
+ 0.17.2 (2015-09-30)
2
+ -----
3
+ * Revamped test suite, using shared RSpec configuration layer provided by Celluloid itself.
4
+ * Updated gem dependencies provided by Celluloid::Sync... extraneous gems removed, or marked as development dependencies.
5
+ - Clean up deprecation notes.
6
+
7
+ 0.17.1.2 (2015-08-21)
8
+ -----
9
+ - Fixes to posted markdown content.
10
+ - Pull in new gem dependencies.
11
+
12
+ 0.17.1.1 (2015-08-07)
13
+ -----
14
+ - Revert "no task to suspend" code from #232.
15
+
16
+ 0.17.1 (2015-08-06)
2
17
  -----
3
18
  * `Celluloid::ActorSystem` moved to `Celluloid::Actor::System`, and from `celluloid/actor_system.rb` to `celluloid/actor/system.rb`
4
19
  * Added extensible API for defining new SystemEvents, and having them handled... without everyone changing `Actor#handle_system_event`.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "celluloid-culture"
5
- spec.version = "0.1.2"
5
+ spec.version = "0.2"
6
6
  spec.authors = ["Tony Arcieri", "Donovan Keme"]
7
7
  spec.email = ["bascule@gmail.com", "code@extremist.digital"]
8
8
 
@@ -1,6 +1,11 @@
1
1
  bundler:
2
+ dependency: development
3
+
2
4
  nenv:
5
+ dependency: development
6
+
3
7
  dotenv:
8
+ dependency: development
4
9
 
5
10
  benchmark_suite:
6
11
  dependency: development
@@ -23,6 +28,9 @@ rspec:
23
28
  guard-rspec:
24
29
  dependency: development
25
30
 
31
+ rspec-retry:
32
+ dependency: development
33
+
26
34
  coveralls:
27
35
  dependency: development
28
36
  gemfile:
@@ -30,7 +38,7 @@ coveralls:
30
38
 
31
39
  celluloid:
32
40
  dependency: core
33
- version: ">= 0.17.1.1"
41
+ version: ">= 0.17.2"
34
42
  gemfile:
35
43
  github: celluloid/celluloid
36
44
  branch: master
@@ -75,10 +83,3 @@ timers:
75
83
  version: ">= 4.1.1"
76
84
  gemfile:
77
85
  github: celluloid/timers
78
-
79
- rspec-logsplit:
80
- version: ">= 0.1.2"
81
- gemfile:
82
- github: "abstractive/rspec-logsplit"
83
- branch: "master"
84
- require: false
File without changes
@@ -2,3 +2,4 @@ inherit_from:
2
2
  - lint.yml
3
3
  - metrics.yml
4
4
  - style.yml
5
+ - perf.yml
@@ -46,3 +46,12 @@ Style/RescueModifier:
46
46
 
47
47
  Style/GlobalVars:
48
48
  Enabled: false
49
+
50
+ Style/FormatString:
51
+ EnforcedStyle: percent
52
+
53
+ Style/TrailingUnderscoreVariable:
54
+ Enabled: false
55
+
56
+ Style/ParallelAssignment:
57
+ Enabled: false
@@ -24,7 +24,7 @@ module Celluloid
24
24
  BARE_OBJECT_WARNING_MESSAGE = "WARNING: BARE CELLULOID OBJECT "
25
25
 
26
26
  class << self
27
- attr_writer :actor_system # Default Actor System
27
+ attr_writer :actor_system # Default Actor System
28
28
  attr_accessor :logger # Thread-safe logger class
29
29
  attr_accessor :log_actor_crashes
30
30
  attr_accessor :group_class # Default internal thread group to use
@@ -165,7 +165,7 @@ module Celluloid
165
165
  # Terminate all actors at exit
166
166
  at_exit do
167
167
  sleep 0.126 # hax grace period for unnaturally terminating actors
168
- # allows "reason" in exit_handler to resolve before being destroyed
168
+ # allows "reason" in exit_handler to resolve before being destroyed
169
169
  if defined?(RUBY_ENGINE) && RUBY_ENGINE == "ruby" && RUBY_VERSION >= "1.9"
170
170
  # workaround for MRI bug losing exit status in at_exit block
171
171
  # http://bugs.ruby-lang.org/issues/5218
@@ -18,6 +18,7 @@ module Celluloid
18
18
  super "caused by #{cause.inspect}: #{cause}"
19
19
  end
20
20
  end
21
+ class ThreadLeak < Celluloid::Error; end
21
22
  module Feature
22
23
  module Requires
23
24
  class RubiniusOrJRuby < Celluloid::Error; end
@@ -17,48 +17,46 @@ module Celluloid
17
17
 
18
18
  def shutdown
19
19
  @running = false
20
+ queue = []
20
21
  @mutex.synchronize do
21
- queue = Queue.new
22
22
  loop do
23
23
  break if @group.empty?
24
24
  th = @group.shift
25
25
  th.kill
26
26
  queue << th
27
27
  end
28
- loop do
29
- break if queue.empty?
30
- queue.pop.join
31
- end
28
+ end
29
+ Thread.pass unless queue.empty?
30
+ loop do
31
+ break if queue.empty?
32
+ queue.pop.join
32
33
  end
33
34
  end
34
35
 
35
36
  def idle?
36
- to_a.select { |t| t[:celluloid_meta] && t[:celluloid_meta][:state] == :running }.empty?
37
+ to_a.select { |t| t[:celluloid_thread_state] == :running }.empty?
37
38
  end
38
39
 
39
40
  def busy?
40
- to_a.select { |t| t[:celluloid_meta] && t[:celluloid_meta][:state] == :running }.any?
41
+ to_a.select { |t| t[:celluloid_thread_state] == :running }.any?
41
42
  end
42
43
 
43
44
  private
44
45
 
45
46
  def instantiate(proc)
46
47
  thread = Thread.new do
47
- Thread.current[:celluloid_meta] = {
48
- started: Time.now,
49
- state: :running,
50
- }
51
-
48
+ Thread.current[:celluloid_thread_state] = :running
52
49
  begin
53
50
  proc.call
54
51
  rescue ::Exception => ex
55
52
  Internals::Logger.crash("thread crashed", ex)
56
- Thread.current[:celluloid_meta][:state] = :error
53
+ Thread.current[:celluloid_thread_state] = :error
57
54
  ensure
58
- unless Thread.current[:celluloid_meta][:state] == :error
59
- Thread.current[:celluloid_meta][:state] = :finished
55
+ unless Thread.current[:celluloid_thread_state] == :error
56
+ Thread.current[:celluloid_thread_state] = :finished
60
57
  end
61
- Thread.current[:celluloid_meta][:finished] = Time.now
58
+ @mutex.synchronize { @group.delete Thread.current }
59
+ Thread.exit
62
60
  end
63
61
  end
64
62
 
@@ -1,12 +1,72 @@
1
+ require "dotenv"
2
+ require "nenv"
3
+
1
4
  require "celluloid/test"
2
5
 
6
+ # To help produce better bug reports in Rubinius
7
+ if RUBY_ENGINE == "rbx"
8
+ # $DEBUG = true # would be nice if this didn't fail ... :(
9
+ require "rspec/matchers"
10
+ require "rspec/matchers/built_in/be"
11
+ end
12
+
13
+ require "rspec/retry"
14
+
15
+ module Specs
16
+
17
+ CHECK_LOOSE_THREADS = !Nenv.ci? unless defined? CHECK_LOOSE_THREADS
18
+ ALLOW_RETRIES = 3 unless defined? ALLOW_RETRIES
19
+ ALLOW_SLOW_MAILBOXES = false unless defined? ALLOW_SLOW_MAILBOXES
20
+
21
+ INCLUDE_SUPPORT = [
22
+ "env",
23
+ "logging",
24
+ "sleep_and_wait",
25
+ "reset_class_variables",
26
+ "crash_checking",
27
+ "loose_threads",
28
+ "stubbing",
29
+ "coverage",
30
+ "includer",
31
+ "configure_rspec"
32
+ ]
33
+
34
+ INCLUDE_PATHS = [
35
+ "./spec/support/*.rb",
36
+ "./spec/support/examples/*.rb",
37
+ "./spec/shared/*.rb"
38
+ ]
39
+
40
+ MAX_EXECUTION = 13
41
+ MAX_ATTEMPTS = 20
42
+
43
+ TIMER_QUANTUM = 0.05 # Timer accuracy enforced by the tests (50ms)
44
+
45
+ BACKTRACE_OMITTED = [
46
+ "rspec-expectations",
47
+ "rspec-core",
48
+ "rspec-mocks",
49
+ "rspec-retry",
50
+ "rubysl-thread",
51
+ "rubysl-timeout"
52
+ ]
53
+ end
54
+
3
55
  $CELLULOID_DEBUG = true
4
56
 
57
+ # Require but disable, so it has to be explicitly enabled in tests
58
+ require "celluloid/probe"
59
+ $CELLULOID_MONITORING = false
60
+
61
+ Celluloid.shutdown_timeout = 1
62
+
5
63
  # Load shared examples and test support code for other gems to use.
6
64
 
7
- %w(env logging split_logs sleep_and_wait reset_class_variables crash_checking stubbing coverage includer).each { |f|
65
+ Specs::INCLUDE_SUPPORT.each { |f|
8
66
  require "#{File.expand_path('../../../spec/support', __FILE__)}/#{f}.rb"
9
67
  }
10
68
 
69
+ Specs.reset_probe(nil)
70
+
11
71
  Dir["#{File.expand_path('../../../spec/support/examples', __FILE__)}/*.rb"].map { |f| require f }
12
72
  Dir["#{File.expand_path('../../../spec/shared', __FILE__)}/*.rb"].map { |f| require f }
@@ -1,3 +1,3 @@
1
1
  module Celluloid
2
- VERSION = "0.17.1.2"
2
+ VERSION = "0.17.2"
3
3
  end
@@ -19,21 +19,21 @@ RSpec.describe "Blocks", actor_system: :global do
19
19
  end
20
20
  end
21
21
 
22
- def deferred_excecution(value, &block)
23
- defer {
22
+ def deferred_excecution(value, &_block)
23
+ defer do
24
24
  yield(value)
25
- }
25
+ end
26
26
  end
27
27
 
28
- def deferred_current_actor(&block)
29
- defer {
28
+ def deferred_current_actor(&_block)
29
+ defer do
30
30
  yield(current_actor.name)
31
- }
31
+ end
32
32
  end
33
33
 
34
- def defer_for_something(other, &block)
34
+ def defer_for_something(other, &_block)
35
35
  sender_actor = current_actor
36
- defer {
36
+ defer do
37
37
  $data << [:outside, @name, current_actor.name]
38
38
  other.do_something_and_callback do |value|
39
39
  $data << [:yielded, @name, current_actor.name]
@@ -42,7 +42,7 @@ RSpec.describe "Blocks", actor_system: :global do
42
42
  $data << sender_actor.receive_result(:sender)
43
43
  :pete_the_polyglot_alien
44
44
  end
45
- }
45
+ end
46
46
  end
47
47
 
48
48
  def do_something_and_callback
@@ -76,14 +76,14 @@ RSpec.describe "Blocks", actor_system: :global do
76
76
  expect($data).to eq(expected)
77
77
  end
78
78
 
79
- execute_deferred = Proc.new {
79
+ execute_deferred = proc do
80
80
  a1 = MyBlockActor.new("one")
81
81
  expect(a1.deferred_excecution(:pete_the_polyglot_alien) { |v| v })
82
- .to eq(:pete_the_polyglot_alien)
83
- }
82
+ .to eq(:pete_the_polyglot_alien)
83
+ end
84
84
 
85
85
  # unless RUBY_ENGINE == 'jruby'
86
- xit("can be deferred", &execute_deferred)
86
+ xit("can be deferred", &execute_deferred)
87
87
  # else
88
88
  # it("can be deferred", &execute_deferred)
89
89
  # end
@@ -1,22 +1,5 @@
1
1
  RSpec.describe Celluloid::Call::Sync, actor_system: :global do
2
2
  # TODO: these should be Call::Sync unit tests (without working on actual actors)
3
- class CallExampleActor
4
- include Celluloid
5
-
6
- def initialize(next_actor = nil)
7
- @next = next_actor
8
- end
9
-
10
- def actual_method; end
11
-
12
- def inspect
13
- fail "Don't call!"
14
- end
15
-
16
- def chained_call_ids
17
- [call_chain_id, @next.call_chain_id]
18
- end
19
- end
20
3
 
21
4
  let(:actor) { CallExampleActor.new }
22
5
  let(:logger) { Specs::FakeLogger.current }
@@ -9,7 +9,7 @@ RSpec.describe Celluloid::Condition, actor_system: :global do
9
9
  def initialize
10
10
  @condition = Condition.new
11
11
 
12
- @waiting = false
12
+ @waiting = false
13
13
  @signaled_times = 0
14
14
  end
15
15
 
@@ -4,5 +4,14 @@ require "celluloid/internals/logger"
4
4
  if Celluloid.group_class == Celluloid::Group::Spawner
5
5
  RSpec.describe Celluloid::Group::Spawner do
6
6
  it_behaves_like "a Celluloid Group"
7
+
8
+ it "does not leak finished threads" do
9
+ queue = Queue.new
10
+ th = subject.get { queue.pop }
11
+ expect do
12
+ queue << nil
13
+ th.join
14
+ end.to change { subject.group.length }.by(-1)
15
+ end
7
16
  end
8
17
  end
@@ -13,7 +13,7 @@ RSpec.describe Celluloid::Mailbox::Evented do
13
13
  #
14
14
  unless RUBY_ENGINE == "rbx"
15
15
  it "recovers from timeout exceeded to process mailbox message" do
16
- timeout_interval = CelluloidSpecs::TIMER_QUANTUM + 0.1
16
+ timeout_interval = Specs::TIMER_QUANTUM + 0.1
17
17
  started_at = Time.now
18
18
  expect do
19
19
  Kernel.send(:timeout, timeout_interval) do
@@ -21,7 +21,7 @@ RSpec.describe Celluloid::Mailbox::Evented do
21
21
  end
22
22
  end.to raise_exception(Timeout::Error)
23
23
 
24
- expect(Time.now - started_at).to be_within(CelluloidSpecs::TIMER_QUANTUM).of timeout_interval
24
+ expect(Time.now - started_at).to be_within(Specs::TIMER_QUANTUM).of timeout_interval
25
25
  end
26
26
  end
27
27
  end
@@ -1,24 +1,6 @@
1
1
  RSpec.describe "Deprecated Celluloid::SyncCall", actor_system: :global do
2
2
  subject { Celluloid::SyncCall.new }
3
3
 
4
- class DeprecatedCallExampleActor
5
- include Celluloid
6
-
7
- def initialize(next_actor = nil)
8
- @next = next_actor
9
- end
10
-
11
- def actual_method; end
12
-
13
- def inspect
14
- fail "Please don't call me! I'm not ready yet!"
15
- end
16
-
17
- def chained_call_ids
18
- [call_chain_id, @next.call_chain_id]
19
- end
20
- end
21
-
22
4
  let(:actor) { DeprecatedCallExampleActor.new }
23
5
 
24
6
  context "when obj does not respond to a method" do
@@ -19,9 +19,9 @@ RSpec.describe "Deprecated Celluloid::Future", actor_system: :global do
19
19
  end
20
20
 
21
21
  it "knows if it's got a value yet" do
22
- future = Celluloid::Future.new { sleep CelluloidSpecs::TIMER_QUANTUM * 5 }
22
+ future = Celluloid::Future.new { sleep Specs::TIMER_QUANTUM * 5 }
23
23
  expect(future).not_to be_ready
24
- sleep CelluloidSpecs::TIMER_QUANTUM * 6
24
+ sleep Specs::TIMER_QUANTUM * 6
25
25
  expect(future).to be_ready
26
26
  end
27
27
 
@@ -1,9 +1,4 @@
1
1
  RSpec.shared_examples "a Celluloid Actor" do
2
- before(:each) do |example|
3
- @fake_logger = Specs::FakeLogger.new(Celluloid.logger, example.description)
4
- stub_const("Celluloid::Internals::Logger", @fake_logger)
5
- end
6
-
7
2
  around do |ex|
8
3
  Celluloid.boot
9
4
  ex.run
@@ -766,13 +761,13 @@ RSpec.shared_examples "a Celluloid Actor" do
766
761
 
767
762
  def exclusive_with_block_log_task(task)
768
763
  exclusive do
769
- sleep CelluloidSpecs::TIMER_QUANTUM
764
+ sleep Specs::TIMER_QUANTUM
770
765
  log_task(task)
771
766
  end
772
767
  end
773
768
 
774
769
  def exclusive_log_task(task)
775
- sleep CelluloidSpecs::TIMER_QUANTUM
770
+ sleep Specs::TIMER_QUANTUM
776
771
  log_task(task)
777
772
  end
778
773
  exclusive :exclusive_log_task
@@ -794,14 +789,14 @@ RSpec.shared_examples "a Celluloid Actor" do
794
789
  it "executes methods in the proper order with block form" do
795
790
  subject.async.exclusive_with_block_log_task(:one)
796
791
  subject.async.log_task(:two)
797
- sleep CelluloidSpecs::TIMER_QUANTUM * 2
792
+ sleep Specs::TIMER_QUANTUM * 2
798
793
  expect(subject.tasks).to eq([:one, :two])
799
794
  end
800
795
 
801
796
  it "executes methods in the proper order with a class-level annotation" do
802
797
  subject.async.exclusive_log_task :one
803
798
  subject.async.log_task :two
804
- sleep CelluloidSpecs::TIMER_QUANTUM * 2
799
+ sleep Specs::TIMER_QUANTUM * 2
805
800
  expect(subject.tasks).to eq([:one, :two])
806
801
  end
807
802
 
@@ -828,7 +823,7 @@ RSpec.shared_examples "a Celluloid Actor" do
828
823
  end
829
824
 
830
825
  def eat_donuts
831
- sleep CelluloidSpecs::TIMER_QUANTUM
826
+ sleep Specs::TIMER_QUANTUM
832
827
  @tasks << "donuts"
833
828
  end
834
829
 
@@ -844,7 +839,7 @@ RSpec.shared_examples "a Celluloid Actor" do
844
839
  before do
845
840
  actor.async.eat_donuts
846
841
  actor.async.drink_coffee
847
- sleep CelluloidSpecs::TIMER_QUANTUM * 2
842
+ sleep Specs::TIMER_QUANTUM * 2
848
843
  end
849
844
 
850
845
  it "executes in an exclusive order" do
@@ -888,7 +883,7 @@ RSpec.shared_examples "a Celluloid Actor" do
888
883
  ended_at = Time.now - started_at
889
884
 
890
885
  expect(result).to_not be
891
- expect(ended_at).to be_within(CelluloidSpecs::TIMER_QUANTUM).of interval
886
+ expect(ended_at).to be_within(Specs::TIMER_QUANTUM).of interval
892
887
  end
893
888
  end
894
889
  end
@@ -930,8 +925,8 @@ RSpec.shared_examples "a Celluloid Actor" do
930
925
  end.new
931
926
  end
932
927
 
933
- let(:interval) { CelluloidSpecs::TIMER_QUANTUM * 10 }
934
- let(:sleep_interval) { interval + CelluloidSpecs::TIMER_QUANTUM } # wonky! #/
928
+ let(:interval) { Specs::TIMER_QUANTUM * 10 }
929
+ let(:sleep_interval) { interval + Specs::TIMER_QUANTUM } # wonky! #/
935
930
 
936
931
  it "suspends execution of a method (but not the actor) for a given time" do
937
932
  # Sleep long enough to ensure we're actually seeing behavior when asleep
@@ -944,7 +939,7 @@ RSpec.shared_examples "a Celluloid Actor" do
944
939
 
945
940
  future.value
946
941
  # I got 0.558 (in a slighly busy MRI) which is outside 0.05 of 0.5, so let's use (0.05 * 2)
947
- expect(Time.now - started_at).to be_within(CelluloidSpecs::TIMER_QUANTUM * 2).of interval
942
+ expect(Time.now - started_at).to be_within(Specs::TIMER_QUANTUM * 2).of interval
948
943
  end
949
944
 
950
945
  it "schedules timers which fire in the future" do
@@ -1247,7 +1242,7 @@ RSpec.shared_examples "a Celluloid Actor" do
1247
1242
  it "logs on unhandled messages" do
1248
1243
  expect(logger).to receive(:debug).with("Discarded message (unhandled): first")
1249
1244
  actor.mailbox << :first
1250
- sleep CelluloidSpecs::TIMER_QUANTUM
1245
+ sleep Specs::TIMER_QUANTUM
1251
1246
  end
1252
1247
  end
1253
1248
  end
@@ -1,100 +1,7 @@
1
1
  require "rubygems"
2
2
  require "bundler/setup"
3
3
 
4
- # To help produce better bug reports in Rubinius
5
- if RUBY_ENGINE == "rbx"
6
- # $DEBUG = true # would be nice if this didn't fail ... :(
7
- require "rspec/matchers"
8
- require "rspec/matchers/built_in/be"
9
- end
10
-
11
- # Require in order, so both CELLULOID_TEST and CELLULOID_DEBUG are true
12
4
  require "celluloid/rspec"
13
5
  require "celluloid/essentials"
14
6
 
15
- $CELLULOID_DEBUG = true
16
-
17
- # Require but disable, so it has to be explicitly enabled in tests
18
- require "celluloid/probe"
19
- $CELLULOID_MONITORING = false
20
- Specs.reset_probe(nil)
21
-
22
- Celluloid.shutdown_timeout = 1
23
-
24
- Dir["./spec/support/*.rb", "./spec/shared/*.rb"].map { |f| require f }
25
-
26
- RSpec.configure do |config|
27
- config.filter_run focus: true unless Nenv.ci?
28
-
29
- config.run_all_when_everything_filtered = true
30
- config.disable_monkey_patching!
31
- config.profile_examples = 3
32
-
33
- Specs.configure(config)
34
-
35
- config.before(:suite) do
36
- Specs.stub_out_class_method(Celluloid::Internals::Logger, :crash) do |*args|
37
- _name, ex = *args
38
- fail "Unstubbed Logger.crash() was called:\n crash(\n #{args.map(&:inspect).join(",\n ")})"\
39
- "\nException backtrace: \n (#{ex.class}) #{ex.backtrace * "\n (#{ex.class}) "}"
40
- end
41
- end
42
-
43
- config.before(:each) do |example|
44
- @fake_logger = Specs::FakeLogger.new(Celluloid.logger, example.description)
45
- stub_const("Celluloid::Internals::Logger", @fake_logger)
46
- end
47
-
48
- config.around do |ex|
49
- ex.run
50
- if @fake_logger.crashes?
51
- crashes = @fake_logger.crashes.map do |args, call_stack|
52
- msg, ex = *args
53
- "\n** Crash: #{msg.inspect}(#{ex.inspect})\n Backtrace:\n (crash) #{call_stack * "\n (crash) "}"\
54
- "\n** Crash: \"Actor crashed!\"(#{ex.inspect})\n Backtrace:\n (crash) #{call_stack * "\n (crash) "}"\
55
- "\n Exception Backtrace (#{ex.inspect}):\n (ex) #{ex.backtrace * "\n (ex) "}"
56
- end.join("\n")
57
-
58
- fail "Actor crashes occurred (please stub/mock if these are expected): #{crashes}"
59
- end
60
- @fake_logger = nil
61
- end
62
-
63
- config.around do |ex|
64
- Celluloid.actor_system = nil
65
-
66
- Specs.assert_no_loose_threads(ex.description) do
67
- Specs.reset_class_variables(ex.description) do
68
- ex.run
69
- end
70
- end
71
- end
72
-
73
- config.around actor_system: :global do |ex|
74
- # Needed because some specs mock/stub/expect on the logger
75
- Celluloid.logger = Specs.logger
76
-
77
- Celluloid.boot
78
- ex.run
79
- Celluloid.shutdown
80
- end
81
-
82
- config.around actor_system: :within do |ex|
83
- Celluloid::Actor::System.new.within do
84
- ex.run
85
- end
86
- end
87
-
88
- config.filter_gems_from_backtrace(*%w(rspec-expectations rspec-core rspec-mocks rspec-logsplit rubysl-thread rubysl-timeout))
89
-
90
- config.mock_with :rspec do |mocks|
91
- mocks.verify_doubled_constant_names = true
92
- mocks.verify_partial_doubles = true
93
- end
94
-
95
- config.around(:each) do |example|
96
- # Needed because some specs mock/stub/expect on the logger
97
- Celluloid.logger = Specs.logger
98
- example.run
99
- end
100
- end
7
+ Dir[*Specs::INCLUDE_PATHS].map { |f| require f }
@@ -0,0 +1,77 @@
1
+ RSpec.configure do |config|
2
+ config.filter_run focus: true unless Nenv.ci?
3
+ config.run_all_when_everything_filtered = true
4
+ config.disable_monkey_patching!
5
+ config.profile_examples = 3
6
+ config.filter_gems_from_backtrace(*Specs::BACKTRACE_OMITTED)
7
+
8
+ config.verbose_retry = true
9
+ config.default_retry_count = Specs::ALLOW_RETRIES
10
+ config.display_try_failure_messages = true
11
+ config.default_sleep_interval = 1
12
+ config.exceptions_to_retry = [Timeout::Error, Celluloid::ThreadLeak]
13
+
14
+ config.mock_with :rspec do |mocks|
15
+ mocks.verify_doubled_constant_names = true
16
+ mocks.verify_partial_doubles = true
17
+ end
18
+
19
+ config.before(:suite) do
20
+ Specs.stub_out_class_method(Celluloid::Internals::Logger, :crash) do |*args|
21
+ _name, ex = *args
22
+ fail "Unstubbed Logger.crash() was called:\n crash(\n #{args.map(&:inspect).join(",\n ")})"\
23
+ "\nException backtrace: \n (#{ex.class}) #{ex.backtrace * "\n (#{ex.class}) "}"
24
+ end
25
+ end
26
+
27
+ config.before(:each) do |example|
28
+ @fake_logger = Specs::FakeLogger.new(Celluloid.logger, example.description)
29
+ stub_const("Celluloid::Internals::Logger", @fake_logger)
30
+ end
31
+
32
+ config.around do |ex|
33
+ # Needed because some specs mock/stub/expect on the logger
34
+ Celluloid.logger = Specs.logger
35
+ Celluloid.actor_system = nil
36
+ Specs.reset_class_variables(ex.description) do
37
+ Timeout.timeout(Specs::MAX_EXECUTION) { ex.run }
38
+ end
39
+ if @fake_logger.crashes?
40
+ crashes = @fake_logger.crashes.map do |args, call_stack|
41
+ msg, ex = *args
42
+ "\n** Crash: #{msg.inspect}(#{ex.inspect})\n Backtrace:\n (crash) #{call_stack * "\n (crash) "}"\
43
+ "\n Exception Backtrace (#{ex.inspect}):\n (ex) #{ex.backtrace * "\n (ex) "}"
44
+ end.join("\n")
45
+ fail "Actor crashes occured (please stub/mock if these are expected): #{crashes}"
46
+ end
47
+ @fake_logger = nil
48
+ Specs.assert_no_loose_threads!("after example: #{ex.description}") if Specs::CHECK_LOOSE_THREADS
49
+ end
50
+
51
+ config.around :each, library: :IO do |ex|
52
+ Celluloid.boot
53
+ FileUtils.rm("/tmp/cell_sock") if File.exist?("/tmp/cell_sock")
54
+ ex.run
55
+ Celluloid.shutdown
56
+ end
57
+
58
+ config.around :each, library: :ZMQ do |ex|
59
+ Celluloid::ZMQ.init(1) unless ex.metadata[:no_init]
60
+ Celluloid.boot
61
+ ex.run
62
+ Celluloid.shutdown
63
+ Celluloid::ZMQ.terminate
64
+ end
65
+
66
+ config.around :each, actor_system: :global do |ex|
67
+ Celluloid.boot
68
+ ex.run
69
+ Celluloid.shutdown
70
+ end
71
+
72
+ config.around :each, actor_system: :within do |ex|
73
+ Celluloid::Actor::System.new.within do
74
+ ex.run
75
+ end
76
+ end
77
+ end
@@ -1,16 +1,21 @@
1
1
  require "nenv"
2
2
  require "dotenv"
3
- Dotenv.load!(Nenv("celluloid").config_file || (Nenv.ci? ? ".env-ci" : ".env-dev"))
4
3
 
5
- module Specs
6
- def self.env
7
- @env ||= Nenv("celluloid_specs")
4
+ # Default to `pwd`/.env-* ( whatever is in the current directory )
5
+ # Otherwise take the `.env-*` from the gem itself.
6
+ unless env = Nenv("celluloid").config_file
7
+ env = Nenv.ci? ? ".env-ci" : ".env-dev"
8
+ unless File.exist?(env)
9
+ env = File.expand_path("../../../#{env}", __FILE__)
8
10
  end
11
+ end
9
12
 
10
- def self.configure(config)
11
- if Specs.split_logs?
12
- config.log_split_dir = File.expand_path("../../log/#{DateTime.now.iso8601}", __FILE__)
13
- config.log_split_module = Specs
13
+ Dotenv.load!(env) rescue nil # If for some reason no .env-* files are available at all, use defaults.
14
+
15
+ module Specs
16
+ class << self
17
+ def env
18
+ @env ||= Nenv("celluloid_specs")
14
19
  end
15
20
  end
16
21
  end
@@ -1,4 +1,4 @@
1
- class ExampleCrash < StandardError
1
+ class ExampleCrash < Celluloid::Error
2
2
  attr_accessor :foo
3
3
  end
4
4
 
@@ -0,0 +1,37 @@
1
+ class CallExampleActor
2
+ include Celluloid
3
+
4
+ def initialize(next_actor = nil)
5
+ @next = next_actor
6
+ end
7
+
8
+ def actual_method; end
9
+
10
+ def inspect
11
+ fail "Don't call!"
12
+ end
13
+
14
+ def chained_call_ids
15
+ [call_chain_id, @next.call_chain_id]
16
+ end
17
+ end
18
+
19
+ # de DEPRECATE:
20
+
21
+ class DeprecatedCallExampleActor
22
+ include Celluloid
23
+
24
+ def initialize(next_actor = nil)
25
+ @next = next_actor
26
+ end
27
+
28
+ def actual_method; end
29
+
30
+ def inspect
31
+ fail "Please don't call me! I'm not ready yet!"
32
+ end
33
+
34
+ def chained_call_ids
35
+ [call_chain_id, @next.call_chain_id]
36
+ end
37
+ end
@@ -1,9 +1,6 @@
1
1
  module CelluloidSpecs
2
2
  def self.included_module
3
3
  # Celluloid::IO implements this with with 'Celluloid::IO'
4
- Celluloid
4
+ (defined? INCLUDED_MODULE) ? INCLUDED_MODULE : Celluloid
5
5
  end
6
-
7
- # Timer accuracy enforced by the tests (50ms)
8
- TIMER_QUANTUM = 0.05
9
6
  end
@@ -14,10 +14,6 @@ module Specs
14
14
  end
15
15
  end
16
16
 
17
- def split_logs?
18
- log.strategy == "split"
19
- end
20
-
21
17
  def logger
22
18
  @logger ||= default_logger.tap { |logger| logger.level = log.level }
23
19
  end
@@ -32,13 +28,9 @@ module Specs
32
28
  Logger.new(STDERR)
33
29
  when "single"
34
30
  Logger.new(open_logfile(log.file, log.sync?))
35
- when "split"
36
- # Use Celluloid in case there's logging in a before/after handle
37
- # (is that a bug in rspec-log_split?)
38
- Celluloid.logger
39
31
  else
40
32
  fail "Unknown logger strategy: #{strategy.inspect}."\
41
- " Expected 'split', 'single' or 'stderr'."
33
+ " Expected 'single' or 'stderr'."
42
34
  end
43
35
  end
44
36
 
@@ -51,7 +43,7 @@ module Specs
51
43
  end
52
44
 
53
45
  def default_strategy
54
- (Nenv.ci? ? "stderr" : "split")
46
+ (Nenv.ci? ? "stderr" : "single")
55
47
  end
56
48
 
57
49
  def default_level_for(env, level)
@@ -4,6 +4,11 @@ module Specs
4
4
  Thread.list.map do |thread|
5
5
  next unless thread
6
6
  next if thread == Thread.current
7
+
8
+ # TODO: Remove Specs::ALLOW_SLOW_MAILBOXES hax.
9
+ # Allows slow shutdown of mailboxes.
10
+ # Find more graceful way to do shutdown.
11
+
7
12
  if RUBY_PLATFORM == "java"
8
13
  # Avoid disrupting jRuby's "fiber" threads.
9
14
  name = thread.to_java.getNativeThread.get_name
@@ -16,25 +21,31 @@ module Specs
16
21
 
17
22
  if RUBY_ENGINE == "rbx"
18
23
  # Avoid disrupting Rubinious thread
19
- next if thread.backtrace.empty?
20
24
  next if thread.backtrace.first =~ %r{rubysl/timeout/timeout\.rb}
25
+
26
+ if Specs::ALLOW_SLOW_MAILBOXES
27
+ if thread.backtrace.first =~ /wait/
28
+ next if thread.backtrace[1] =~ /mailbox\.rb/ && thread.backtrace[1] =~ /check/
29
+ end
30
+ end
21
31
  end
22
32
 
23
33
  if RUBY_ENGINE == "ruby"
24
34
  # Sometimes stays
25
- next if thread.backtrace.first =~ %r{/timeout\.rb}
35
+ next if thread.backtrace.nil?
36
+ next unless thread.backtrace.is_a?(Array)
37
+ next if thread.backtrace.empty?
38
+ next if thread.backtrace.first =~ /timeout\.rb/
39
+
40
+ if Specs::ALLOW_SLOW_MAILBOXES
41
+ next if thread.backtrace[1] =~ /mailbox\.rb/ && thread.backtrace[1] =~ /sleep/
42
+ end
26
43
  end
27
44
 
28
45
  thread
29
46
  end.compact
30
47
  end
31
48
 
32
- def assert_no_loose_threads(location)
33
- Specs.assert_no_loose_threads!("before example: #{location}")
34
- yield
35
- Specs.assert_no_loose_threads!("after example: #{location}")
36
- end
37
-
38
49
  def thread_name(thread)
39
50
  (RUBY_PLATFORM == "java") ? thread.to_java.getNativeThread.get_name : ""
40
51
  end
@@ -58,7 +69,7 @@ module Specs
58
69
  sleep
59
70
  end
60
71
 
61
- fail "Aborted due to runaway threads (#{location})\n"\
72
+ fail Celluloid::ThreadLeak, "Aborted due to runaway threads (#{location})\n"\
62
73
  "List: (#{loose.map(&:inspect)})\n:#{backtraces.join("\n")}"
63
74
  end
64
75
  end
@@ -6,7 +6,7 @@ module Specs
6
6
  end
7
7
 
8
8
  diff = Time.now.to_f - t1
9
- STDERR.puts "wait took a bit long: #{diff} seconds" if diff > 0.4
9
+ STDERR.puts "wait took a bit long: #{diff} seconds" if diff > Specs::TIMER_QUANTUM
10
10
  rescue Timeout::Error
11
11
  t2 = Time.now.to_f
12
12
  raise "Timeout after: #{t2 - t1} seconds"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: celluloid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1.2
4
+ version: 0.17.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
@@ -9,16 +9,16 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-22 00:00:00.000000000 Z
12
+ date: 2015-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ name: bundler
15
16
  version_requirements: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - ">="
18
19
  - !ruby/object:Gem::Version
19
20
  version: '0'
20
- name: bundler
21
- type: :runtime
21
+ type: :development
22
22
  prerelease: false
23
23
  requirement: !ruby/object:Gem::Requirement
24
24
  requirements:
@@ -26,13 +26,13 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
+ name: nenv
29
30
  version_requirements: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - ">="
32
33
  - !ruby/object:Gem::Version
33
34
  version: '0'
34
- name: nenv
35
- type: :runtime
35
+ type: :development
36
36
  prerelease: false
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
@@ -40,13 +40,13 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
+ name: dotenv
43
44
  version_requirements: !ruby/object:Gem::Requirement
44
45
  requirements:
45
46
  - - ">="
46
47
  - !ruby/object:Gem::Version
47
48
  version: '0'
48
- name: dotenv
49
- type: :runtime
49
+ type: :development
50
50
  prerelease: false
51
51
  requirement: !ruby/object:Gem::Requirement
52
52
  requirements:
@@ -54,12 +54,12 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
+ name: benchmark_suite
57
58
  version_requirements: !ruby/object:Gem::Requirement
58
59
  requirements:
59
60
  - - ">="
60
61
  - !ruby/object:Gem::Version
61
62
  version: '0'
62
- name: benchmark_suite
63
63
  type: :development
64
64
  prerelease: false
65
65
  requirement: !ruby/object:Gem::Requirement
@@ -68,12 +68,12 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
+ name: rubocop
71
72
  version_requirements: !ruby/object:Gem::Requirement
72
73
  requirements:
73
74
  - - ">="
74
75
  - !ruby/object:Gem::Version
75
76
  version: '0'
76
- name: rubocop
77
77
  type: :development
78
78
  prerelease: false
79
79
  requirement: !ruby/object:Gem::Requirement
@@ -82,12 +82,12 @@ dependencies:
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
+ name: transpec
85
86
  version_requirements: !ruby/object:Gem::Requirement
86
87
  requirements:
87
88
  - - ">="
88
89
  - !ruby/object:Gem::Version
89
90
  version: '0'
90
- name: transpec
91
91
  type: :development
92
92
  prerelease: false
93
93
  requirement: !ruby/object:Gem::Requirement
@@ -96,12 +96,12 @@ dependencies:
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
+ name: pry
99
100
  version_requirements: !ruby/object:Gem::Requirement
100
101
  requirements:
101
102
  - - ">="
102
103
  - !ruby/object:Gem::Version
103
104
  version: '0'
104
- name: pry
105
105
  type: :development
106
106
  prerelease: false
107
107
  requirement: !ruby/object:Gem::Requirement
@@ -110,12 +110,12 @@ dependencies:
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
+ name: rake
113
114
  version_requirements: !ruby/object:Gem::Requirement
114
115
  requirements:
115
116
  - - ">="
116
117
  - !ruby/object:Gem::Version
117
118
  version: '0'
118
- name: rake
119
119
  type: :development
120
120
  prerelease: false
121
121
  requirement: !ruby/object:Gem::Requirement
@@ -124,12 +124,12 @@ dependencies:
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
+ name: rspec
127
128
  version_requirements: !ruby/object:Gem::Requirement
128
129
  requirements:
129
130
  - - ">="
130
131
  - !ruby/object:Gem::Version
131
132
  version: '0'
132
- name: rspec
133
133
  type: :development
134
134
  prerelease: false
135
135
  requirement: !ruby/object:Gem::Requirement
@@ -138,12 +138,12 @@ dependencies:
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
+ name: guard-rspec
141
142
  version_requirements: !ruby/object:Gem::Requirement
142
143
  requirements:
143
144
  - - ">="
144
145
  - !ruby/object:Gem::Version
145
146
  version: '0'
146
- name: guard-rspec
147
147
  type: :development
148
148
  prerelease: false
149
149
  requirement: !ruby/object:Gem::Requirement
@@ -152,12 +152,12 @@ dependencies:
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
+ name: rspec-retry
155
156
  version_requirements: !ruby/object:Gem::Requirement
156
157
  requirements:
157
158
  - - ">="
158
159
  - !ruby/object:Gem::Version
159
160
  version: '0'
160
- name: coveralls
161
161
  type: :development
162
162
  prerelease: false
163
163
  requirement: !ruby/object:Gem::Requirement
@@ -166,13 +166,13 @@ dependencies:
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  - !ruby/object:Gem::Dependency
169
+ name: coveralls
169
170
  version_requirements: !ruby/object:Gem::Requirement
170
171
  requirements:
171
172
  - - ">="
172
173
  - !ruby/object:Gem::Version
173
174
  version: '0'
174
- name: celluloid-essentials
175
- type: :runtime
175
+ type: :development
176
176
  prerelease: false
177
177
  requirement: !ruby/object:Gem::Requirement
178
178
  requirements:
@@ -180,12 +180,12 @@ dependencies:
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  - !ruby/object:Gem::Dependency
183
+ name: celluloid-essentials
183
184
  version_requirements: !ruby/object:Gem::Requirement
184
185
  requirements:
185
186
  - - ">="
186
187
  - !ruby/object:Gem::Version
187
188
  version: '0'
188
- name: celluloid-supervision
189
189
  type: :runtime
190
190
  prerelease: false
191
191
  requirement: !ruby/object:Gem::Requirement
@@ -194,12 +194,12 @@ dependencies:
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  - !ruby/object:Gem::Dependency
197
+ name: celluloid-supervision
197
198
  version_requirements: !ruby/object:Gem::Requirement
198
199
  requirements:
199
200
  - - ">="
200
201
  - !ruby/object:Gem::Version
201
202
  version: '0'
202
- name: celluloid-pool
203
203
  type: :runtime
204
204
  prerelease: false
205
205
  requirement: !ruby/object:Gem::Requirement
@@ -208,12 +208,12 @@ dependencies:
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  - !ruby/object:Gem::Dependency
211
+ name: celluloid-pool
211
212
  version_requirements: !ruby/object:Gem::Requirement
212
213
  requirements:
213
214
  - - ">="
214
215
  - !ruby/object:Gem::Version
215
216
  version: '0'
216
- name: celluloid-fsm
217
217
  type: :runtime
218
218
  prerelease: false
219
219
  requirement: !ruby/object:Gem::Requirement
@@ -222,12 +222,12 @@ dependencies:
222
222
  - !ruby/object:Gem::Version
223
223
  version: '0'
224
224
  - !ruby/object:Gem::Dependency
225
+ name: celluloid-fsm
225
226
  version_requirements: !ruby/object:Gem::Requirement
226
227
  requirements:
227
228
  - - ">="
228
229
  - !ruby/object:Gem::Version
229
230
  version: '0'
230
- name: celluloid-extras
231
231
  type: :runtime
232
232
  prerelease: false
233
233
  requirement: !ruby/object:Gem::Requirement
@@ -236,33 +236,33 @@ dependencies:
236
236
  - !ruby/object:Gem::Version
237
237
  version: '0'
238
238
  - !ruby/object:Gem::Dependency
239
+ name: celluloid-extras
239
240
  version_requirements: !ruby/object:Gem::Requirement
240
241
  requirements:
241
242
  - - ">="
242
243
  - !ruby/object:Gem::Version
243
- version: 4.1.1
244
- name: timers
244
+ version: '0'
245
245
  type: :runtime
246
246
  prerelease: false
247
247
  requirement: !ruby/object:Gem::Requirement
248
248
  requirements:
249
249
  - - ">="
250
250
  - !ruby/object:Gem::Version
251
- version: 4.1.1
251
+ version: '0'
252
252
  - !ruby/object:Gem::Dependency
253
+ name: timers
253
254
  version_requirements: !ruby/object:Gem::Requirement
254
255
  requirements:
255
256
  - - ">="
256
257
  - !ruby/object:Gem::Version
257
- version: 0.1.2
258
- name: rspec-logsplit
258
+ version: 4.1.1
259
259
  type: :runtime
260
260
  prerelease: false
261
261
  requirement: !ruby/object:Gem::Requirement
262
262
  requirements:
263
263
  - - ">="
264
264
  - !ruby/object:Gem::Version
265
- version: 0.1.2
265
+ version: 4.1.1
266
266
  description: Celluloid enables people to build concurrent programs out of concurrent
267
267
  objects just as easily as they build sequential programs out of sequential objects
268
268
  email:
@@ -275,7 +275,7 @@ files:
275
275
  - CHANGES.md
276
276
  - LICENSE.txt
277
277
  - README.md
278
- - culture/CODE_OF_CONDUCT.md
278
+ - culture/CONDUCT.md
279
279
  - culture/Gemfile
280
280
  - culture/LICENSE.txt
281
281
  - culture/README.md
@@ -288,6 +288,7 @@ files:
288
288
  - culture/rubocop/README.md
289
289
  - culture/rubocop/lint.yml
290
290
  - culture/rubocop/metrics.yml
291
+ - culture/rubocop/perf.yml
291
292
  - culture/rubocop/rubocop.yml
292
293
  - culture/rubocop/style.yml
293
294
  - culture/spec/gems_spec.rb
@@ -373,18 +374,19 @@ files:
373
374
  - spec/shared/mailbox_examples.rb
374
375
  - spec/shared/task_examples.rb
375
376
  - spec/spec_helper.rb
377
+ - spec/support/configure_rspec.rb
376
378
  - spec/support/coverage.rb
377
379
  - spec/support/crash_checking.rb
378
380
  - spec/support/debugging.rb
379
381
  - spec/support/env.rb
380
382
  - spec/support/examples/actor_class.rb
383
+ - spec/support/examples/call_class.rb
381
384
  - spec/support/examples/evented_mailbox_class.rb
382
385
  - spec/support/includer.rb
383
386
  - spec/support/logging.rb
384
387
  - spec/support/loose_threads.rb
385
388
  - spec/support/reset_class_variables.rb
386
389
  - spec/support/sleep_and_wait.rb
387
- - spec/support/split_logs.rb
388
390
  - spec/support/stubbing.rb
389
391
  homepage: https://github.com/celluloid/celluloid
390
392
  licenses:
@@ -398,7 +400,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
398
400
  requirements:
399
401
  - - ">="
400
402
  - !ruby/object:Gem::Version
401
- version: 1.9.2
403
+ version: 1.9.3
402
404
  required_rubygems_version: !ruby/object:Gem::Requirement
403
405
  requirements:
404
406
  - - ">="
@@ -1 +0,0 @@
1
- require "rspec/log_split" if Specs.split_logs?