diff --git a/lib/rspec/support/ruby_features.rb b/lib/rspec/support/ruby_features.rb index 20e58075a..ea4033df6 100644 --- a/lib/rspec/support/ruby_features.rb +++ b/lib/rspec/support/ruby_features.rb @@ -47,6 +47,10 @@ def non_mri? def mri? !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby' end + + def truffleruby? + defined?(RUBY_ENGINE) && RUBY_ENGINE == 'truffleruby' + end end # @api private @@ -101,7 +105,7 @@ def supports_taint? end ripper_requirements = [ComparableVersion.new(RUBY_VERSION) >= '1.9.2'] - ripper_requirements.push(false) if Ruby.rbx? + ripper_requirements.push(false) if Ruby.rbx? || Ruby.truffleruby? if Ruby.jruby? ripper_requirements.push(Ruby.jruby_version >= '1.7.5') diff --git a/spec/rspec/support/ruby_features_spec.rb b/spec/rspec/support/ruby_features_spec.rb index 10fc1525e..38bbcbe39 100644 --- a/spec/rspec/support/ruby_features_spec.rb +++ b/spec/rspec/support/ruby_features_spec.rb @@ -123,6 +123,10 @@ def ripper_works_correctly? ripper_can_parse_source_including_keywordish_symbol? end + def self.ripper_supported? + RubyFeatures.ripper_supported? + end + # https://github.com/jruby/jruby/issues/3386 def ripper_reports_correct_line_number? in_sub_process_if_possible do @@ -144,7 +148,7 @@ def ripper_can_parse_source_including_keywordish_symbol? end end - it 'returns whether Ripper is correctly implemented in the current environment' do + it 'returns whether Ripper is correctly implemented in the current environment', :if => ripper_supported? do expect(RubyFeatures.ripper_supported?).to eq(ripper_is_implemented? && ripper_works_correctly?) end