Sha256: 05593a1aa3c5ad690dd93d422f63540efa3b0a5d59da9e0d00b69906f0e5e166

Contents?: true

Size: 1.18 KB

Versions: 4

Compression:

Stored size: 1.18 KB

Contents

require 'rspec/core'
require 'rspec/core/rake_task'

TESTS = [
  %w{head  9297},
  %w{2.4.2 9296},
  %w{2.3.0 9295},
  %w{2.2.0 9294},
  %w{2.1.0 9293}
]

DATABASE_VERSION = TESTS.first.first

def start_pact_broker code_version, port
  Bundler.with_clean_env do
    IO.popen("bundle exec appraisal #{code_version} rackup -p #{port}")
  end
end

def kill_servers
  Dir.chdir('pids') { Dir.glob("*") }.collect(&:to_i).each do | pid |
    Process.kill 'KILL', pid
  end
end

def clean
  require 'fileutils'
  FileUtils.rm_rf 'pids'
  FileUtils.mkdir 'pids'
  FileUtils.rm_rf 'pact_broker_database.sqlite3'
  FileUtils.rm_rf 'log'
end

RSpec::Core::RakeTask.new(:spec) do |task|
  task.pattern = 'spec/**/*_spec.rb'
end

desc 'Ensure code from previous versions is compatible with latest database'
task 'db:check_backwards_compatibility' do
  ENV['PACT_BROKER_DATABASE_VERSION'] = DATABASE_VERSION
  clean
  begin
    TESTS.each do | (code_version, port) |
      start_pact_broker code_version, port

      ENV['PACT_BROKER_CODE_VERSION'] = code_version
      ENV['PORT'] = port
      Rake::Task["spec"].execute
    end
  ensure
    kill_servers
  end
end

task :default => ['db:check_backwards_compatibility']

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pact_broker-2.7.0.beta.1 db/test/backwards_compatibility/Rakefile
pact_broker-2.6.0 db/test/backwards_compatibility/Rakefile
pact_broker-2.5.1 db/test/backwards_compatibility/Rakefile
pact_broker-2.5.0 db/test/backwards_compatibility/Rakefile