pact 1.0.37 → 1.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,15 @@ Do this to generate your change history
2
2
 
3
3
  git log --date=relative --pretty=format:' * %h - %s (%an, %ad)'
4
4
 
5
+ ### 1.0.38 (24 March 2014)
6
+
7
+ * 7fb2bc3 - Improved readability of pact:verify specs by removing pactfile name and request details from output (bethesque, 23 hours ago)
8
+ * ff1de3c - Improving readability of error messages when pact:verify fails (bethesque, 23 hours ago)
9
+ * 8a08abf - Removed the last RSpec private API usage. I think. (bethesque, 33 hours ago)
10
+ * 6a0be58 - Reducing even more use of RSpec private APIs (bethesque, 33 hours ago)
11
+ * e1fd51c - Reducing use of RSpec private APIs (bethesque, 34 hours ago)
12
+ * 587cb90 - Replaced rspec 'commands to rerun failed examples' with Pact specific commands to rerun failed interactions (bethesque, 2 days ago)
13
+
5
14
  ### 1.0.37 (19 March 2014)
6
15
 
7
16
  * 0e8b80e - Cleaned up pact:verify rspec matcher lines so the output makes more sense to the reader (bethesque, 3 minutes ago)
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pact (1.0.37)
4
+ pact (1.0.38)
5
5
  awesome_print (~> 1.1)
6
+ colored
6
7
  find_a_port (~> 1.0.1)
7
8
  json
8
9
  rack-test (~> 0.6.2)
@@ -24,6 +25,7 @@ GEM
24
25
  atomic (1.1.14)
25
26
  awesome_print (1.2.0)
26
27
  coderay (1.0.9)
28
+ colored (1.2)
27
29
  crack (0.4.1)
28
30
  safe_yaml (~> 0.9.0)
29
31
  diff-lcs (1.2.4)
data/README.md CHANGED
@@ -377,9 +377,13 @@ Configure the pact_uri in the Pact.service_provider block with the pact artifact
377
377
 
378
378
  It should run with all your other tests. If an integration is broken, you want to know about it *before* you check in.
379
379
 
380
- #### Use the real database
380
+ #### Stub calls to downstream systems
381
381
 
382
- Do not stub your database calls for pact:verify. This is the best time for you to test your database integration. If you stub your database calls, you are getting little more assurance that the real end-to-end will work than if you'd used a unit test. It's the appropriate time to incur the overhead of a database call.
382
+ Consider making a separate pact with the downstream system and using shared fixtures.
383
+
384
+ #### Consider carefully whether to use the real database or stub calls
385
+
386
+ You may choose not stub your database calls for pact:verify. This can be a good time for you to test your database integration if you have a simple application, however, for a complex one, you might want to carefully choose a point at which to stub calls.
383
387
 
384
388
  ## Gotchas
385
389
 
@@ -10,6 +10,8 @@ module Pact
10
10
  attr_accessor :tmp_dir
11
11
  attr_accessor :reports_dir
12
12
  attr_writer :pactfile_write_mode
13
+ attr_accessor :error_stream
14
+ attr_accessor :output_stream
13
15
 
14
16
  def log_path
15
17
  log_dir + "/pact.log"
@@ -54,6 +56,8 @@ module Pact
54
56
  c.logger = default_logger c.log_path
55
57
  c.pactfile_write_mode = :overwrite
56
58
  c.reports_dir = File.expand_path('./reports/pacts')
59
+ c.output_stream = $stdout
60
+ c.error_stream = $stderr
57
61
  c
58
62
  end
59
63
 
@@ -84,7 +84,7 @@ module Pact
84
84
  end
85
85
 
86
86
  def warn_and_stderr msg
87
- $stderr.puts msg
87
+ Pact.configuration.error_stream.puts msg
88
88
  logger.warn msg
89
89
  end
90
90
 
@@ -4,7 +4,8 @@ require 'rspec/core'
4
4
  require 'rspec/core/formatters/documentation_formatter'
5
5
  require 'rspec/core/formatters/json_formatter'
6
6
  require 'pact/provider/pact_helper_locator'
7
- require 'pact/provider/print_missing_provider_states'
7
+ require 'pact/provider/rspec/formatter'
8
+ require 'pact/provider/rspec/silent_json_formatter'
8
9
  require_relative 'rspec'
9
10
 
10
11
 
@@ -36,6 +37,7 @@ module Pact
36
37
  run_specs
37
38
  ensure
38
39
  ::RSpec.reset
40
+ Pact.clear_world
39
41
  end
40
42
  end
41
43
 
@@ -43,11 +45,11 @@ module Pact
43
45
 
44
46
  def require_pact_helper spec_definition
45
47
  if spec_definition[:pact_helper]
46
- puts "Using #{spec_definition[:pact_helper]}"
48
+ Pact.configuration.output_stream.puts "Using #{spec_definition[:pact_helper]}"
47
49
  require spec_definition[:pact_helper]
48
50
  elsif spec_definition[:support_file]
49
- puts "Using #{spec_definition[:support_file]}"
50
- $stderr.puts SUPPORT_FILE_DEPRECATION_MESSAGE
51
+ Pact.configuration.output_stream.puts "Using #{spec_definition[:support_file]}"
52
+ Pact.configuration.error_stream.puts SUPPORT_FILE_DEPRECATION_MESSAGE
51
53
  require spec_definition[:support_file]
52
54
  else
53
55
  require 'pact/provider/client_project_pact_helper'
@@ -70,42 +72,39 @@ module Pact
70
72
  config = ::RSpec.configuration
71
73
 
72
74
  config.color = true
75
+ config.pattern = "pattern which doesn't match any files"
76
+ config.backtrace_inclusion_patterns = [/pact\/provider\/rspec/]
77
+
73
78
  config.extend Pact::Provider::RSpec::ClassMethods
74
79
  config.include Pact::Provider::RSpec::InstanceMethods
75
80
  config.include Pact::Provider::TestMethods
76
- config.backtrace_inclusion_patterns = [/pact\/provider\/rspec/]
77
81
 
78
- config.before :each, :pact => :verify do | example |
79
- example_description = "#{example.example.example_group.description} #{example.example.description}"
80
- Pact.configuration.logger.info "Running example '#{example_description}'"
82
+ if options[:silent]
83
+ config.output_stream = StringIO.new
84
+ config.error_stream = StringIO.new
85
+ else
86
+ config.error_stream = Pact.configuration.error_stream
87
+ config.output_stream = Pact.configuration.output_stream
81
88
  end
82
89
 
83
- unless options[:silent]
84
- config.error_stream = $stderr
85
- config.output_stream = $stdout
86
- end
90
+ config.add_formatter Pact::Provider::RSpec::Formatter
91
+ config.add_formatter Pact::Provider::RSpec::SilentJsonFormatter
87
92
 
88
- formatter = ::RSpec::Core::Formatters::DocumentationFormatter.new(config.output)
89
- @json_formatter = ::RSpec::Core::Formatters::JsonFormatter.new(StringIO.new)
90
- reporter = ::RSpec::Core::Reporter.new(formatter, @json_formatter)
91
- config.instance_variable_set(:@reporter, reporter)
92
93
  end
93
94
 
94
95
  def run_specs
95
- config = ::RSpec.configuration
96
- world = ::RSpec::world
97
- exit_code = config.reporter.report(world.example_count, nil) do |reporter|
98
- begin
99
- config.run_hook(:before, :suite)
100
- world.example_groups.ordered.map {|g| g.run(reporter)}.all? ? 0 : config.failure_exit_code
101
- ensure
102
- config.run_hook(:after, :suite)
103
- end
104
- end
105
- PrintMissingProviderStates.call Pact.world.provider_states.missing_provider_states
106
- @output = @json_formatter.output_hash
96
+ exit_code = ::RSpec::Core::CommandLine.new(NoConfigurationOptions.new)
97
+ .run(::RSpec.configuration.output_stream, ::RSpec.configuration.error_stream)
98
+ @output = JSON.parse(Pact.world.json_formatter_stream.string, symbolize_keys: true)
107
99
  exit_code
108
100
  end
101
+
102
+ class NoConfigurationOptions
103
+ def method_missing(method, *args, &block)
104
+ # Do nothing!
105
+ end
106
+ end
107
+
109
108
  end
110
109
  end
111
110
  end
@@ -3,9 +3,9 @@ module Pact
3
3
  class PrintMissingProviderStates
4
4
 
5
5
  # Hash of consumer names to array of names of missing provider states
6
- def self.call missing_provider_states
6
+ def self.call missing_provider_states, output
7
7
  if missing_provider_states.any?
8
- puts orangeify(text(missing_provider_states))
8
+ output.puts orangeify(text(missing_provider_states))
9
9
  end
10
10
  end
11
11
 
@@ -19,12 +19,10 @@ module Pact
19
19
  include ::RSpec::Core::DSL
20
20
 
21
21
  def honour_pactfile pactfile_uri, options = {}
22
- puts "Filtering specs by: #{options[:criteria]}" if options[:criteria]
22
+ puts "Filtering specs by: #{options[:criteria]}" if options[:criteria] && options[:criteria].any?
23
23
  consumer_contract = Pact::ConsumerContract.from_json(read_pact_from(pactfile_uri, options))
24
- describe "A pact between #{consumer_contract.consumer.name} and #{consumer_contract.provider.name}" do
25
- describe "in #{pactfile_uri}" do
26
- honour_consumer_contract consumer_contract, options
27
- end
24
+ describe "Verifying a pact between #{consumer_contract.consumer.name} and #{consumer_contract.provider.name}", :pactfile_uri => pactfile_uri do
25
+ honour_consumer_contract consumer_contract, options
28
26
  end
29
27
  end
30
28
 
@@ -60,12 +58,19 @@ module Pact
60
58
 
61
59
  def describe_interaction interaction, options
62
60
 
63
- describe description_for(interaction), :pact => :verify do
61
+ metadata = {
62
+ :pact => :verify,
63
+ :pact_interaction => interaction,
64
+ :pact_interaction_example_description => interaction_description_for_rerun_command(interaction)
65
+ }
66
+
67
+ describe description_for(interaction), metadata do
64
68
 
65
69
  interaction_context = InteractionContext.new
66
70
 
67
71
  before do
68
72
  interaction_context.run_once :before do
73
+ Pact.configuration.logger.info "Running example '#{self.example.full_description}'"
69
74
  set_up_provider_state interaction.provider_state, options[:consumer]
70
75
  replay_interaction interaction
71
76
  interaction_context.last_response = last_response
@@ -119,7 +124,11 @@ module Pact
119
124
  end
120
125
 
121
126
  def description_for interaction
122
- "#{interaction.description} using #{interaction.request.method.upcase} to #{interaction.request.path}"
127
+ interaction.provider_state ? interaction.description : interaction.description.capitalize
128
+ end
129
+
130
+ def interaction_description_for_rerun_command interaction
131
+ description_for(interaction).capitalize + ( interaction.provider_state ? " given #{interaction.provider_state}" : "")
123
132
  end
124
133
 
125
134
  def read_pact_from uri, options = {}
@@ -0,0 +1,63 @@
1
+ require 'pact/provider/print_missing_provider_states'
2
+ require 'rspec/core/formatters'
3
+ require 'colored'
4
+
5
+ module Pact
6
+ module Provider
7
+ module RSpec
8
+ class Formatter < ::RSpec::Core::Formatters::DocumentationFormatter
9
+
10
+
11
+ def dump_commands_to_rerun_failed_examples
12
+ return if failed_examples.empty?
13
+
14
+ print_rerun_commands
15
+ print_failure_message
16
+ print_missing_provider_states
17
+
18
+ end
19
+
20
+ def print_rerun_commands
21
+ output.puts("\n")
22
+ interaction_failure_messages.each do | message |
23
+ output.puts(message)
24
+ end
25
+ end
26
+
27
+ def print_missing_provider_states
28
+ PrintMissingProviderStates.call Pact.world.provider_states.missing_provider_states, output
29
+ end
30
+
31
+ def interaction_failure_messages
32
+ failed_examples.collect do |example|
33
+ interaction_failure_message_for example
34
+ end.uniq
35
+ end
36
+
37
+ def interaction_failure_message_for example
38
+ provider_state = example.metadata[:pact_interaction].provider_state
39
+ description = example.metadata[:pact_interaction].description
40
+ pactfile_uri = example.metadata[:pactfile_uri]
41
+ example_description = example.metadata[:pact_interaction_example_description]
42
+ failure_color("rake pact:verify:at[#{pactfile_uri}] PACT_DESCRIPTION=\"#{description}\" PACT_PROVIDER_STATE=\"#{provider_state}\"") + " " + detail_color("# #{example_description}")
43
+ end
44
+
45
+ def print_failure_message
46
+ output.puts failure_message
47
+ end
48
+
49
+ def failure_message
50
+
51
+ "\n" + "For assistance debugging failures, please note:".underline.yellow + "\n\n" +
52
+ "The pact files have been stored locally in the following temp directory:\n #{Pact.configuration.tmp_dir}\n\n" +
53
+ "The requests and responses are logged in the following log file:\n #{Pact.configuration.log_path}\n\n"
54
+ end
55
+
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+ end
62
+
63
+
@@ -0,0 +1,18 @@
1
+ require 'rspec/core/formatters'
2
+
3
+ module Pact
4
+ module Provider
5
+ module RSpec
6
+ class SilentJsonFormatter < ::RSpec::Core::Formatters::JsonFormatter
7
+
8
+ def initialize stream
9
+ # Don't want to display this to the screen,
10
+ # not sure how else to set a custom stream for a particular formatter
11
+ # Store a reference to this so it can be inspected afterwards.
12
+ super(Pact.world.json_formatter_stream)
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -14,6 +14,12 @@ module Pact
14
14
  module Provider
15
15
  class World
16
16
 
17
+ attr_reader :json_formatter_stream
18
+
19
+ def initialize
20
+ @json_formatter_stream = StringIO.new
21
+ end
22
+
17
23
  def provider_states
18
24
  @provider_states_proxy ||= Pact::Provider::State::ProviderStateProxy.new
19
25
  end
@@ -1,32 +1,29 @@
1
1
  module Pact
2
2
  module TaskHelper
3
- def failure_message
4
- redify(
5
- "\n* * * * * * * * * * * * * * * * * * *\n" +
6
- "Provider did not honour pact file.\nSee\n * #{Pact.configuration.log_path}\n * #{Pact.configuration.tmp_dir}\nfor logs and pact files." +
7
- "\n* * * * * * * * * * * * * * * * * * *\n\n"
8
- )
9
- end
10
3
 
11
- def redify string
12
- "\e[31m#{string}\e[m"
13
- end
4
+ extend self
14
5
 
15
6
  def handle_verification_failure
16
7
  exit_status = yield
17
- if exit_status != 0
18
- $stderr.puts failure_message
19
- fail
20
- end
8
+ abort if exit_status != 0
21
9
  end
22
10
 
23
11
  def spec_criteria defaults = {description: nil, provider_state: nil}
24
12
  criteria = {}
25
- [:description, :provider_state].each do | key |
26
- value = ENV.fetch("PACT_#{key.to_s.upcase}", defaults[key])
27
- criteria[key] = Regexp.new(value) unless value.nil?
13
+
14
+ description = ENV.fetch("PACT_DESCRIPTION", defaults[:description])
15
+ criteria[:description] = Regexp.new(description) if description
16
+
17
+ provider_state = ENV.fetch("PACT_PROVIDER_STATE", defaults[:provider_state])
18
+ if provider_state
19
+ if provider_state.length == 0
20
+ criteria[:provider_state] = nil #Allow PACT_PROVIDER_STATE="" to mean no provider state
21
+ else
22
+ criteria[:provider_state] = Regexp.new(provider_state)
23
+ end
28
24
  end
29
- criteria.any? ? criteria : nil
25
+
26
+ criteria
30
27
  end
31
28
  end
32
29
  end
@@ -1,4 +1,3 @@
1
-
2
1
  Could not find one or more provider states.
3
2
  Have you required the provider states file for this consumer in your pact_helper.rb?
4
3
  If you have not yet defined these states, here is a template:
@@ -1,3 +1,3 @@
1
1
  module Pact
2
- VERSION = "1.0.37"
2
+ VERSION = "1.0.38"
3
3
  end
@@ -26,6 +26,7 @@ Gem::Specification.new do |gem|
26
26
  gem.add_runtime_dependency 'thor'
27
27
  gem.add_runtime_dependency 'json' #Not locking down a version because buncher gem requires 1.6, while other projects use 1.7.
28
28
  gem.add_runtime_dependency 'webrick'
29
+ gem.add_runtime_dependency 'colored'
29
30
 
30
31
  gem.add_development_dependency 'rake', '~> 10.0.3'
31
32
  gem.add_development_dependency 'webmock', '~> 1.9.3'
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+ require 'pact/tasks/task_helper'
3
+
4
+ module Pact
5
+ describe TaskHelper do
6
+ include TaskHelper
7
+
8
+ let(:env_description) { "pact description set in ENV"}
9
+ let(:env_provider_state) { "provider state set in ENV"}
10
+ let(:env_criteria){ {:description=>/#{env_description}/, :provider_state=>/#{env_provider_state}/} }
11
+ let(:default_description) { "default description"}
12
+ let(:default_provider_state) { "default provider state"}
13
+
14
+ shared_context "PACT_DESCRIPTION is defined" do
15
+ before do
16
+ ENV.stub(:[])
17
+ ENV.stub(:[]).with("PACT_DESCRIPTION").and_return(env_description)
18
+ end
19
+ end
20
+
21
+ shared_context 'PACT_PROVIDER_STATE is defined' do
22
+ before do
23
+ ENV.stub(:[])
24
+ ENV.stub(:[]).with("PACT_PROVIDER_STATE").and_return(env_provider_state)
25
+ end
26
+ end
27
+
28
+ shared_context 'default description is defined' do
29
+ let(:default_description) { "default description"}
30
+ end
31
+
32
+ let(:defaults) { {:description => default_description, :provider_state => default_provider_state} }
33
+
34
+ describe "spec_criteria" do
35
+
36
+ context "when ENV variables are defined" do
37
+ before do
38
+ ENV.stub(:fetch).with("PACT_DESCRIPTION", anything).and_return(env_description)
39
+ ENV.stub(:fetch).with("PACT_PROVIDER_STATE", anything).and_return(env_provider_state)
40
+ end
41
+
42
+ context "when defaults are not passed in" do
43
+ it "returns the env vars as regexes" do
44
+ expect(spec_criteria).to eq(env_criteria)
45
+ end
46
+ end
47
+
48
+ context "when defaults are passed in" do
49
+ it "returns the env vars as regexes" do
50
+ expect(spec_criteria(defaults)).to eq(env_criteria)
51
+ end
52
+ end
53
+ end
54
+
55
+ context "when ENV variables are not defined" do
56
+ context "when defaults are passed in" do
57
+ it "returns the defaults as regexes" do
58
+ expect(spec_criteria(defaults)).to eq({:description=>/#{default_description}/, :provider_state=>/#{default_provider_state}/})
59
+ end
60
+ end
61
+ context "when defaults are not passed in" do
62
+ it "returns an empty hash" do
63
+ expect(spec_criteria).to eq({})
64
+ end
65
+ end
66
+ end
67
+
68
+ context "when provider state is an empty string" do
69
+ before do
70
+ ENV.stub(:fetch).with(anything, anything).and_return(nil)
71
+ ENV.stub(:fetch).with("PACT_PROVIDER_STATE", anything).and_return('')
72
+ end
73
+
74
+ it "returns a nil provider state so that it matches a nil provider state on the interaction" do
75
+ expect(spec_criteria[:provider_state]).to be_nil
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -88,16 +88,6 @@ module Pact
88
88
  end
89
89
  end
90
90
 
91
- context 'when one or more specs fail' do
92
-
93
- let(:exit_code) {1}
94
-
95
- it 'raises an exception' do
96
- $stderr.should_receive(:puts) #Confusing if this shows on the screen!
97
- expect { Rake::Task[@task_name].execute }.to raise_error RuntimeError
98
- end
99
-
100
- end
101
91
  end
102
92
  end
103
93
  end
@@ -28,12 +28,16 @@ module Pact
28
28
  end
29
29
  end
30
30
 
31
+ Pact.set_up do
32
+ WEATHER ||= {}
33
+ end
31
34
 
32
35
  #one with a top level consumer
33
36
  Pact.provider_states_for 'some-test-consumer' do
37
+
34
38
  provider_state "the weather is sunny" do
35
39
  set_up do
36
- WEATHER ||= {}
40
+
37
41
  WEATHER[:current_state] = 'sunny'
38
42
  end
39
43
  end
@@ -42,7 +46,6 @@ module Pact
42
46
  #one without a top level consumer
43
47
  Pact.provider_state "the weather is cloudy" do
44
48
  set_up do
45
- WEATHER ||= {}
46
49
  WEATHER[:current_state] = 'cloudy'
47
50
  end
48
51
  end
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "interactions": [
9
9
  {
10
- "description": "A test request",
10
+ "description": "a test request",
11
11
  "request": {
12
12
  "method": "get",
13
13
  "path": "/"
@@ -4,10 +4,10 @@
4
4
  },
5
5
  "provider": {
6
6
  "name": "an unknown provider"
7
- },
7
+ },
8
8
  "interactions": [
9
9
  {
10
- "description": "A test request",
10
+ "description": "a test request",
11
11
  "request": {
12
12
  "method": "get",
13
13
  "path": "/weather",
@@ -20,6 +20,33 @@
20
20
 
21
21
  },
22
22
  "provider_state": "the weather is cloudy"
23
+ },{
24
+ "description": "another test request",
25
+ "request": {
26
+ "method": "get",
27
+ "path": "/weather",
28
+ "query": ""
29
+ },
30
+ "response": {
31
+ "status": 200,
32
+ "headers" : {"Content-type": "application/json"},
33
+ "body": {"message" : "this is not the weather you are looking for"}
34
+
35
+ }
36
+ },{
37
+ "description": "another test request",
38
+ "provider_state": "a missing provider state",
39
+ "request": {
40
+ "method": "get",
41
+ "path": "/weather",
42
+ "query": ""
43
+ },
44
+ "response": {
45
+ "status": 200,
46
+ "headers" : {"Content-type": "application/json"},
47
+ "body": {"message" : "this is not the weather you are looking for"}
48
+
49
+ }
23
50
  }
24
51
  ]
25
52
  }
@@ -4,10 +4,10 @@
4
4
  },
5
5
  "provider": {
6
6
  "name": "an unknown provider"
7
- },
7
+ },
8
8
  "interactions": [
9
9
  {
10
- "description": "A test request",
10
+ "description": "a test request",
11
11
  "request": {
12
12
  "method": "get",
13
13
  "path": "/weather",
@@ -21,7 +21,7 @@
21
21
  "provider_state": "the weather is sunny"
22
22
  },
23
23
  {
24
- "description": "A test request for text",
24
+ "description": "a test request for text",
25
25
  "request": {
26
26
  "method": "get",
27
27
  "path": "/sometext",
@@ -33,6 +33,6 @@
33
33
  "headers" : {"Content-type": "text/plain"},
34
34
  "body": "some text"
35
35
  }
36
- }
36
+ }
37
37
  ]
38
38
  }
@@ -8,6 +8,13 @@ Pact::VerificationTask.new(:stubbing_using_allow) do | pact |
8
8
  pact.uri './spec/support/stubbing.json', :pact_helper => './spec/support/stubbing_using_allow.rb'
9
9
  end
10
10
 
11
+ Pact::VerificationTask.new(:pass) do | pact |
12
+ pact.uri './spec/support/test_app_pass.json'
13
+ end
14
+
15
+ Pact::VerificationTask.new(:fail) do | pact |
16
+ pact.uri './spec/support/test_app_fail.json'
17
+ end
11
18
 
12
19
  namespace :pact do
13
20
 
@@ -20,6 +27,7 @@ namespace :pact do
20
27
  silent = true
21
28
  puts "Running task pact:tests"
22
29
  # Run these specs silently, otherwise expected failures will be written to stdout and look like unexpected failures.
30
+ Pact.configuration.output_stream = StringIO.new if silent
23
31
 
24
32
  result = Pact::Provider::PactSpecRunner.new([{ uri: './spec/support/test_app_pass.json' }], silent: silent).run
25
33
  fail 'Expected pact to pass' unless (result == 0)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.37
4
+ version: 1.0.38
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2014-03-19 00:00:00.000000000 Z
16
+ date: 2014-03-23 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: randexp
@@ -143,6 +143,22 @@ dependencies:
143
143
  - - ! '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
+ - !ruby/object:Gem::Dependency
147
+ name: colored
148
+ requirement: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :runtime
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ none: false
158
+ requirements:
159
+ - - ! '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
146
162
  - !ruby/object:Gem::Dependency
147
163
  name: rake
148
164
  requirement: !ruby/object:Gem::Requirement
@@ -359,6 +375,8 @@ files:
359
375
  - lib/pact/provider/print_missing_provider_states.rb
360
376
  - lib/pact/provider/request.rb
361
377
  - lib/pact/provider/rspec.rb
378
+ - lib/pact/provider/rspec/formatter.rb
379
+ - lib/pact/provider/rspec/silent_json_formatter.rb
362
380
  - lib/pact/provider/state/provider_state.rb
363
381
  - lib/pact/provider/state/provider_state_configured_modules.rb
364
382
  - lib/pact/provider/state/provider_state_manager.rb
@@ -421,6 +439,7 @@ files:
421
439
  - spec/lib/pact/reification_spec.rb
422
440
  - spec/lib/pact/shared/dsl_spec.rb
423
441
  - spec/lib/pact/something_like_spec.rb
442
+ - spec/lib/pact/tasks/task_helper_spec.rb
424
443
  - spec/lib/pact/term_spec.rb
425
444
  - spec/lib/pact/verification_task_spec.rb
426
445
  - spec/spec_helper.rb
@@ -455,7 +474,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
455
474
  version: '0'
456
475
  segments:
457
476
  - 0
458
- hash: 1047822279614111936
477
+ hash: 1671674810832384181
459
478
  required_rubygems_version: !ruby/object:Gem::Requirement
460
479
  none: false
461
480
  requirements:
@@ -464,7 +483,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
464
483
  version: '0'
465
484
  segments:
466
485
  - 0
467
- hash: 1047822279614111936
486
+ hash: 1671674810832384181
468
487
  requirements: []
469
488
  rubyforge_project:
470
489
  rubygems_version: 1.8.23
@@ -513,6 +532,7 @@ test_files:
513
532
  - spec/lib/pact/reification_spec.rb
514
533
  - spec/lib/pact/shared/dsl_spec.rb
515
534
  - spec/lib/pact/something_like_spec.rb
535
+ - spec/lib/pact/tasks/task_helper_spec.rb
516
536
  - spec/lib/pact/term_spec.rb
517
537
  - spec/lib/pact/verification_task_spec.rb
518
538
  - spec/spec_helper.rb