kronk 1.8.5 → 1.8.6
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.
- data/History.rdoc +12 -0
- data/Manifest.txt +0 -10
- data/README.rdoc +7 -2
- data/Rakefile +1 -0
- data/lib/kronk.rb +2 -5
- data/lib/kronk/cmd.rb +3 -3
- data/lib/kronk/data_string.rb +1 -1
- data/lib/kronk/diff/output.rb +2 -2
- data/lib/kronk/player.rb +1 -0
- data/lib/kronk/player/benchmark.rb +1 -0
- data/lib/kronk/player/suite.rb +20 -16
- data/lib/kronk/request.rb +9 -2
- data/lib/kronk/response.rb +2 -2
- data/lib/kronk/test/assertions.rb +4 -4
- data/test/test_helper.rb +1 -1
- metadata +49 -27
- data/lib/kronk/core_ext.rb +0 -110
- data/lib/kronk/path.rb +0 -334
- data/lib/kronk/path/match.rb +0 -130
- data/lib/kronk/path/matcher.rb +0 -193
- data/lib/kronk/path/transaction.rb +0 -341
- data/test/test_core_ext.rb +0 -74
- data/test/test_path.rb +0 -317
- data/test/test_path_match.rb +0 -105
- data/test/test_path_matcher.rb +0 -371
- data/test/test_transaction.rb +0 -520
data/test/test_core_ext.rb
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'test/test_helper'
|
2
|
-
require 'lib/kronk/core_ext'
|
3
|
-
|
4
|
-
class TestCoreExt < Test::Unit::TestCase
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@array = [:a, :b, {:foo => "bar", :bar => [:a, :b, {:foo => "other"}]}, :c]
|
8
|
-
@hash = {:foo => "bar", :bar => [:a, :b, {:foo => "other"}], :a => [1,2,3]}
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
def test_has_path_array
|
13
|
-
assert @array.has_path?("**/foo")
|
14
|
-
assert @array.has_path?("**/foo=other")
|
15
|
-
assert !@array.has_path?("**/foobar")
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
def test_has_path_hash
|
20
|
-
assert @hash.has_path?("**/foo")
|
21
|
-
assert @hash.has_path?("**/foo=other")
|
22
|
-
assert !@hash.has_path?("**/foobar")
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
def test_find_data_array
|
27
|
-
out = @array.find_data "**/foo"
|
28
|
-
assert_equal({[2, :foo] => "bar", [2, :bar, 2, :foo] => "other"}, out)
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
def test_find_data_array_empty
|
33
|
-
out = @array.find_data "**/foobar"
|
34
|
-
assert_equal({}, out)
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
def test_find_data_array_block
|
39
|
-
collected = []
|
40
|
-
|
41
|
-
@array.find_data "**/foo" do |data, key, path|
|
42
|
-
collected << [data, key, path]
|
43
|
-
end
|
44
|
-
|
45
|
-
assert_equal 2, collected.length
|
46
|
-
assert collected.include?([@array[2], :foo, [2, :foo]])
|
47
|
-
assert collected.include?([@array[2][:bar][2], :foo, [2, :bar, 2, :foo]])
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
def test_find_data_hash
|
52
|
-
out = @hash.find_data "**/foo"
|
53
|
-
assert_equal({[:foo] => "bar", [:bar, 2, :foo] => "other"}, out)
|
54
|
-
end
|
55
|
-
|
56
|
-
|
57
|
-
def test_find_data_hash_empty
|
58
|
-
out = @hash.find_data "**/foobar"
|
59
|
-
assert_equal({}, out)
|
60
|
-
end
|
61
|
-
|
62
|
-
|
63
|
-
def test_find_data_hash_block
|
64
|
-
collected = []
|
65
|
-
|
66
|
-
@hash.find_data "**/foo" do |data, key, path|
|
67
|
-
collected << [data, key, path]
|
68
|
-
end
|
69
|
-
|
70
|
-
assert_equal 2, collected.length
|
71
|
-
assert collected.include?([@hash, :foo, [:foo]])
|
72
|
-
assert collected.include?([@hash[:bar][2], :foo, [:bar, 2, :foo]])
|
73
|
-
end
|
74
|
-
end
|
data/test/test_path.rb
DELETED
@@ -1,317 +0,0 @@
|
|
1
|
-
require 'test/test_helper'
|
2
|
-
|
3
|
-
class TestPath < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@data = {
|
7
|
-
:key1 => {
|
8
|
-
:key1a => [
|
9
|
-
"foo",
|
10
|
-
"bar",
|
11
|
-
"foobar",
|
12
|
-
{:findme => "thing"}
|
13
|
-
],
|
14
|
-
'key1b' => "findme"
|
15
|
-
},
|
16
|
-
'findme' => [
|
17
|
-
123,
|
18
|
-
456,
|
19
|
-
{:findme => 123456}
|
20
|
-
],
|
21
|
-
:key2 => "foobar",
|
22
|
-
:key3 => {
|
23
|
-
:key3a => ["val1", "val2", "val3"]
|
24
|
-
}
|
25
|
-
}
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
|
-
def test_find_wildcard
|
30
|
-
keys = []
|
31
|
-
data_points = []
|
32
|
-
|
33
|
-
Kronk::Path.find "*/key1?", @data do |data, key, path|
|
34
|
-
keys << key.to_s
|
35
|
-
data_points << data
|
36
|
-
end
|
37
|
-
|
38
|
-
assert_equal ['key1a', 'key1b'], keys.sort
|
39
|
-
assert_equal [@data[:key1], @data[:key1]], data_points
|
40
|
-
end
|
41
|
-
|
42
|
-
|
43
|
-
def test_find_recursive
|
44
|
-
keys = []
|
45
|
-
paths = []
|
46
|
-
data_points = []
|
47
|
-
|
48
|
-
Kronk::Path.find "**/findme", @data do |data, key, path|
|
49
|
-
keys << key.to_s
|
50
|
-
data_points << data
|
51
|
-
paths << path
|
52
|
-
end
|
53
|
-
|
54
|
-
expected_paths =
|
55
|
-
[[:key1,:key1a,3,:findme], ["findme"], ["findme",2,:findme]]
|
56
|
-
|
57
|
-
assert_equal 3, keys.length
|
58
|
-
assert_equal 1, keys.uniq.length
|
59
|
-
assert_equal "findme", keys.first
|
60
|
-
|
61
|
-
assert data_points.include?(@data)
|
62
|
-
assert data_points.include?(@data[:key1][:key1a].last)
|
63
|
-
assert data_points.include?(@data['findme'].last)
|
64
|
-
|
65
|
-
assert_equal expected_paths, (expected_paths | paths)
|
66
|
-
|
67
|
-
splat_path = paths.find{|pa| pa[0] == :key1}
|
68
|
-
assert_equal [:key1, :key1a, 3], splat_path.splat[0][1]
|
69
|
-
end
|
70
|
-
|
71
|
-
|
72
|
-
def test_find_recursive_many_splat
|
73
|
-
path_match = nil
|
74
|
-
|
75
|
-
Kronk::Path.find "**/key1a/**=thing", @data do |data, key, path|
|
76
|
-
path_match = path
|
77
|
-
end
|
78
|
-
|
79
|
-
assert path_match
|
80
|
-
assert_equal [:key1], path_match.splat[0][1]
|
81
|
-
assert_equal [3], path_match.splat[1][1]
|
82
|
-
end
|
83
|
-
|
84
|
-
|
85
|
-
def test_find_recursive_many_splat_end_match
|
86
|
-
path_match = nil
|
87
|
-
|
88
|
-
Kronk::Path.find "**/key1a/**/*=thing", @data do |data, key, path|
|
89
|
-
path_match = path
|
90
|
-
end
|
91
|
-
|
92
|
-
assert path_match
|
93
|
-
assert_equal [:key1], path_match.splat[0][1]
|
94
|
-
assert_equal [3], path_match.splat[1][1]
|
95
|
-
end
|
96
|
-
|
97
|
-
|
98
|
-
def test_find_index
|
99
|
-
keys = []
|
100
|
-
data_points = []
|
101
|
-
|
102
|
-
Kronk::Path.find "*/*/0|1", @data do |data, key, path|
|
103
|
-
keys << key
|
104
|
-
data_points << data
|
105
|
-
end
|
106
|
-
|
107
|
-
assert_equal [1,0,1,0], keys
|
108
|
-
assert_equal 2, data_points.count(@data[:key1][:key1a])
|
109
|
-
assert_equal 2, data_points.count(@data[:key3][:key3a])
|
110
|
-
end
|
111
|
-
|
112
|
-
|
113
|
-
def test_find_data_recursive_wildcard_value
|
114
|
-
keys = []
|
115
|
-
paths = []
|
116
|
-
data_points = []
|
117
|
-
|
118
|
-
Kronk::Path.find "**=foo*", @data do |data, key, path|
|
119
|
-
keys << key
|
120
|
-
data_points << data
|
121
|
-
paths << path
|
122
|
-
end
|
123
|
-
|
124
|
-
expected_paths = [[:key1,:key1a,0], [:key1,:key1a,2], [:key2]]
|
125
|
-
|
126
|
-
assert_equal [0,2,:key2], ([0,2,:key2] | keys)
|
127
|
-
assert_equal expected_paths, (expected_paths | paths)
|
128
|
-
end
|
129
|
-
|
130
|
-
|
131
|
-
def test_pathed
|
132
|
-
expected = {
|
133
|
-
"/findme/0" => 123,
|
134
|
-
"/findme/1" => 456,
|
135
|
-
"/findme/2/findme" => 123456,
|
136
|
-
"/key1/key1a/0" => "foo",
|
137
|
-
"/key1/key1a/1" => "bar",
|
138
|
-
"/key1/key1a/2" => "foobar",
|
139
|
-
"/key1/key1a/3/findme" => "thing",
|
140
|
-
"/key1/key1b" => "findme",
|
141
|
-
"/key2" => "foobar",
|
142
|
-
"/key3/key3a/0" => "val1",
|
143
|
-
"/key3/key3a/1" => "val2",
|
144
|
-
"/key3/key3a/2" => "val3"
|
145
|
-
}
|
146
|
-
assert_equal expected, Kronk::Path.pathed(@data)
|
147
|
-
end
|
148
|
-
|
149
|
-
|
150
|
-
def test_pathed_esc
|
151
|
-
@data['findme'][2]['*thing?'] = {
|
152
|
-
".." => "parent",
|
153
|
-
"**" => "recurse",
|
154
|
-
"(hi|hey)" => "paren",
|
155
|
-
"more/here" => "path"
|
156
|
-
}
|
157
|
-
|
158
|
-
expected = {
|
159
|
-
"/findme/0" => 123,
|
160
|
-
"/findme/1" => 456,
|
161
|
-
"/findme/2/findme" => 123456,
|
162
|
-
|
163
|
-
"/findme/2/\\*thing\\?/\\.\\." => "parent",
|
164
|
-
"/findme/2/\\*thing\\?/\\*\\*" => "recurse",
|
165
|
-
"/findme/2/\\*thing\\?/\\(hi\\|hey\\)" => "paren",
|
166
|
-
"/findme/2/\\*thing\\?/more\\/here" => "path",
|
167
|
-
|
168
|
-
"/key1/key1a/0" => "foo",
|
169
|
-
"/key1/key1a/1" => "bar",
|
170
|
-
"/key1/key1a/2" => "foobar",
|
171
|
-
"/key1/key1a/3/findme" => "thing",
|
172
|
-
"/key1/key1b" => "findme",
|
173
|
-
"/key2" => "foobar",
|
174
|
-
"/key3/key3a/0" => "val1",
|
175
|
-
"/key3/key3a/1" => "val2",
|
176
|
-
"/key3/key3a/2" => "val3"
|
177
|
-
}
|
178
|
-
assert_equal expected, Kronk::Path.pathed(@data)
|
179
|
-
end
|
180
|
-
|
181
|
-
|
182
|
-
def test_pathed_not_esc
|
183
|
-
@data['findme'][2]['*thing?'] = {
|
184
|
-
".." => "parent",
|
185
|
-
"**" => "recurse",
|
186
|
-
"(hi|hey)" => "paren",
|
187
|
-
"more/here" => "path"
|
188
|
-
}
|
189
|
-
|
190
|
-
expected = {
|
191
|
-
"/findme/0" => 123,
|
192
|
-
"/findme/1" => 456,
|
193
|
-
"/findme/2/findme" => 123456,
|
194
|
-
|
195
|
-
"/findme/2/*thing?/.." => "parent",
|
196
|
-
"/findme/2/*thing?/**" => "recurse",
|
197
|
-
"/findme/2/*thing?/(hi|hey)" => "paren",
|
198
|
-
"/findme/2/*thing?/more/here" => "path",
|
199
|
-
|
200
|
-
"/key1/key1a/0" => "foo",
|
201
|
-
"/key1/key1a/1" => "bar",
|
202
|
-
"/key1/key1a/2" => "foobar",
|
203
|
-
"/key1/key1a/3/findme" => "thing",
|
204
|
-
"/key1/key1b" => "findme",
|
205
|
-
"/key2" => "foobar",
|
206
|
-
"/key3/key3a/0" => "val1",
|
207
|
-
"/key3/key3a/1" => "val2",
|
208
|
-
"/key3/key3a/2" => "val3"
|
209
|
-
}
|
210
|
-
assert_equal expected, Kronk::Path.pathed(@data, false)
|
211
|
-
end
|
212
|
-
|
213
|
-
|
214
|
-
def test_parse_path_str_yield
|
215
|
-
all_args = []
|
216
|
-
|
217
|
-
Kronk::Path.parse_path_str "path/**/to=foo/item" do |*args|
|
218
|
-
all_args << args
|
219
|
-
end
|
220
|
-
|
221
|
-
expected = [
|
222
|
-
[Kronk::Path::Matcher.new(:key => "path"), false],
|
223
|
-
[Kronk::Path::Matcher.new(:key => "to", :value => "foo",
|
224
|
-
:recursive => true), false],
|
225
|
-
[Kronk::Path::Matcher.new(:key => "item"), true],
|
226
|
-
]
|
227
|
-
|
228
|
-
assert_equal expected, all_args
|
229
|
-
end
|
230
|
-
|
231
|
-
|
232
|
-
def test_parse_path_str_simple
|
233
|
-
assert_path %w{path to item}, "path/to/item"
|
234
|
-
assert_path %w{path to item}, "///path//to/././item///"
|
235
|
-
assert_path %w{path to item}, "///path//to/./item///"
|
236
|
-
assert_path %w{path/to item}, "path\\/to/item"
|
237
|
-
|
238
|
-
assert_path %w{path/to item/ i}, "path\\/to/item\\//i"
|
239
|
-
|
240
|
-
assert_path [/\A(?:path\/\.to)\Z/i, /\A(?:item)\Z/i],
|
241
|
-
"path\\/.to/item", Regexp::IGNORECASE
|
242
|
-
|
243
|
-
assert_path ['path', /\A(?:to|for)\Z/, 'item'], "path/to|for/item"
|
244
|
-
end
|
245
|
-
|
246
|
-
|
247
|
-
def test_parse_path_str_value
|
248
|
-
assert_path ['path', ['to', 'foo'], 'item'], "path/to=foo/item"
|
249
|
-
assert_path ['path', ["*", 'foo'], 'item'], "path/*=foo/item"
|
250
|
-
assert_path ['path', [nil, 'foo'], 'item'], "path/=foo/item"
|
251
|
-
|
252
|
-
assert_path ['path', ['to', /\A(?:foo|bar)\Z/], 'item'],
|
253
|
-
"path/to=foo|bar/item"
|
254
|
-
|
255
|
-
assert_path \
|
256
|
-
[/\A(?:path)\Z/i, [/\A(?:to)\Z/i, /\A(?:foo)\Z/i], /\A(?:item)\Z/i],
|
257
|
-
"path/to=foo/item", Regexp::IGNORECASE
|
258
|
-
end
|
259
|
-
|
260
|
-
|
261
|
-
def test_parse_path_str_recur
|
262
|
-
assert_path ['path', ['to', 'foo', true], 'item'], "path/**/to=foo/item"
|
263
|
-
assert_path [['path', nil, true], 'to', 'item'], "**/**/path/to/item"
|
264
|
-
assert_path ['path', 'to', 'item', ["*", nil, true]], "path/to/item/**/**"
|
265
|
-
assert_path ['path', ["*", 'foo', true], 'item'], "path/**=foo/item"
|
266
|
-
end
|
267
|
-
|
268
|
-
|
269
|
-
def test_parse_path_str_parent
|
270
|
-
assert_path ['path', PARENT, 'item'], "path/../item"
|
271
|
-
assert_path ['path', [PARENT, 'foo'], 'item'], "path/..=foo/item"
|
272
|
-
assert_path ['path', ["*", 'foo', true], 'item'], "path/**/..=foo/item"
|
273
|
-
assert_path ['path', [nil, 'foo', true], 'item'], "path/**/=foo/item"
|
274
|
-
assert_path ['path', ['item', nil, true]], "path/**/../item"
|
275
|
-
assert_path ['path', PARENT, ['item', nil, true]], "path/../**/item"
|
276
|
-
end
|
277
|
-
|
278
|
-
|
279
|
-
def test_parse_regex_opts
|
280
|
-
path = "path/to/item///mix"
|
281
|
-
opts = Kronk::Path.parse_regex_opts! path
|
282
|
-
|
283
|
-
assert_equal "path/to/item/", path
|
284
|
-
|
285
|
-
expected_opts = Regexp::IGNORECASE | Regexp::EXTENDED | Regexp::MULTILINE
|
286
|
-
assert_equal expected_opts, opts
|
287
|
-
end
|
288
|
-
|
289
|
-
|
290
|
-
def test_parse_regex_opts_mix
|
291
|
-
opts = Kronk::Path.parse_regex_opts! "path/to/item//m", Regexp::EXTENDED
|
292
|
-
assert_equal Regexp::EXTENDED | Regexp::MULTILINE, opts
|
293
|
-
end
|
294
|
-
|
295
|
-
|
296
|
-
def test_parse_regex_opts_none
|
297
|
-
assert_nil Kronk::Path.parse_regex_opts!("path/to/item//")
|
298
|
-
assert_equal Regexp::EXTENDED,
|
299
|
-
Kronk::Path.parse_regex_opts!("path/to/item//", Regexp::EXTENDED)
|
300
|
-
end
|
301
|
-
|
302
|
-
|
303
|
-
private
|
304
|
-
|
305
|
-
PARENT = Kronk::Path::PARENT
|
306
|
-
ANY_VALUE = Kronk::Path::Matcher::ANY_VALUE
|
307
|
-
|
308
|
-
def assert_path match, path, regexp_opt=nil
|
309
|
-
match.map! do |i|
|
310
|
-
i = [i] unless Array === i
|
311
|
-
Kronk::Path::Matcher.new :key => i[0], :value => i[1],
|
312
|
-
:recursive => i[2], :regex_opts => regexp_opt
|
313
|
-
end
|
314
|
-
|
315
|
-
assert_equal match, Kronk::Path.parse_path_str(path, regexp_opt)
|
316
|
-
end
|
317
|
-
end
|
data/test/test_path_match.rb
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
require 'test/test_helper'
|
2
|
-
|
3
|
-
class TestPathMatch < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@pmatch = Kronk::Path::Match.new %w{path to resource}
|
7
|
-
@pmatch.matches = %w{this is 4 foo}
|
8
|
-
|
9
|
-
@splat = @pmatch.dup
|
10
|
-
@splat.append_splat "first", "path"
|
11
|
-
@splat.append_splat "first", "to"
|
12
|
-
@splat.append_splat "second", "resource"
|
13
|
-
@splat.append_splat "second", "bar"
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
def test_new
|
18
|
-
assert_equal %w{this is 4 foo}, @pmatch.matches
|
19
|
-
assert_equal %w{path to resource}, @pmatch
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
|
-
def test_dup
|
24
|
-
new_match = @pmatch.dup
|
25
|
-
assert_equal new_match, @pmatch
|
26
|
-
assert_not_equal @pmatch.matches.object_id, new_match.matches.object_id
|
27
|
-
assert_equal %w{this is 4 foo}, @pmatch.matches
|
28
|
-
assert_equal %w{this is 4 foo}, new_match.matches
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
def test_make_path
|
33
|
-
path = @pmatch.make_path "/%3/2/path/%4_%1"
|
34
|
-
assert_equal %w{4 2 path foo_this}, path
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
def test_make_path_consecutive
|
39
|
-
path = @pmatch.make_path "/%3%4/2/path/%1"
|
40
|
-
assert_equal %w{4foo 2 path this}, path
|
41
|
-
end
|
42
|
-
|
43
|
-
|
44
|
-
def test_make_path_no_splat
|
45
|
-
path = @pmatch.make_path "/%%3/2/path/%4_%1"
|
46
|
-
assert_equal %w{3 2 path foo_this}, path
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
def test_make_path_consecutive_no_splat
|
51
|
-
path = @pmatch.make_path "/%%%4/2/path/%1"
|
52
|
-
assert_equal %w{foo 2 path this}, path
|
53
|
-
|
54
|
-
path = @pmatch.make_path "/%4%%/2/path/%1"
|
55
|
-
assert_equal %w{foo 2 path this}, path
|
56
|
-
end
|
57
|
-
|
58
|
-
|
59
|
-
def test_make_path_escape
|
60
|
-
path = @pmatch.make_path "/\\%3/2\\/path/%4_%1"
|
61
|
-
assert_equal %w{%3 2/path foo_this}, path
|
62
|
-
|
63
|
-
path = @pmatch.make_path "/\\\\%3/2/path/%4_%1/bar"
|
64
|
-
assert_equal %w{\4 2 path foo_this bar}, path
|
65
|
-
end
|
66
|
-
|
67
|
-
|
68
|
-
def test_make_path_escape_token_num
|
69
|
-
path = @pmatch.make_path "/%3\\1/2/path/%4_%1"
|
70
|
-
assert_equal %w{41 2 path foo_this}, path
|
71
|
-
|
72
|
-
path = @pmatch.make_path "/%\\31/2/path/%4_%1"
|
73
|
-
assert_equal %w{31 2 path foo_this}, path
|
74
|
-
end
|
75
|
-
|
76
|
-
|
77
|
-
def test_make_path_bad_token_num
|
78
|
-
path = @pmatch.make_path "/%31/2/path/%4_%1"
|
79
|
-
assert_equal ["", "2", "path", "foo_this"], path
|
80
|
-
end
|
81
|
-
|
82
|
-
|
83
|
-
def test_make_path_splat
|
84
|
-
path = @splat.make_path "/%4%%/2/thing"
|
85
|
-
assert_equal ["foopath", "to", "2", "thing"], path
|
86
|
-
|
87
|
-
path = @splat.make_path "/%4/%%/2/thing"
|
88
|
-
assert_equal ["foo", "path", "to", "2", "thing"], path
|
89
|
-
|
90
|
-
path = @splat.make_path "/%4/bah%%2/thing"
|
91
|
-
assert_equal ["foo", "bahpath", "to2", "thing"], path
|
92
|
-
end
|
93
|
-
|
94
|
-
|
95
|
-
def test_make_path_splat_multiple
|
96
|
-
path = @splat.make_path "/%4%%%%/2/thing"
|
97
|
-
assert_equal ["foopath", "toresource", "bar", "2", "thing"], path
|
98
|
-
|
99
|
-
path = @splat.make_path "/%4/%%/2/thing/%%"
|
100
|
-
assert_equal ["foo", "path", "to", "2", "thing", "resource", "bar"], path
|
101
|
-
|
102
|
-
path = @splat.make_path "%%/%4/bah%%2/thing/%%"
|
103
|
-
assert_equal %w{path to foo bahresource bar2 thing}, path
|
104
|
-
end
|
105
|
-
end
|