1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
# Default RubySpec/CI settings for JRuby.
# detect windows platform:
require 'rbconfig'
require 'java'
require 'jruby'
require 'mspec/runner/formatters'
IKVM = java.lang.System.get_property('java.vm.name') =~ /IKVM\.NET/
WINDOWS = RbConfig::CONFIG['host_os'] =~ /mswin/
SPEC_DIR = File.join(File.dirname(__FILE__), 'ruby') unless defined?(SPEC_DIR)
TAGS_DIR = File.join(File.dirname(__FILE__), 'tags') unless defined?(TAGS_DIR)
# update env to force children into proper mode
ENV['JRUBY_OPTS'] = ENV['JRUBY_OPTS'].to_s + " --1.8"
class MSpecScript
# Language features specs
set :language, [ SPEC_DIR + '/language' ]
# Core library specs
set :core, [
SPEC_DIR + '/core',
# 1.9
'^' + SPEC_DIR + '/core/basicobject'
]
set :fast,
get(:language) +
get(:core) +
[
# These all spawn sub-rubies, making them very slow to run
'^' + SPEC_DIR + '/core/process',
'^' + SPEC_DIR + '/core/kernel/exec',
'^' + SPEC_DIR + '/core/kernel/spawn',
'^' + SPEC_DIR + '/core/io/popen',
'^' + SPEC_DIR + '/core/argf/gets_spec.rb',
'^' + SPEC_DIR + '/core/argf/read_spec.rb',
'^' + SPEC_DIR + '/core/argf/readline_spec.rb',
'^' + SPEC_DIR + '/core/encoding/default_external_spec.rb',
'^' + SPEC_DIR + '/core/encoding/default_internal_spec.rb',
'^' + SPEC_DIR + '/core/io/pid_spec.rb',
'^' + SPEC_DIR + '/core/kernel/at_exit_spec.rb',
'^' + SPEC_DIR + '/language/break_spec.rb',
'^' + SPEC_DIR + '/language/predefined_spec.rb',
'^' + SPEC_DIR + '/language/predefined/data_spec.rb',
]
# Filter out ObjectSpace specs if ObjectSpace is disabled
unless JRuby.objectspace
get(:core) << '^' + SPEC_DIR + '/core/objectspace/_id2ref'
get(:core) << '^' + SPEC_DIR + '/core/objectspace/each_object'
end
if IKVM
# ftype_spec freezes for some reason under IKVM
set(:core, get(:core) + ['^' + SPEC_DIR + '/core/file'])
# Process.kill spec hangs
set(:core, get(:core) + ['^' + SPEC_DIR + '/core/process'])
end
# An ordered list of the directories containing specs to run
# as the CI process.
set :library, [
SPEC_DIR + '/library',
# excluded for some reason, see JRUBY-4020
'^' + SPEC_DIR + '/library/drb',
'^' + SPEC_DIR + '/library/net',
'^' + SPEC_DIR + '/library/openssl',
# unstable
'^' + SPEC_DIR + '/library/syslog',
# 1.9 feature
'^' + SPEC_DIR + '/library/cmath',
'^' + SPEC_DIR + '/library/continuation',
'^' + SPEC_DIR + '/library/coverage',
'^' + SPEC_DIR + '/library/fiber',
'^' + SPEC_DIR + '/library/json',
'^' + SPEC_DIR + '/library/minitest',
'^' + SPEC_DIR + '/library/prime',
'^' + SPEC_DIR + '/library/ripper',
'^' + SPEC_DIR + '/library/rake',
'^' + SPEC_DIR + '/library/rubygems',
]
# Command Line specs
set :command_line, [ SPEC_DIR + '/command_line' ]
# prepare additional tags for CI
set(:ci_xtags, ["java#{ENV_JAVA['java.specification.version']}"]) # Java version
if WINDOWS
# Some specs on Windows will fail in we launch JRuby via
# ruby_exe() in-process (see core/argf/gets_spec.rb)
JRuby.runtime.instance_config.run_ruby_in_process = false
# core
get(:core) << '^' + SPEC_DIR + '/core/file/stat' # many failures
# exclude specs tagged with 'windows' keyword
get(:ci_xtags) << 'windows'
end
set :ci_files, get(:language) + get(:core) + get(:command_line) + get(:library)
# The default implementation to run the specs.
set :target, File.dirname(__FILE__) + '/../bin/' + RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']
set :backtrace_filter, /mspec\//
set :tags_patterns, [
[%r(^.*/language/), TAGS_DIR + '/1.8/ruby/language/'],
[%r(^.*/core/), TAGS_DIR + '/1.8/ruby/core/'],
[%r(^.*/command_line/), TAGS_DIR + '/1.8/ruby/command_line/'],
[%r(^.*/library/), TAGS_DIR + '/1.8/ruby/library/'],
[/_spec.rb$/, '_tags.txt']
]
# Disable features (not currently supported)
MSpec.disable_feature :fork
# Enable features
MSpec.enable_feature :continuation
MSpec.enable_feature :readline
# These are encoding-aware methods backported to 1.8.7+ (eg String#bytes)
MSpec.enable_feature :encoding_transition
end
|