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
|
require 'bundler'
Bundler::GemHelper.install_tasks
require 'fileutils'
require 'rspec/core'
require 'rspec/core/rake_task'
require 'yard'
if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.6.0')
require 'ruby_memcheck'
require 'ruby_memcheck/rspec/rake_task'
RubyMemcheck.config(binary_name: 'msgpack')
end
task :spec => :compile
desc 'Run RSpec code examples and measure coverage'
task :coverage do |t|
ENV['SIMPLE_COV'] = '1'
Rake::Task["spec"].invoke
end
desc 'Generate YARD document'
YARD::Rake::YardocTask.new(:doc) do |t|
t.files = ['lib/msgpack/version.rb','doclib/**/*.rb']
t.options = []
t.options << '--debug' << '--verbose' if $trace
end
spec = eval File.read("msgpack.gemspec")
if RUBY_PLATFORM =~ /java/
require 'rake/javaextensiontask'
Rake::JavaExtensionTask.new('msgpack', spec) do |ext|
ext.ext_dir = 'ext/java'
jruby_home = RbConfig::CONFIG['prefix']
jars = ["#{jruby_home}/lib/jruby.jar"]
ext.classpath = jars.map { |x| File.expand_path(x) }.join(':')
ext.lib_dir = File.join(*['lib', 'msgpack', ENV['FAT_DIR']].compact)
ext.release = '8'
end
else
require 'rake/extensiontask'
Rake::ExtensionTask.new('msgpack', spec) do |ext|
ext.ext_dir = 'ext/msgpack'
ext.cross_compile = true
ext.lib_dir = File.join(*['lib', 'msgpack', ENV['FAT_DIR']].compact)
# cross_platform names are of MRI's platform name
ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
end
end
test_pattern = case
when RUBY_PLATFORM =~ /java/ then 'spec/{,jruby/}*_spec.rb'
when RUBY_ENGINE =~ /rbx/ then 'spec/*_spec.rb'
else 'spec/{,cruby/}*_spec.rb' # MRI
end
spec_config = lambda do |t|
t.rspec_opts = ["-c", "-f progress"]
t.rspec_opts << "-Ilib"
t.pattern = test_pattern
t.verbose = true
end
RSpec::Core::RakeTask.new(:spec, &spec_config)
if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.6.0')
namespace :spec do
RubyMemcheck::RSpec::RakeTask.new(valgrind: :compile, &spec_config)
end
end
namespace :build do
desc 'Build gem for JRuby after cleaning'
task :java => [:clean, :spec, :build]
end
CLEAN.include('lib/msgpack/msgpack.*')
task :default => [:spec, :build, :doc]
|