tasks/pact-test.rake in pact-1.0.5 vs tasks/pact-test.rake in pact-1.0.6

- old
+ new

@@ -1,20 +1,45 @@ -require './lib/pact/provider/pact_spec_runner' namespace :pact do desc 'Runs pact tests against a sample application, testing failure and success.' task :tests do + + require 'pact/provider/pact_spec_runner' + require 'open3' + silent = true puts "Running task pact:tests" # Run these specs silently, otherwise expected failures will be written to stdout and look like unexpected failures. result = Pact::Provider::PactSpecRunner.new([{ uri: './spec/support/test_app_pass.json' }], silent: silent).run fail 'Expected pact to pass' unless (result == 0) result = Pact::Provider::PactSpecRunner.new([{ uri: './spec/support/test_app_fail.json', support_file: './spec/support/pact_helper.rb' }], silent: silent).run fail 'Expected pact to fail' if (result == 0) + expect_to_pass "bundle exec rake pact:verify" + expect_to_pass "bundle exec rake pact:verify:at[./spec/support/test_app_pass.json]" + expect_to_fail "bundle exec rake pact:verify:at[./spec/support/test_app_fail.json]" + puts "Task pact:tests completed succesfully." + end + + def expect_to_fail command + success = execute_command command + fail "Expected '#{command}' to fail" if success + end + + def expect_to_pass command + success = execute_command command + fail "Expected '#{command}' to pass" unless success + end + + def execute_command command + result = nil + Open3.popen3(command) {|stdin, stdout, stderr, wait_thr| + result = wait_thr.value + } + result.success? end end \ No newline at end of file