concurrent-ruby/spec/spec_helper.rb

59 lines
1.6 KiB
Ruby

if ENV['COVERAGE']
require 'simplecov'
require 'coveralls'
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
SimpleCov.start do
project_name 'concurrent-ruby'
add_filter '/examples/'
add_filter '/spec/'
end
end
if ENV['NO_PATH']
# Patch rspec not to add lib to $LOAD_PATH, allows to test installed gems
$LOAD_PATH.delete File.expand_path(File.join(__dir__, '..', 'lib'))
class RSpec::Core::Configuration
remove_method :requires=
def requires=(paths)
directories = [default_path].select { |p| File.directory? p }
RSpec::Core::RubyProject.add_to_load_path(*directories)
paths.each { |path| require path }
@requires += paths
end
end
end
require 'concurrent'
require 'concurrent-edge'
Concurrent.use_simple_logger Logger::FATAL
require_relative 'support/example_group_extensions'
require_relative 'support/threadsafe_test'
RSpec.configure do |config|
#config.raise_errors_for_deprecations!
config.filter_run_excluding stress: true
config.order = 'random'
config.disable_monkey_patching!
config.example_status_persistence_file_path = 'spec/examples.txt'
config.include Concurrent::TestHelpers
config.extend Concurrent::TestHelpers
config.before :each do
expect(!defined?(@created_threads) || @created_threads.nil? || @created_threads.empty?).to be_truthy
end
config.after :each do
while defined?(@created_threads) && @created_threads && (thread = (@created_threads.pop(true) rescue nil))
thread.kill
thread_join = thread.join(0.25)
expect(thread_join).not_to be_nil, thread.inspect
end
end
end