module RSpec::Support::RubyFeatures

@api private

Provides query methods for ruby features that differ among implementations.

Public Instance Methods

# File rspec-support/lib/rspec/support/ruby_features.rb, line 85
def caller_locations_supported?
  respond_to?(:caller_locations, true)
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 155
def distincts_kw_args_from_positional_hash?
  RUBY_VERSION >= '3.0.0'
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 200
def foo; end

On JRuby 1.7 ‘–1.8` mode, `Process.respond_to?(:fork)` returns true, but when you try to fork, it raises an error:

NotImplementedError: fork is not available on this platform

When we drop support for JRuby 1.7 and/or Ruby 1.8, we can drop this special case.

# File rspec-support/lib/rspec/support/ruby_features.rb, line 72
def fork_supported?
  false
end

rubyreferences.github.io/rubychanges/3.0.html#keyword-arguments-are-now-fully-separated-from-positional-arguments

# File rspec-support/lib/rspec/support/ruby_features.rb, line 111
def kw_arg_separation?
  true
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 160
def kw_args_supported?
  RUBY_VERSION >= '2.0.0'
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 216
def module_prepends_supported?
  Module.method_defined?(:prepend) || Module.private_method_defined?(:prepend)
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 212
def module_refinement_supported?
  Module.method_defined?(:refine) || Module.private_method_defined?(:refine)
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 81
def optional_and_splat_args_supported?
  Method.method_defined?(:parameters)
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 164
def required_kw_args_supported?
  RUBY_VERSION >= '2.1.0'
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 146
def ripper_supported?
  true
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 90
def supports_exception_cause?
  true
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 168
def supports_rebinding_module_methods?
  RUBY_VERSION.to_i >= 2
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 100
def supports_syntax_suggest?
  true
end
# File rspec-support/lib/rspec/support/ruby_features.rb, line 121
def supports_taint?
  false
end