Module: Julewire::Core::Testing

Defined in:
lib/julewire/core/testing.rb,
lib/julewire/core/testing/chaos.rb,
lib/julewire/core/testing/coverage.rb,
lib/julewire/core/testing/contracts.rb,
lib/julewire/core/testing/test_reports.rb,
lib/julewire/core/testing/chaos/catalog.rb,
lib/julewire/core/testing/chaos/emitter.rb,
lib/julewire/core/testing/contracts/wire.rb,
lib/julewire/core/testing/chaos/destination.rb,
lib/julewire/core/testing/contracts/runtime.rb,
lib/julewire/core/testing/chaos/core_runtime.rb,
lib/julewire/core/testing/contracts/component.rb,
lib/julewire/core/testing/chaos/raising_output.rb,
lib/julewire/core/testing/contracts/integration.rb,
lib/julewire/core/testing/contracts/record_draft.rb,
lib/julewire/core/testing/contracts/deadline_scheduler.rb,
lib/julewire/core/testing/contracts/integration_fields.rb

Defined Under Namespace

Modules: Chaos, Contracts, Coverage, TestReports Classes: CaptureDestination, NullOutput

Class Method Summary collapse

Class Method Details

.capture(runtime = Julewire) {|records| ... } ⇒ Object

Yields:

  • (records)


68
69
70
71
72
# File 'lib/julewire/core/testing.rb', line 68

def capture(runtime = Julewire, **)
  records = configure_capture_destination(runtime, **).records
  yield records if block_given?
  records
end

.configure_capture_destination(runtime = Julewire) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/julewire/core/testing.rb', line 59

def configure_capture_destination(runtime = Julewire, **)
  destination = CaptureDestination.new(**)
  runtime.configure do |config|
    config.destinations.clear
    config.destinations.add(destination)
  end
  destination
end

.nonblocking_queue_values(queue) ⇒ Object



101
102
103
104
105
106
107
108
# File 'lib/julewire/core/testing.rb', line 101

def nonblocking_queue_values(queue)
  values = []
  loop do
    values << queue.pop(true)
  rescue ThreadError
    return values
  end
end

.reset_shared_schedulerObject



78
79
80
# File 'lib/julewire/core/testing.rb', line 78

def reset_shared_scheduler
  Core::Scheduling::SharedScheduler.__send__(:reset_for_test!)
end

.unregister_destination(kind) ⇒ Object



74
75
76
# File 'lib/julewire/core/testing.rb', line 74

def unregister_destination(kind)
  Core::Destinations.__send__(:unregister, kind)
end

.with_overridden_singleton_method(receiver, method_name, replacement) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/julewire/core/testing.rb', line 82

def with_overridden_singleton_method(receiver, method_name, replacement)
  singleton_class = class << receiver; self; end
  method_exists =
    singleton_class.method_defined?(method_name) || singleton_class.private_method_defined?(method_name)
  original = singleton_class.instance_method(method_name) if method_exists
  verbose = $VERBOSE
  $VERBOSE = nil
  singleton_class.define_method(method_name, replacement)
  yield
ensure
  $VERBOSE = nil
  if original
    singleton_class.define_method(method_name, original)
  elsif singleton_class&.method_defined?(method_name) || singleton_class&.private_method_defined?(method_name)
    singleton_class.remove_method(method_name)
  end
  $VERBOSE = verbose
end