Class: Pact::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/pact/configuration.rb

Defined Under Namespace

Classes: NilMatcher

Constant Summary collapse

DIFF_FORMATTERS =
{
  :embedded => Pact::Matchers::EmbeddedDiffFormatter,
  :unix => Pact::Matchers::UnixDiffFormatter,
  :list => Pact::Matchers::ListDiffFormatter
}
DIFF_FORMATTER_REGISTRATIONS =
[
  [/multipart\/form-data/, Pact::Matchers::MultipartFormDiffFormatter],
  [/.*/, Pact::Matchers::UnixDiffFormatter],
  [NilMatcher, Pact::Matchers::UnixDiffFormatter]
]
DIFFERS =
[
  [/json/, Pact::JsonDiffer],
  [/application\/x\-www\-form\-urlencoded/, Pact::FormDiffer],
  [/multipart\/form-data/, Pact::MultipartFormDiffer],
  [NilMatcher, Pact::TextDiffer],
  [/.*/, Pact::TextDiffer]
]
DEFAULT_DIFFER =
Pact::TextDiffer

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



70
71
72
73
# File 'lib/pact/configuration.rb', line 70

def initialize
  @differ_registrations = []
  @diff_formatter_registrations = []
end

Instance Attribute Details

#error_streamObject

Returns the value of attribute error_stream.



51
52
53
# File 'lib/pact/configuration.rb', line 51

def error_stream
  @error_stream
end

#log_dirObject

Returns the value of attribute log_dir.



46
47
48
# File 'lib/pact/configuration.rb', line 46

def log_dir
  @log_dir
end

#loggerObject



75
76
77
# File 'lib/pact/configuration.rb', line 75

def logger
  @logger ||= create_logger
end

#output_streamObject

Returns the value of attribute output_stream.



52
53
54
# File 'lib/pact/configuration.rb', line 52

def output_stream
  @output_stream
end

#pact_dirObject

Returns the value of attribute pact_dir.



45
46
47
# File 'lib/pact/configuration.rb', line 45

def pact_dir
  @pact_dir
end

#pactfile_write_orderObject

Returns the value of attribute pactfile_write_order.



53
54
55
# File 'lib/pact/configuration.rb', line 53

def pactfile_write_order
  @pactfile_write_order
end

#tmp_dirObject

Returns the value of attribute tmp_dir.



47
48
49
# File 'lib/pact/configuration.rb', line 47

def tmp_dir
  @tmp_dir
end

#treat_all_number_classes_as_equivalentObject

when using type based matching



54
55
56
# File 'lib/pact/configuration.rb', line 54

def treat_all_number_classes_as_equivalent
  @treat_all_number_classes_as_equivalent
end

Class Method Details

.default_configurationObject



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/pact/configuration.rb', line 56

def self.default_configuration
  c = Configuration.new
  c.pact_dir = File.expand_path('./spec/pacts')
  c.tmp_dir = File.expand_path('./tmp/pacts')
  c.log_dir = default_log_dir

  c.output_stream = $stdout
  c.error_stream = $stderr
  c.pactfile_write_order = :chronological
  c.treat_all_number_classes_as_equivalent = true

  c
end

Instance Method Details

#body_differ_for_content_type(content_type) ⇒ Object



100
101
102
103
104
105
106
107
108
109
# File 'lib/pact/configuration.rb', line 100

def body_differ_for_content_type content_type
  differ_registrations
    .find{ | registration | registration.first =~ content_type }
    .tap do |it|
      if content_type.nil? && it.last == Pact::TextDiffer
        error_stream.puts "WARN: No content type found, performing text diff on body"
        logger.warn "No content type found, performing text diff on body"
      end
    end.last
end

#color_enabledObject



115
116
117
118
# File 'lib/pact/configuration.rb', line 115

def color_enabled
  # Can't use ||= when the variable might be false, it will execute the expression if it's false
  defined?(@color_enabled) ? @color_enabled : true
end

#color_enabled=(color_enabled) ⇒ Object



120
121
122
# File 'lib/pact/configuration.rb', line 120

def color_enabled= color_enabled
  @color_enabled = color_enabled
end

#diff_formatter=(diff_formatter) ⇒ Object

Should this be deprecated in favour of register_diff_formatter???



80
81
82
83
# File 'lib/pact/configuration.rb', line 80

def diff_formatter= diff_formatter
  register_diff_formatter(/.*/, diff_formatter)
  register_diff_formatter(nil, diff_formatter)
end

#diff_formatter_for_content_type(content_type) ⇒ Object



90
91
92
# File 'lib/pact/configuration.rb', line 90

def diff_formatter_for_content_type content_type
  diff_formatter_registrations.find{ | registration | registration.first =~ content_type }.last
end

#log_pathObject



111
112
113
# File 'lib/pact/configuration.rb', line 111

def log_path
  log_dir + "/pact.log"
end

#register_body_differ(content_type, differ) ⇒ Object



94
95
96
97
98
# File 'lib/pact/configuration.rb', line 94

def register_body_differ content_type, differ
  key = content_type_regexp_for content_type
  validate_differ differ
  @differ_registrations << [key, differ]
end

#register_diff_formatter(content_type, diff_formatter) ⇒ Object



85
86
87
88
# File 'lib/pact/configuration.rb', line 85

def register_diff_formatter content_type, diff_formatter
  key = content_type_regexp_for content_type
  @diff_formatter_registrations << [key, diff_formatter_for(diff_formatter)]
end