Rakefile in lorj-1.0.11 vs Rakefile in lorj-1.0.12

- old
+ new

@@ -14,30 +14,71 @@ # See the License for the specific language governing permissions and # limitations under the License. require 'bundler/gem_tasks' require 'rspec/core/rake_task' -require 'rubocop/rake_task' +require 'rubocop/rake_task' unless RUBY_VERSION.match(/1\.8/) require 'rdoc/task' +require 'json' task :default => [:lint, :spec] +desc 'Run all specs (locally + docker).' +task :spec => [:spec_local, :spec18] + +desc 'Run acceptance test (docker - specs).' +task :acceptance => [:spec18] + desc 'Generate lorj documentation' RDoc::Task.new do |rdoc| rdoc.main = 'README.md' rdoc.rdoc_files.include('README.md', 'lib', 'example', 'bin') end desc 'Run the specs.' -RSpec::Core::RakeTask.new do |t| +RSpec::Core::RakeTask.new(:spec_local) do |t| t.pattern = 'spec/*_spec.rb' t.rspec_opts = '-f doc' end -desc 'Run RuboCop on the project' -RuboCop::RakeTask.new(:lint) do |task| - task.formatters = ['progress'] - task.verbose = true - task.fail_on_error = true +if RUBY_VERSION.match(/1\.8/) + desc 'no lint with ruby 1.8' + task :lint +else + desc 'Run RuboCop on the project' + RuboCop::RakeTask.new(:lint) do |task| + task.formatters = ['progress'] + task.verbose = true + task.fail_on_error = true + end +end + +# rubocop: disable Style/SpecialGlobalVars + +desc 'Run spec with docker for ruby 1.8' +task :spec18 do + begin + `docker` + rescue + puts 'Unable to run spec against ruby 1.8: docker not found' + else + cmd = 'build/build_with_proxy.sh -t ruby/1.8' + puts "Running #{cmd}" + system(cmd) + image_id = `docker images ruby/1.8`.split("\n")[1].split[2] + res = `docker inspect -f '{{json .}}' lorj` + c_img = '' + c_img = JSON.parse(res)['Image'][0..11] if $?.exitstatus == 0 + + if $?.exitstatus == 0 && image_id == c_img && ENV['RSPEC_DEBUG'].nil? + system('docker start -ai lorj') + else + `docker rm lorj` if $?.exitstatus == 0 + cmd = "docker run -e RSPEC_DEBUG=#{ENV['RSPEC_DEBUG']} -it --name "\ + 'lorj -v $(pwd):/src -w /src ruby/1.8 /tmp/bundle.sh' + puts "Running #{cmd}" + system(cmd) + end + end end task :build => [:lint, :spec]