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 =
[
  [/.*/, Pact::Matchers::UnixDiffFormatter],
  [NilMatcher, Pact::Matchers::UnixDiffFormatter]
]
DIFFERS =
[
  [/json/, Pact::JsonDiffer],
  [/application\/x\-www\-form\-urlencoded/, Pact::FormDiffer],
  [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.



62
63
64
65
# File 'lib/pact/configuration.rb', line 62

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

Instance Attribute Details

#error_streamObject

Returns the value of attribute error_stream.



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

def error_stream
  @error_stream
end

#log_dirObject

Returns the value of attribute log_dir.



42
43
44
# File 'lib/pact/configuration.rb', line 42

def log_dir
  @log_dir
end

#loggerObject



67
68
69
# File 'lib/pact/configuration.rb', line 67

def logger
  @logger ||= create_logger
end

#output_streamObject

Returns the value of attribute output_stream.



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

def output_stream
  @output_stream
end

#pact_dirObject

Returns the value of attribute pact_dir.



41
42
43
# File 'lib/pact/configuration.rb', line 41

def pact_dir
  @pact_dir
end

#tmp_dirObject

Returns the value of attribute tmp_dir.



43
44
45
# File 'lib/pact/configuration.rb', line 43

def tmp_dir
  @tmp_dir
end

Class Method Details

.default_configurationObject



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/pact/configuration.rb', line 50

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
end

Instance Method Details

#body_differ_for_content_type(content_type) ⇒ Object



92
93
94
95
96
97
98
99
100
101
# File 'lib/pact/configuration.rb', line 92

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



107
108
109
110
# File 'lib/pact/configuration.rb', line 107

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



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

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



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

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



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

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

#log_pathObject



103
104
105
# File 'lib/pact/configuration.rb', line 103

def log_path
  log_dir + "/pact.log"
end

#register_body_differ(content_type, differ) ⇒ Object



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

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



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

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