kronk 1.7.2 → 1.7.3

Sign up to get free protection for your applications and to get access to all the features.
data/History.rdoc CHANGED
@@ -1,3 +1,15 @@
1
+ === 1.7.3 / 2011-10-25
2
+
3
+ * Bugfixes:
4
+
5
+ * Handling for parent paths with path matchers.
6
+
7
+ * Renamed Path::PathMatch to Path::Match.
8
+
9
+ * Fix for benchmark output under ruby 1.8.7.
10
+
11
+ * Documentation cleanup.
12
+
1
13
  === 1.7.2 / 2011-10-10
2
14
 
3
15
  * Bugfixes:
data/Manifest.txt CHANGED
@@ -19,7 +19,7 @@ lib/kronk/diff/color_format.rb
19
19
  lib/kronk/diff/output.rb
20
20
  lib/kronk/path.rb
21
21
  lib/kronk/path/matcher.rb
22
- lib/kronk/path/path_match.rb
22
+ lib/kronk/path/match.rb
23
23
  lib/kronk/path/transaction.rb
24
24
  lib/kronk/player.rb
25
25
  lib/kronk/player/benchmark.rb
data/lib/kronk.rb CHANGED
@@ -14,7 +14,7 @@ require 'yaml'
14
14
  class Kronk
15
15
 
16
16
  # This gem's version.
17
- VERSION = '1.7.2'
17
+ VERSION = '1.7.3'
18
18
 
19
19
  require 'kronk/constants'
20
20
  require 'kronk/queue_runner'
@@ -27,7 +27,7 @@ class Kronk
27
27
  require 'kronk/player/input_reader'
28
28
  require 'kronk/cmd'
29
29
  require 'kronk/path'
30
- require 'kronk/path/path_match'
30
+ require 'kronk/path/match'
31
31
  require 'kronk/path/matcher'
32
32
  require 'kronk/path/transaction'
33
33
  require 'kronk/data_string'
@@ -354,7 +354,7 @@ class Kronk
354
354
 
355
355
  resp
356
356
 
357
- rescue SocketError, Errno::ENOENT, Errno::ECONNREFUSED
357
+ rescue SocketError, SystemCallError
358
358
  raise NotFoundError, "#{uri} could not be found"
359
359
 
360
360
  rescue Timeout::Error
data/lib/kronk/cmd.rb CHANGED
@@ -537,7 +537,7 @@ Parse and run diffs against data from live and cached http responses.
537
537
 
538
538
  exit 1 unless success
539
539
 
540
- rescue Kronk::Exception, Errno::ECONNRESET => e
540
+ rescue Kronk::Exception, SystemCallError => e
541
541
  error e.message, e.backtrace
542
542
  exit 2
543
543
  end
@@ -15,13 +15,13 @@ class Kronk
15
15
  # # }
16
16
  #
17
17
  # dstr.meta[dstr.index("\"a\"")]
18
- # # /
18
+ # # []
19
19
  #
20
20
  # dstr.meta[dstr.index("\"foo\"")]
21
- # # /a
21
+ # # ['a']
22
22
  #
23
23
  # dstr.meta[dstr.index("\"two\"")]
24
- # # /c/1
24
+ # # ['c', 1]
25
25
 
26
26
  class DataString < String
27
27
 
data/lib/kronk/diff.rb CHANGED
@@ -45,7 +45,7 @@ class Kronk
45
45
  @diff_ary = nil
46
46
  @char = opts[:char] || /\r?\n/
47
47
  @meta = []
48
- @output = Output.new self, opts
48
+ @output = Output.new opts
49
49
  end
50
50
 
51
51
 
@@ -55,10 +55,10 @@ class Kronk
55
55
  # str1 = "match1\nin str2\nmore str2\nmatch2\nstr2 val"
56
56
  #
57
57
  # Diff.new(str1, str2).create_diff
58
- # ["match 1",
59
- # [[], ["in str2", "more str2"]],
60
- # "match 2",
61
- # [["str1 val"], ["str2 val"]]]
58
+ # #=> ["match 1",
59
+ # # [[], ["in str2", "more str2"]],
60
+ # # "match 2",
61
+ # # [["str1 val"], ["str2 val"]]]
62
62
 
63
63
  def create_diff
64
64
  diff_ary = []
@@ -112,7 +112,7 @@ class Kronk
112
112
 
113
113
 
114
114
  ##
115
- # Recursively finds common sequences between two arrays and returns
115
+ # Finds non-overlapping common sequences between two arrays and returns
116
116
  # them in the order they occur as an array of arrays:
117
117
  # find_common arr1, arr2
118
118
  # #=> [[size, arr1_index, arr2_index], [size, arr1_index, arr2_index],...]
@@ -145,10 +145,12 @@ class Kronk
145
145
 
146
146
  ##
147
147
  # Returns all common sequences between to arrays ordered by sequence length
148
- # according to the following format:
148
+ # (including overlapping ones) according to the following format:
149
149
  # [[[len1, ix, iy], [len1, ix, iy]],[[len2, ix, iy]]]
150
150
  # # e.g.
151
151
  # [nil,[[1,2,3],[1,2,5]],nil,[[3,4,5],[3,6,9]]
152
+ #
153
+ # Output is indexed by sequence size.
152
154
 
153
155
  def common_sequences arr1, arr2, &block
154
156
  sequences = []
@@ -190,22 +192,15 @@ class Kronk
190
192
  end
191
193
 
192
194
 
193
- def yield_sequences sequences, dist=0, &block
194
- while sequences.length > dist
195
- item = sequences.pop
196
- next unless item
197
- item.each(&block)
198
- end
199
- end
200
-
201
-
202
195
  ##
203
- # Returns a formatted output as a string.
196
+ # Returns a formatted output as a String.
204
197
 
205
- def formatted opts={}
206
- @output.render if any?
198
+ def formatted
199
+ ( @output.render diff_array, @meta if any? ).to_s
207
200
  end
208
201
 
202
+ alias to_s formatted
203
+
209
204
 
210
205
  ##
211
206
  # Returns true if any diff is found.
@@ -233,11 +228,14 @@ class Kronk
233
228
  alias to_a diff_array
234
229
 
235
230
 
236
- ##
237
- # Returns a diff string with the default format.
231
+ private
238
232
 
239
- def to_s
240
- formatted
233
+ def yield_sequences sequences, dist=0, &block # :nodoc:
234
+ while sequences.length > dist
235
+ item = sequences.pop
236
+ next unless item
237
+ item.each(&block)
238
+ end
241
239
  end
242
240
  end
243
241
  end
@@ -13,6 +13,10 @@ class Kronk::Diff
13
13
  attr_accessor :context, :format, :lindex, :rindex, :llen, :rlen,
14
14
  :lmeta, :rmeta
15
15
 
16
+ ##
17
+ # Create a new Section to render, with a formatter, lines column
18
+ # width, and start indexes for left and right side.
19
+
16
20
  def initialize format, line_num_width=nil, lindex=0, rindex=0
17
21
  @format = format
18
22
  @cwidth = line_num_width
@@ -27,6 +31,13 @@ class Kronk::Diff
27
31
  end
28
32
 
29
33
 
34
+ ##
35
+ # Append a line or diff section to the section.
36
+ # If obj is a String, common section is assumed, if obj is an Array,
37
+ # a diff section is assumed.
38
+ #
39
+ # Metadata is optional but must be an Array of 2 items if given.
40
+
30
41
  def add obj, meta=nil
31
42
  @lmeta, @rmeta = meta if meta && !@lmeta && !@rmeta
32
43
  @lmeta = ary_to_path @lmeta if Array === @rmeta
@@ -43,7 +54,37 @@ class Kronk::Diff
43
54
  end
44
55
 
45
56
 
46
- def add_common obj
57
+ ##
58
+ # Create a Kronk::Path String from an Array. Used when the meta data
59
+ # given for either side of the diff is an Array.
60
+
61
+ def ary_to_path ary
62
+ "#{Kronk::Path::DCH}#{Kronk::Path.join ary}"
63
+ end
64
+
65
+
66
+ ##
67
+ # Build the section String output once all lines and meta has been
68
+ # added.
69
+
70
+ def render
71
+ cleft = "#{@lindex+1},#{@llen}"
72
+ cright = "#{@rindex+1},#{@rlen}"
73
+
74
+ if @lmeta != @rmeta && @lmeta && @rmeta
75
+ cleft << " " << @lmeta
76
+ cright << " " << @rmeta
77
+ else
78
+ info = @lmeta || @rmeta
79
+ end
80
+
81
+ [@format.context(cleft, cright, info), *@lines]
82
+ end
83
+
84
+
85
+ private
86
+
87
+ def add_common obj # :nodoc:
47
88
  @llen += 1
48
89
  @rlen += 1
49
90
  @context += 1
@@ -55,7 +96,7 @@ class Kronk::Diff
55
96
  end
56
97
 
57
98
 
58
- def add_left obj
99
+ def add_left obj # :nodoc:
59
100
  @llen += 1
60
101
  @context = 0
61
102
 
@@ -64,33 +105,13 @@ class Kronk::Diff
64
105
  end
65
106
 
66
107
 
67
- def add_right obj
108
+ def add_right obj # :nodoc:
68
109
  @rlen += 1
69
110
  @context = 0
70
111
 
71
112
  line_nums = @format.lines [nil, @rlen+@rindex], @cwidth if @cwidth
72
113
  @lines << "#{line_nums}#{@format.added obj}"
73
114
  end
74
-
75
-
76
- def ary_to_path ary
77
- "#{Kronk::Path::DCH}#{Kronk::Path.join ary}"
78
- end
79
-
80
-
81
- def render
82
- cleft = "#{@lindex+1},#{@llen}"
83
- cright = "#{@rindex+1},#{@rlen}"
84
-
85
- if @lmeta != @rmeta && @lmeta && @rmeta
86
- cleft << " " << @lmeta
87
- cright << " " << @rmeta
88
- else
89
- info = @lmeta || @rmeta
90
- end
91
-
92
- [@format.context(cleft, cright, info), *@lines]
93
- end
94
115
  end
95
116
 
96
117
 
@@ -122,9 +143,7 @@ class Kronk::Diff
122
143
  # :labels:: Array - Left and right names to display; default %w{left right}
123
144
  # :show_lines:: Boolean - Show lines in diff; default false
124
145
 
125
- def initialize diff, opts={}
126
- @diff = diff
127
-
146
+ def initialize opts={}
128
147
  @format =
129
148
  self.class.formatter(opts[:format] || Kronk.config[:diff_format]) ||
130
149
  AsciiFormat
@@ -140,46 +159,78 @@ class Kronk::Diff
140
159
 
141
160
  @show_lines = opts[:show_lines] || Kronk.config[:show_lines]
142
161
  @section = false
143
-
144
- lines1 = diff.str1.lines.count
145
- lines2 = diff.str2.lines.count
146
- @cwidth = (lines1 > lines2 ? lines1 : lines2).to_s.length
147
162
  end
148
163
 
149
164
 
150
- def continue_section? i
165
+ ##
166
+ # Determine if index i is a part of a section to render, including
167
+ # surrounding context.
168
+
169
+ def section? i, diff_ary
151
170
  !@context ||
152
- !!@diff.diff_array[i,@context+1].to_a.find{|da| Array === da}
171
+ !!diff_ary[i,@context+1].to_a.find{|da| Array === da}
153
172
  end
154
173
 
155
174
 
156
- def start_section? i
157
- !@section && continue_section?(i)
175
+ ##
176
+ # Determine if index i is the beginning of a diff section to render,
177
+ # including surrounding context.
178
+
179
+ def start_section? i, diff_ary
180
+ !@section && section?(i, diff_ary)
158
181
  end
159
182
 
160
183
 
161
- def end_section? i
184
+ ##
185
+ # Determine if index i is the end of a diff section to render, including
186
+ # surrounding context.
187
+
188
+ def end_section? i, diff_ary
162
189
  @section &&
163
- (i >= @diff.diff_array.length ||
164
- !continue_section?(i) && @context && @section.context >= @context)
190
+ (i >= diff_ary.length ||
191
+ !section?(i, diff_ary) && @context && @section.context >= @context)
192
+ end
193
+
194
+
195
+ ##
196
+ # Determine the width of the line number column from a diff Array.
197
+
198
+ def line_col_width diff_ary
199
+ lines1, lines2 = diff_ary.inject([0,0]) do |prev, obj|
200
+ if Array === obj
201
+ [prev[0] + obj[0].length, prev[1] + obj[1].length]
202
+ else
203
+ [prev[0] + 1, prev[1] + 1]
204
+ end
205
+ end
206
+
207
+ (lines1 > lines2 ? lines1 : lines2).to_s.length
165
208
  end
166
209
 
167
210
 
168
- def render force=false
211
+ ##
212
+ # Render a diff String from a diff Array, with optional metadata.
213
+ #
214
+ # The meta argument must be an Array of 2 Arrays, one for each side of
215
+ # the diff.
216
+
217
+ def render diff_ary, meta=[]
169
218
  output = []
170
219
  output << @format.head(*@labels)
171
220
 
172
221
  line1 = line2 = 0
173
- lwidth = @show_lines && @cwidth
222
+ lwidth = line_col_width diff_ary if @show_lines
174
223
 
175
- @diff.diff_array.each_with_index do |item, i|
176
- @section = Section.new @format, lwidth, line1, line2 if start_section? i
177
- @section.add item, @diff.meta[i] if @section
224
+ diff_ary.each_with_index do |item, i|
225
+ @section = Section.new @format, lwidth, line1, line2 if
226
+ start_section? i, diff_ary
227
+
228
+ @section.add item, meta[i] if @section
178
229
 
179
230
  line1 += Array === item ? item[0].length : 1
180
231
  line2 += Array === item ? item[1].length : 1
181
232
 
182
- if end_section?(i+1)
233
+ if end_section?(i+1, diff_ary)
183
234
  output.concat @section.render
184
235
  @section = false
185
236
  end
@@ -187,7 +238,5 @@ class Kronk::Diff
187
238
 
188
239
  output.join(@join_ch)
189
240
  end
190
-
191
- alias to_s render
192
241
  end
193
242
  end
data/lib/kronk/path.rb CHANGED
@@ -122,6 +122,13 @@ class Kronk
122
122
  ##
123
123
  # Returns a path-keyed data hash. Be careful of mixed key types in hashes
124
124
  # as Symbols and Strings both use #to_s.
125
+ #
126
+ # Path.pathed {'foo' => %w{thing bar}, 'fizz' => {'buzz' => 123}}
127
+ # #=> {
128
+ # # '/foo/0' => 'thing',
129
+ # # '/foo/1' => 'bar',
130
+ # # '/fizz/buzz' => 123
131
+ # # }
125
132
 
126
133
  def self.pathed data, escape=true
127
134
  new_data = {}
@@ -1,7 +1,7 @@
1
1
  ##
2
2
  # Represents the single match of a relative path against a data set.
3
3
 
4
- class Kronk::Path::PathMatch < Array
4
+ class Kronk::Path::Match < Array
5
5
 
6
6
  attr_accessor :matches, :splat
7
7
 
@@ -12,6 +12,14 @@ class Kronk::Path::PathMatch < Array
12
12
  end
13
13
 
14
14
 
15
+ def [] *args
16
+ path_match = super
17
+ path_match.matches = @matches.dup
18
+ path_match.splat = @splat.map{|key, sp| [key, sp.dup]}
19
+ path_match
20
+ end
21
+
22
+
15
23
  def append_splat id, key # :nodoc:
16
24
  if @splat[-1] && @splat[-1][0] == id
17
25
  @splat[-1][1] << key
@@ -31,6 +31,14 @@ class Kronk::Path::Matcher
31
31
 
32
32
 
33
33
  attr_reader :key, :value, :regex_opts
34
+ attr_accessor :recursive
35
+
36
+ ##
37
+ # New instance of Matcher. Options supported:
38
+ # :key:: String - The path item key to match.
39
+ # :value:: String - The path item value to match.
40
+ # :recursive:: Boolean - Look for path item recursively.
41
+ # :regex_opts:: Fixnum - representing the Regexp options.
34
42
 
35
43
  def initialize opts={}
36
44
  @regex_opts = opts[:regex_opts]
@@ -57,7 +65,7 @@ class Kronk::Path::Matcher
57
65
  ##
58
66
  # Universal iterator for Hash and Array like objects.
59
67
  # The data argument must either respond to both :each_with_index
60
- # and :length, or respond to :each yielding a key/value pair.
68
+ # and :length, or respond to :has_key? and :each yielding a key/value pair.
61
69
 
62
70
  def each_data_item data, &block
63
71
  if data.respond_to?(:has_key?) && data.respond_to?(:each)
@@ -74,7 +82,7 @@ class Kronk::Path::Matcher
74
82
 
75
83
 
76
84
  ##
77
- # Finds data with the given key and value matcher, optionally recursively.
85
+ # Finds data with the given key and value matcher, optionally recursive.
78
86
  # Yields data, key and path Array when block is given.
79
87
  # Returns an Array of path arrays.
80
88
 
@@ -82,8 +90,8 @@ class Kronk::Path::Matcher
82
90
  return [] unless Array === data || Hash === data
83
91
 
84
92
  paths = []
85
- path ||= Kronk::Path::PathMatch.new
86
- path = Kronk::Path::PathMatch.new path if path.class == Array
93
+ path ||= Kronk::Path::Match.new
94
+ path = Kronk::Path::Match.new path if path.class == Array
87
95
 
88
96
  each_data_item data do |key, value|
89
97
  c_path = path.dup << key
@@ -182,12 +190,4 @@ class Kronk::Path::Matcher
182
190
  str
183
191
  end
184
192
  end
185
-
186
-
187
- ##
188
- # Should this matcher try and find a match recursively.
189
-
190
- def recursive?
191
- @recursive
192
- end
193
193
  end
data/lib/kronk/player.rb CHANGED
@@ -8,7 +8,7 @@ class Kronk
8
8
 
9
9
  class Player < QueueRunner
10
10
 
11
- RESCUABLE = [Kronk::Exception, Errno::ECONNRESET, URI::InvalidURIError]
11
+ RESCUABLE = [Kronk::Exception, SystemCallError, URI::InvalidURIError]
12
12
 
13
13
  attr_accessor :input, :output
14
14
 
@@ -172,7 +172,7 @@ class Kronk
172
172
 
173
173
 
174
174
  ##
175
- # Check if w6ce5e2ce're only processing a single case.
175
+ # Check if we're only processing a single case.
176
176
  # If so, yield a single item and return immediately.
177
177
 
178
178
  def single_request?
@@ -53,7 +53,7 @@ class Kronk
53
53
  @slowest = time if !@slowest || @slowest < time
54
54
  @fastest = time if !@fastest || @fastest > time
55
55
 
56
- log_path resp.uri.to_s, time if resp.uri
56
+ log_req resp.request, time if resp.request
57
57
 
58
58
  @total_bytes += resp.raw.bytes.count
59
59
 
@@ -63,13 +63,16 @@ class Kronk
63
63
  end
64
64
 
65
65
 
66
- def log_path path, time
67
- path = "/" if !path || path.empty?
68
- @paths[path] ||= [0, 0]
69
- pcount = @paths[path][1] + 1
70
- @paths[path][0] = (@paths[path][0] * @paths[path][1] + time) / pcount
71
- @paths[path][0] = @paths[path][0].round @precision
72
- @paths[path][1] = pcount
66
+ def log_req req, time
67
+ uri = req.uri.dup
68
+ uri.query = nil
69
+ uri = "#{req.http_method} #{uri.to_s}"
70
+
71
+ @paths[uri] ||= [0, 0]
72
+ pcount = @paths[uri][1] + 1
73
+ @paths[uri][0] = (@paths[uri][0] * @paths[uri][1] + time) / pcount
74
+ @paths[uri][0] = @paths[uri][0].round @precision
75
+ @paths[uri][1] = pcount
73
76
  end
74
77
 
75
78
 
@@ -173,7 +176,7 @@ Request Percentages (ms)
173
176
  unless slowest_reqs.empty?
174
177
  out << "
175
178
  Avg. Slowest Requests (ms, #)
176
- #{slowest_reqs.map{|arr| " #{arr[1]} #{arr[0]}"}.join "\n" }"
179
+ #{slowest_reqs.map{|arr| " #{arr[1].inspect} #{arr[0]}"}.join "\n" }"
177
180
  end
178
181
 
179
182
  out
@@ -1,5 +1,40 @@
1
1
  class Kronk
2
2
 
3
+ ##
4
+ # A basic queue and input processor that supports both a multi-threaded and
5
+ # evented backend (using EventMachine).
6
+ #
7
+ # Input is optional and specified by creating an input trigger
8
+ # (passing a block to on(:input)).
9
+ # Input will be used to fill queue as the queue gets depleted by
10
+ # being processed.
11
+ #
12
+ # qrunner = QueueRunner.new
13
+ # qrunner.concurrency = 20 # thread count
14
+ # qrunner.number = 100 # process 100 queue items
15
+ #
16
+ # file = File.open "example.log", "r"
17
+ #
18
+ # qrunner.on :input do
19
+ # if file.eof?
20
+ # qrunner.finish
21
+ # else
22
+ # file.readline
23
+ # end
24
+ # end
25
+ #
26
+ # qrunner.on :complete do
27
+ # file.close
28
+ # puts "DONE!"
29
+ # end
30
+ #
31
+ # # If running in multi-threaded mode, item mutex will also be passed
32
+ # # as optional second argument.
33
+ # qrunner.run do |queue_item|
34
+ # # Do something with item.
35
+ # # When running in evented mode, make sure this section is non-blocking.
36
+ # end
37
+
3
38
  class QueueRunner
4
39
 
5
40
  ##
@@ -57,6 +92,17 @@ class Kronk
57
92
  end
58
93
 
59
94
 
95
+ ##
96
+ # Stop runner processing gracefully.
97
+
98
+ def finish
99
+ stop_input!
100
+ EM.stop if defined?(EM) && EM.reactor_running?
101
+ @threads.each{|t| t.join}
102
+ @threads.clear
103
+ end
104
+
105
+
60
106
  ##
61
107
  # Immediately end all runner processing and threads.
62
108
 
@@ -106,10 +152,7 @@ class Kronk
106
152
  @count += 1
107
153
  end
108
154
 
109
- @threads.each{|t| t.join}
110
- @threads.clear
111
-
112
- stop_input!
155
+ finish
113
156
  end
114
157
 
115
158
 
@@ -136,7 +179,7 @@ class Kronk
136
179
  EM.add_periodic_timer do
137
180
  if finished?
138
181
  next if EM.connection_count > 0
139
- kill
182
+ finish
140
183
  next
141
184
  end
142
185
 
@@ -3,7 +3,7 @@ require 'test/test_helper'
3
3
  class TestPathMatch < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
- @pmatch = Kronk::Path::PathMatch.new %w{path to resource}
6
+ @pmatch = Kronk::Path::Match.new %w{path to resource}
7
7
  @pmatch.matches = %w{this is 4 foo}
8
8
 
9
9
  @splat = @pmatch.dup
@@ -30,7 +30,7 @@ class TestPathMatcher < Test::Unit::TestCase
30
30
  def test_new
31
31
  assert_equal %r{\Afoo(.*)\Z}, @matcher.key
32
32
  assert_equal %r{\A(.*)bar(.*)\Z}, @matcher.value
33
- assert !@matcher.recursive?
33
+ assert !@matcher.recursive
34
34
  end
35
35
 
36
36
 
@@ -158,7 +158,7 @@ class TestPathMatcher < Test::Unit::TestCase
158
158
  :recursive => true
159
159
  paths = matcher.find_in @data
160
160
  assert_equal [[:key1, :key1a, 3, :findme]], paths
161
- assert_equal Kronk::Path::PathMatch, paths.first.class
161
+ assert_equal Kronk::Path::Match, paths.first.class
162
162
 
163
163
  assert_equal ["me", "in"], paths.first.matches
164
164
  end
@@ -176,7 +176,7 @@ class TestPathMatcher < Test::Unit::TestCase
176
176
  ]
177
177
 
178
178
  assert_equal expected_paths, (expected_paths | paths)
179
- assert_equal Kronk::Path::PathMatch, paths.first.class
179
+ assert_equal Kronk::Path::Match, paths.first.class
180
180
 
181
181
  assert_equal ["findme"], paths.first.matches
182
182
  end
@@ -188,7 +188,7 @@ class TestPathMatcher < Test::Unit::TestCase
188
188
  :recursive => true
189
189
  paths = matcher.find_in @data
190
190
  assert_equal [[:key1, :key1a, 3, :findme]], paths
191
- assert_equal Kronk::Path::PathMatch, paths.first.class
191
+ assert_equal Kronk::Path::Match, paths.first.class
192
192
 
193
193
  assert_equal ["findme", "in"], paths.first.matches
194
194
  end
@@ -211,7 +211,7 @@ class TestPathMatcher < Test::Unit::TestCase
211
211
  end
212
212
 
213
213
  assert_equal expected_paths, (expected_paths | paths)
214
- assert_equal Kronk::Path::PathMatch, paths.first.class
214
+ assert_equal Kronk::Path::Match, paths.first.class
215
215
  assert_equal expected_paths, (expected_paths | paths.map{|p| p.matches})
216
216
  end
217
217
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: kronk
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.7.2
5
+ version: 1.7.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jeremie Castagna
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-10-10 00:00:00 Z
13
+ date: 2011-10-25 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -125,7 +125,7 @@ files:
125
125
  - lib/kronk/diff/output.rb
126
126
  - lib/kronk/path.rb
127
127
  - lib/kronk/path/matcher.rb
128
- - lib/kronk/path/path_match.rb
128
+ - lib/kronk/path/match.rb
129
129
  - lib/kronk/path/transaction.rb
130
130
  - lib/kronk/player.rb
131
131
  - lib/kronk/player/benchmark.rb