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.



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

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

Instance Attribute Details

#error_streamObject

Returns the value of attribute error_stream.



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

def error_stream
  @error_stream
end

#log_dirObject

Returns the value of attribute log_dir.



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

def log_dir
  @log_dir
end

#loggerObject



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

def logger
  @logger ||= create_logger
end

#output_streamObject

Returns the value of attribute output_stream.



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

def output_stream
  @output_stream
end

#pact_dirObject

Returns the value of attribute pact_dir.



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

def pact_dir
  @pact_dir
end

#pactfile_write_orderObject

Returns the value of attribute pactfile_write_order.



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

def pactfile_write_order
  @pactfile_write_order
end

#tmp_dirObject

Returns the value of attribute tmp_dir.



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

def tmp_dir
  @tmp_dir
end

#treat_all_number_classes_as_equivalentObject

when using type based matching



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

def treat_all_number_classes_as_equivalent
  @treat_all_number_classes_as_equivalent
end

Class Method Details

.default_configurationObject



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

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



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

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



116
117
118
119
120
121
# File 'lib/pact/configuration.rb', line 116

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

#color_enabled=(color_enabled) ⇒ Object



123
124
125
# File 'lib/pact/configuration.rb', line 123

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???



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

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



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

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

#log_pathObject



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

def log_path
  log_dir + "/pact.log"
end

#register_body_differ(content_type, differ) ⇒ Object



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

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



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

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