reapack-index 1.0beta2
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.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/README.md +167 -0
- data/Rakefile +7 -0
- data/bin/reapack-index +8 -0
- data/lib/reapack/index.rb +351 -0
- data/lib/reapack/index/cli.rb +437 -0
- data/lib/reapack/index/gem_version.rb +5 -0
- data/lib/reapack/index/metadata.rb +185 -0
- data/lib/reapack/index/named_node.rb +68 -0
- data/lib/reapack/index/package.rb +65 -0
- data/lib/reapack/index/parsers.rb +35 -0
- data/lib/reapack/index/version.rb +178 -0
- data/reapack-index.gemspec +33 -0
- data/setup/.gitignore +1 -0
- data/setup/reapack-index.nsi +148 -0
- data/test/data/index.xml +11 -0
- data/test/data/noindex.lua +1 -0
- data/test/helper.rb +25 -0
- data/test/test_changelog.rb +76 -0
- data/test/test_cli.rb +846 -0
- data/test/test_index.rb +817 -0
- data/test/test_metadata.rb +403 -0
- data/test/test_named_node.rb +100 -0
- data/test/test_package.rb +95 -0
- data/test/test_parsers.rb +35 -0
- data/test/test_version.rb +215 -0
- metadata +238 -0
data/test/test_index.rb
ADDED
@@ -0,0 +1,817 @@
|
|
1
|
+
require File.expand_path '../helper', __FILE__
|
2
|
+
|
3
|
+
class TestIndex < MiniTest::Test
|
4
|
+
def setup
|
5
|
+
@real_path = File.expand_path '../data/index.xml', __FILE__
|
6
|
+
@dummy_path = Dir::Tmpname.create('index.xml') {|path| path }
|
7
|
+
|
8
|
+
@commit = '399f5609cff3e6fd92b5542d444fbf86da0443c6'
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
File.delete @dummy_path if File.exists? @dummy_path
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_type_of
|
16
|
+
assert_nil ReaPack::Index.type_of('src/main.cpp')
|
17
|
+
|
18
|
+
assert_equal :script, ReaPack::Index.type_of('Track/instrument_track.lua')
|
19
|
+
assert_equal :script, ReaPack::Index.type_of('Track/instrument_track.eel')
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_source_for
|
23
|
+
assert_nil ReaPack::Index.source_for('http://google.com')
|
24
|
+
|
25
|
+
assert_equal 'https://github.com/User/Repo/raw/$commit/$path',
|
26
|
+
ReaPack::Index.source_for('git@github.com:User/Repo.git')
|
27
|
+
|
28
|
+
assert_equal 'https://github.com/User/Repo/raw/$commit/$path',
|
29
|
+
ReaPack::Index.source_for('https://github.com/User/Repo.git')
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_validate_standalone
|
33
|
+
refute_nil ReaPack::Index.validate_file @real_path # not a valid script
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_validate_noindex
|
37
|
+
assert_nil ReaPack::Index.validate_file \
|
38
|
+
File.expand_path '../data/noindex.lua', __FILE__
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_read
|
42
|
+
index = ReaPack::Index.new @real_path
|
43
|
+
|
44
|
+
assert_equal 1, index.version
|
45
|
+
assert_equal @commit, index.commit
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_new
|
49
|
+
index = ReaPack::Index.new @dummy_path
|
50
|
+
|
51
|
+
assert_equal 1, index.version
|
52
|
+
assert_nil index.commit
|
53
|
+
|
54
|
+
assert_equal true, index.modified?
|
55
|
+
assert_equal "empty index", index.changelog
|
56
|
+
|
57
|
+
index.write @dummy_path
|
58
|
+
assert_equal true, index.modified?
|
59
|
+
|
60
|
+
index.write!
|
61
|
+
assert_equal false, index.modified?
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_save
|
65
|
+
index = ReaPack::Index.new @real_path
|
66
|
+
|
67
|
+
index.write @dummy_path
|
68
|
+
assert_equal File.read(@real_path), File.read(@dummy_path)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_mkdir
|
72
|
+
path = File.expand_path '../dummy_dir/test.xml', __FILE__
|
73
|
+
dirname = File.dirname path
|
74
|
+
|
75
|
+
refute File.exist? dirname
|
76
|
+
|
77
|
+
index = ReaPack::Index.new path
|
78
|
+
index.write!
|
79
|
+
|
80
|
+
assert File.exist? dirname
|
81
|
+
ensure
|
82
|
+
FileUtils.rm_r dirname if File.exist? dirname
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_ignore_unknown_type
|
86
|
+
index = ReaPack::Index.new @dummy_path
|
87
|
+
|
88
|
+
index.scan 'src/main.cpp', String.new
|
89
|
+
index.write!
|
90
|
+
|
91
|
+
expected = <<-XML
|
92
|
+
<?xml version="1.0" encoding="utf-8"?>
|
93
|
+
<index version="1"/>
|
94
|
+
XML
|
95
|
+
|
96
|
+
assert_equal expected, File.read(@dummy_path)
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_new_package
|
100
|
+
index = ReaPack::Index.new @dummy_path
|
101
|
+
assert_empty index.files
|
102
|
+
|
103
|
+
index.files = ['Category/Path/Instrument Track.lua']
|
104
|
+
index.source_pattern = '$path'
|
105
|
+
index.scan index.files.first, <<-IN
|
106
|
+
@version 1.0
|
107
|
+
@changelog Hello World
|
108
|
+
IN
|
109
|
+
|
110
|
+
assert_equal true, index.modified?
|
111
|
+
assert_equal '1 new category, 1 new package, 1 new version', index.changelog
|
112
|
+
|
113
|
+
index.write!
|
114
|
+
|
115
|
+
assert_equal false, index.modified?
|
116
|
+
assert_empty index.changelog
|
117
|
+
|
118
|
+
expected = <<-XML
|
119
|
+
<?xml version="1.0" encoding="utf-8"?>
|
120
|
+
<index version="1">
|
121
|
+
<category name="Category/Path">
|
122
|
+
<reapack name="Instrument Track.lua" type="script">
|
123
|
+
<version name="1.0">
|
124
|
+
<changelog><![CDATA[Hello World]]></changelog>
|
125
|
+
<source platform="all">Category/Path/Instrument%20Track.lua</source>
|
126
|
+
</version>
|
127
|
+
</reapack>
|
128
|
+
</category>
|
129
|
+
</index>
|
130
|
+
XML
|
131
|
+
|
132
|
+
assert_equal expected, File.read(index.path)
|
133
|
+
end
|
134
|
+
|
135
|
+
def test_default_category
|
136
|
+
index = ReaPack::Index.new @dummy_path
|
137
|
+
assert_empty index.files
|
138
|
+
|
139
|
+
index.files = ['script.lua', 'Hello/World']
|
140
|
+
index.source_pattern = '$path'
|
141
|
+
index.scan index.files.first, <<-IN
|
142
|
+
@version 1.0
|
143
|
+
@provides Hello/World
|
144
|
+
IN
|
145
|
+
|
146
|
+
expected = <<-XML
|
147
|
+
<?xml version="1.0" encoding="utf-8"?>
|
148
|
+
<index version="1">
|
149
|
+
<category name="Other">
|
150
|
+
<reapack name="script.lua" type="script">
|
151
|
+
<version name="1.0">
|
152
|
+
<source platform="all">script.lua</source>
|
153
|
+
<source platform="all" file="Hello/World">Hello/World</source>
|
154
|
+
</version>
|
155
|
+
</reapack>
|
156
|
+
</category>
|
157
|
+
</index>
|
158
|
+
XML
|
159
|
+
|
160
|
+
index.write!
|
161
|
+
assert_equal expected, File.read(index.path)
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_edit_version_amend_off
|
165
|
+
index = ReaPack::Index.new @real_path
|
166
|
+
assert_equal false, index.amend
|
167
|
+
index.source_pattern = 'http://google.com/$path'
|
168
|
+
|
169
|
+
index.files = ['Category Name/Hello World.lua']
|
170
|
+
index.scan index.files.first, <<-IN
|
171
|
+
@version 1.0
|
172
|
+
@changelog New Changelog!
|
173
|
+
IN
|
174
|
+
|
175
|
+
assert_equal false, index.modified?
|
176
|
+
assert_empty index.changelog
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_edit_version_amend_on
|
180
|
+
index = ReaPack::Index.new @real_path
|
181
|
+
index.amend = true
|
182
|
+
assert_equal true, index.amend
|
183
|
+
|
184
|
+
index.source_pattern = 'http://google.com/$path'
|
185
|
+
index.files = ['Category Name/Hello World.lua']
|
186
|
+
index.scan index.files.first, <<-IN
|
187
|
+
@version 1.0
|
188
|
+
@changelog New Changelog!
|
189
|
+
IN
|
190
|
+
|
191
|
+
assert index.modified?, 'index is not modified'
|
192
|
+
assert_equal '1 modified package, 1 modified version', index.changelog
|
193
|
+
|
194
|
+
expected = <<-XML
|
195
|
+
<?xml version="1.0" encoding="utf-8"?>
|
196
|
+
<index version="1" commit="#{@commit}">
|
197
|
+
<category name="Category Name">
|
198
|
+
<reapack name="Hello World.lua" type="script">
|
199
|
+
<version name="1.0">
|
200
|
+
<changelog><![CDATA[New Changelog!]]></changelog>
|
201
|
+
<source platform="all">http://google.com/Category%20Name/Hello%20World.lua</source>
|
202
|
+
</version>
|
203
|
+
</reapack>
|
204
|
+
</category>
|
205
|
+
</index>
|
206
|
+
XML
|
207
|
+
|
208
|
+
index.write @dummy_path
|
209
|
+
assert_equal expected, File.read(@dummy_path)
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_edit_version_amend_unmodified
|
213
|
+
index = ReaPack::Index.new @real_path
|
214
|
+
index.amend = true
|
215
|
+
index.source_pattern = 'https://google.com/$path'
|
216
|
+
|
217
|
+
index.files = ['Category Name/Hello World.lua']
|
218
|
+
index.scan index.files.first, <<-IN
|
219
|
+
@version 1.0
|
220
|
+
@author cfillion
|
221
|
+
@changelog Fixed a division by zero error.
|
222
|
+
IN
|
223
|
+
|
224
|
+
assert_equal false, index.modified?
|
225
|
+
assert_empty index.changelog
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_file_unlisted
|
229
|
+
index = ReaPack::Index.new @dummy_path
|
230
|
+
index.source_pattern = 'http://google.com/$path'
|
231
|
+
|
232
|
+
error = assert_raises ReaPack::Index::Error do
|
233
|
+
index.scan 'unlisted.lua', <<-IN
|
234
|
+
@version 1.0
|
235
|
+
IN
|
236
|
+
end
|
237
|
+
|
238
|
+
assert_equal 'unlisted.lua: No such file or directory', error.message
|
239
|
+
|
240
|
+
expected = <<-XML
|
241
|
+
<?xml version="1.0" encoding="utf-8"?>
|
242
|
+
<index version="1"/>
|
243
|
+
XML
|
244
|
+
|
245
|
+
index.write!
|
246
|
+
assert_equal expected, File.read(index.path)
|
247
|
+
end
|
248
|
+
|
249
|
+
def test_source_pattern_unset
|
250
|
+
index = ReaPack::Index.new @dummy_path
|
251
|
+
index.files = ['script.lua']
|
252
|
+
|
253
|
+
error = assert_raises ReaPack::Index::Error do
|
254
|
+
index.scan index.files.first, <<-IN
|
255
|
+
@version 1.0
|
256
|
+
IN
|
257
|
+
end
|
258
|
+
|
259
|
+
assert_match /source pattern is unset/i, error.message
|
260
|
+
end
|
261
|
+
|
262
|
+
def test_source_pattern_no_path
|
263
|
+
index = ReaPack::Index.new @dummy_path
|
264
|
+
index.files = ['script.lua']
|
265
|
+
|
266
|
+
assert_raises ArgumentError do
|
267
|
+
index.source_pattern = 'no path variable here'
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
def test_source_pattern_defaut_branch
|
272
|
+
index = ReaPack::Index.new @dummy_path
|
273
|
+
index.files = ['Category/script.lua']
|
274
|
+
index.source_pattern = '$commit/$path'
|
275
|
+
|
276
|
+
index.commit = nil
|
277
|
+
|
278
|
+
index.scan index.files.first, <<-IN
|
279
|
+
@version 1.0
|
280
|
+
IN
|
281
|
+
|
282
|
+
expected = <<-XML
|
283
|
+
<?xml version="1.0" encoding="utf-8"?>
|
284
|
+
<index version="1">
|
285
|
+
<category name="Category">
|
286
|
+
<reapack name="script.lua" type="script">
|
287
|
+
<version name="1.0">
|
288
|
+
<source platform="all">master/Category/script.lua</source>
|
289
|
+
</version>
|
290
|
+
</reapack>
|
291
|
+
</category>
|
292
|
+
</index>
|
293
|
+
XML
|
294
|
+
|
295
|
+
index.write!
|
296
|
+
assert_equal expected, File.read(@dummy_path)
|
297
|
+
end
|
298
|
+
|
299
|
+
def test_source_pattern_commit
|
300
|
+
index = ReaPack::Index.new @dummy_path
|
301
|
+
index.files = ['Category/script.lua']
|
302
|
+
index.source_pattern = '$commit/$path'
|
303
|
+
|
304
|
+
index.commit = @commit
|
305
|
+
|
306
|
+
index.scan index.files.first, <<-IN
|
307
|
+
@version 1.0
|
308
|
+
IN
|
309
|
+
|
310
|
+
expected = <<-XML
|
311
|
+
<?xml version="1.0" encoding="utf-8"?>
|
312
|
+
<index version="1" commit="#{@commit}">
|
313
|
+
<category name="Category">
|
314
|
+
<reapack name="script.lua" type="script">
|
315
|
+
<version name="1.0">
|
316
|
+
<source platform="all">#{@commit}/Category/script.lua</source>
|
317
|
+
</version>
|
318
|
+
</reapack>
|
319
|
+
</category>
|
320
|
+
</index>
|
321
|
+
XML
|
322
|
+
|
323
|
+
index.write!
|
324
|
+
assert_equal expected, File.read(@dummy_path)
|
325
|
+
end
|
326
|
+
|
327
|
+
def test_nil_source_pattern
|
328
|
+
index = ReaPack::Index.new @dummy_path
|
329
|
+
|
330
|
+
error = assert_raises ArgumentError do
|
331
|
+
index.source_pattern = nil
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
335
|
+
def test_missing_version
|
336
|
+
index = ReaPack::Index.new @dummy_path
|
337
|
+
index.source_pattern = '$path'
|
338
|
+
index.files = ['test.lua']
|
339
|
+
|
340
|
+
error = assert_raises ReaPack::Index::Error do
|
341
|
+
index.scan index.files.first, 'no version tag here'
|
342
|
+
end
|
343
|
+
|
344
|
+
assert_match 'missing tag "version"', error.message
|
345
|
+
end
|
346
|
+
|
347
|
+
def test_changelog_boolean
|
348
|
+
index = ReaPack::Index.new @dummy_path
|
349
|
+
index.source_pattern = '$path'
|
350
|
+
index.files = ['test.lua']
|
351
|
+
|
352
|
+
error = assert_raises ReaPack::Index::Error do
|
353
|
+
index.scan index.files.first, <<-IN
|
354
|
+
@version 1.0
|
355
|
+
@changelog
|
356
|
+
IN
|
357
|
+
end
|
358
|
+
|
359
|
+
assert_match 'invalid value for tag "changelog"', error.message
|
360
|
+
end
|
361
|
+
|
362
|
+
def test_author
|
363
|
+
index = ReaPack::Index.new @dummy_path
|
364
|
+
index.source_pattern = '$path'
|
365
|
+
index.files = ['Category/script.lua']
|
366
|
+
|
367
|
+
index.scan index.files.first, <<-IN
|
368
|
+
@version 1.0
|
369
|
+
@author cfillion
|
370
|
+
IN
|
371
|
+
|
372
|
+
expected = <<-XML
|
373
|
+
<?xml version="1.0" encoding="utf-8"?>
|
374
|
+
<index version="1">
|
375
|
+
<category name="Category">
|
376
|
+
<reapack name="script.lua" type="script">
|
377
|
+
<version name="1.0" author="cfillion">
|
378
|
+
<source platform="all">Category/script.lua</source>
|
379
|
+
</version>
|
380
|
+
</reapack>
|
381
|
+
</category>
|
382
|
+
</index>
|
383
|
+
XML
|
384
|
+
|
385
|
+
index.write!
|
386
|
+
assert_equal expected, File.read(index.path)
|
387
|
+
end
|
388
|
+
|
389
|
+
def test_author_boolean
|
390
|
+
index = ReaPack::Index.new @dummy_path
|
391
|
+
index.source_pattern = '$path'
|
392
|
+
index.files = ['test.lua']
|
393
|
+
|
394
|
+
error = assert_raises ReaPack::Index::Error do
|
395
|
+
index.scan index.files.first, <<-IN
|
396
|
+
@version 1.0
|
397
|
+
@author
|
398
|
+
IN
|
399
|
+
end
|
400
|
+
|
401
|
+
assert_match 'invalid value for tag "author"', error.message
|
402
|
+
end
|
403
|
+
|
404
|
+
def test_author_multiline
|
405
|
+
index = ReaPack::Index.new @dummy_path
|
406
|
+
index.source_pattern = '$path'
|
407
|
+
index.files = ['test.lua']
|
408
|
+
|
409
|
+
error = assert_raises ReaPack::Index::Error do
|
410
|
+
index.scan index.files.first, <<-IN
|
411
|
+
@version 1.0
|
412
|
+
@author
|
413
|
+
hello
|
414
|
+
world
|
415
|
+
IN
|
416
|
+
end
|
417
|
+
|
418
|
+
assert_equal 'invalid metadata: invalid value for tag "author"', error.message
|
419
|
+
end
|
420
|
+
|
421
|
+
def test_provides
|
422
|
+
index = ReaPack::Index.new @dummy_path
|
423
|
+
index.source_pattern = '$path'
|
424
|
+
|
425
|
+
index.files = [
|
426
|
+
'Category/script.lua',
|
427
|
+
'Resources/unicode.dat',
|
428
|
+
'Category/test.png',
|
429
|
+
]
|
430
|
+
|
431
|
+
index.scan index.files.first, <<-IN
|
432
|
+
@version 1.0
|
433
|
+
@provides
|
434
|
+
../Resources/unicode.dat
|
435
|
+
test.png
|
436
|
+
IN
|
437
|
+
|
438
|
+
expected = <<-XML
|
439
|
+
<?xml version="1.0" encoding="utf-8"?>
|
440
|
+
<index version="1">
|
441
|
+
<category name="Category">
|
442
|
+
<reapack name="script.lua" type="script">
|
443
|
+
<version name="1.0">
|
444
|
+
<source platform="all">Category/script.lua</source>
|
445
|
+
<source platform="all" file="../Resources/unicode.dat">Resources/unicode.dat</source>
|
446
|
+
<source platform="all" file="test.png">Category/test.png</source>
|
447
|
+
</version>
|
448
|
+
</reapack>
|
449
|
+
</category>
|
450
|
+
</index>
|
451
|
+
XML
|
452
|
+
|
453
|
+
index.write!
|
454
|
+
assert_equal expected, File.read(@dummy_path)
|
455
|
+
end
|
456
|
+
|
457
|
+
def test_provides_unlisted
|
458
|
+
index = ReaPack::Index.new @dummy_path
|
459
|
+
index.source_pattern = '$path'
|
460
|
+
|
461
|
+
index.files = ['Category/script.lua']
|
462
|
+
|
463
|
+
error = assert_raises ReaPack::Index::Error do
|
464
|
+
index.scan index.files.first, <<-IN
|
465
|
+
@version 1.0
|
466
|
+
@provides
|
467
|
+
test.png
|
468
|
+
IN
|
469
|
+
end
|
470
|
+
|
471
|
+
assert_equal 'Category/test.png: No such file or directory', error.message
|
472
|
+
end
|
473
|
+
|
474
|
+
def test_provides_duplicate
|
475
|
+
index = ReaPack::Index.new @dummy_path
|
476
|
+
index.source_pattern = '$path'
|
477
|
+
|
478
|
+
error = assert_raises ReaPack::Index::Error do
|
479
|
+
index.scan 'script.lua', <<-IN
|
480
|
+
@version 1.0
|
481
|
+
@provides
|
482
|
+
test.png
|
483
|
+
test.png http://url.com
|
484
|
+
IN
|
485
|
+
end
|
486
|
+
|
487
|
+
assert_match 'invalid value for tag "provides": duplicate file (test.png)',
|
488
|
+
error.message
|
489
|
+
end
|
490
|
+
|
491
|
+
def test_provides_duplicate_platforms
|
492
|
+
index = ReaPack::Index.new @dummy_path
|
493
|
+
index.source_pattern = '$path'
|
494
|
+
index.files = ['script.lua', 'test.png', 'test.png']
|
495
|
+
|
496
|
+
index.scan index.files.first, <<-IN
|
497
|
+
@version 1.0
|
498
|
+
@provides
|
499
|
+
[windows] test.png
|
500
|
+
[darwin] test.png
|
501
|
+
IN
|
502
|
+
end
|
503
|
+
|
504
|
+
def test_invalid_platform
|
505
|
+
index = ReaPack::Index.new @dummy_path
|
506
|
+
index.source_pattern = '$path'
|
507
|
+
|
508
|
+
error = assert_raises ReaPack::Index::Error do
|
509
|
+
index.scan 'test.lua', <<-IN
|
510
|
+
@version 1.0
|
511
|
+
@provides
|
512
|
+
[hello] test.png
|
513
|
+
IN
|
514
|
+
end
|
515
|
+
|
516
|
+
assert_match 'invalid value for tag "provides": invalid platform hello',
|
517
|
+
error.message
|
518
|
+
end
|
519
|
+
|
520
|
+
def test_provides_platform
|
521
|
+
index = ReaPack::Index.new @dummy_path
|
522
|
+
index.source_pattern = '$path'
|
523
|
+
|
524
|
+
index.files = [
|
525
|
+
'Category/script.lua',
|
526
|
+
'Category/winall.png',
|
527
|
+
'Category/win32bit.png',
|
528
|
+
'Category/win64bit.png',
|
529
|
+
'Category/osxall.png',
|
530
|
+
'Category/osx32bit.png',
|
531
|
+
'Category/osx64bit.png',
|
532
|
+
]
|
533
|
+
|
534
|
+
index.scan index.files.first, <<-IN
|
535
|
+
@version 1.0
|
536
|
+
@provides
|
537
|
+
[windows] winall.png
|
538
|
+
[win32] win32bit.png
|
539
|
+
[win64]win64bit.png
|
540
|
+
[ darwin ] osxall.png
|
541
|
+
[darwin32] osx32bit.png
|
542
|
+
[darwin64] osx64bit.png
|
543
|
+
IN
|
544
|
+
|
545
|
+
expected = <<-XML
|
546
|
+
<?xml version="1.0" encoding="utf-8"?>
|
547
|
+
<index version="1">
|
548
|
+
<category name="Category">
|
549
|
+
<reapack name="script.lua" type="script">
|
550
|
+
<version name="1.0">
|
551
|
+
<source platform="all">Category/script.lua</source>
|
552
|
+
<source platform="windows" file="winall.png">Category/winall.png</source>
|
553
|
+
<source platform="win32" file="win32bit.png">Category/win32bit.png</source>
|
554
|
+
<source platform="win64" file="win64bit.png">Category/win64bit.png</source>
|
555
|
+
<source platform="darwin" file="osxall.png">Category/osxall.png</source>
|
556
|
+
<source platform="darwin32" file="osx32bit.png">Category/osx32bit.png</source>
|
557
|
+
<source platform="darwin64" file="osx64bit.png">Category/osx64bit.png</source>
|
558
|
+
</version>
|
559
|
+
</reapack>
|
560
|
+
</category>
|
561
|
+
</index>
|
562
|
+
XML
|
563
|
+
|
564
|
+
index.write!
|
565
|
+
assert_equal expected, File.read(@dummy_path)
|
566
|
+
end
|
567
|
+
|
568
|
+
def test_main_platform
|
569
|
+
index = ReaPack::Index.new @dummy_path
|
570
|
+
index.source_pattern = '$path'
|
571
|
+
|
572
|
+
index.files = [
|
573
|
+
'Category/script.lua',
|
574
|
+
]
|
575
|
+
|
576
|
+
index.scan index.files.first, <<-IN
|
577
|
+
@version 1.0
|
578
|
+
@provides
|
579
|
+
[darwin] .
|
580
|
+
[win64] script.lua
|
581
|
+
IN
|
582
|
+
|
583
|
+
expected = <<-XML
|
584
|
+
<?xml version="1.0" encoding="utf-8"?>
|
585
|
+
<index version="1">
|
586
|
+
<category name="Category">
|
587
|
+
<reapack name="script.lua" type="script">
|
588
|
+
<version name="1.0">
|
589
|
+
<source platform="darwin">Category/script.lua</source>
|
590
|
+
<source platform="win64">Category/script.lua</source>
|
591
|
+
</version>
|
592
|
+
</reapack>
|
593
|
+
</category>
|
594
|
+
</index>
|
595
|
+
XML
|
596
|
+
|
597
|
+
index.write!
|
598
|
+
assert_equal expected, File.read(@dummy_path)
|
599
|
+
end
|
600
|
+
|
601
|
+
def test_source_custom_url
|
602
|
+
index = ReaPack::Index.new @dummy_path
|
603
|
+
|
604
|
+
index.files = [
|
605
|
+
'Category/script.lua',
|
606
|
+
]
|
607
|
+
|
608
|
+
index.scan index.files.first, <<-IN
|
609
|
+
@version 1.0
|
610
|
+
@provides
|
611
|
+
script.lua http://google.com/download/$commit/$version/$path
|
612
|
+
IN
|
613
|
+
|
614
|
+
expected = <<-XML
|
615
|
+
<?xml version="1.0" encoding="utf-8"?>
|
616
|
+
<index version="1">
|
617
|
+
<category name="Category">
|
618
|
+
<reapack name="script.lua" type="script">
|
619
|
+
<version name="1.0">
|
620
|
+
<source platform="all">http://google.com/download/master/1.0/Category/script.lua</source>
|
621
|
+
</version>
|
622
|
+
</reapack>
|
623
|
+
</category>
|
624
|
+
</index>
|
625
|
+
XML
|
626
|
+
|
627
|
+
index.write!
|
628
|
+
assert_equal expected, File.read(@dummy_path)
|
629
|
+
end
|
630
|
+
|
631
|
+
def test_remove
|
632
|
+
index = ReaPack::Index.new @real_path
|
633
|
+
|
634
|
+
index.remove 'Category Name/Hello World.lua'
|
635
|
+
|
636
|
+
assert_equal true, index.modified?
|
637
|
+
assert_equal '1 removed package', index.changelog
|
638
|
+
|
639
|
+
expected = <<-XML
|
640
|
+
<?xml version="1.0" encoding="utf-8"?>
|
641
|
+
<index version="1" commit="#{@commit}"/>
|
642
|
+
XML
|
643
|
+
|
644
|
+
index.write @dummy_path
|
645
|
+
assert_equal expected, File.read(@dummy_path)
|
646
|
+
end
|
647
|
+
|
648
|
+
def test_remove_inexistant
|
649
|
+
index = ReaPack::Index.new @real_path
|
650
|
+
|
651
|
+
index.remove '404.lua'
|
652
|
+
|
653
|
+
assert_equal false, index.modified?
|
654
|
+
assert_empty index.changelog
|
655
|
+
end
|
656
|
+
|
657
|
+
def test_noindex
|
658
|
+
index = ReaPack::Index.new @real_path
|
659
|
+
|
660
|
+
index.scan 'script.lua', '@noindex'
|
661
|
+
|
662
|
+
assert_equal false, index.modified?
|
663
|
+
end
|
664
|
+
|
665
|
+
def test_noindex_remove
|
666
|
+
index = ReaPack::Index.new @real_path
|
667
|
+
|
668
|
+
index.scan 'Category Name/Hello World.lua', '@noindex'
|
669
|
+
|
670
|
+
assert_equal true, index.modified?
|
671
|
+
assert_equal '1 removed package', index.changelog
|
672
|
+
|
673
|
+
expected = <<-XML
|
674
|
+
<?xml version="1.0" encoding="utf-8"?>
|
675
|
+
<index version="1" commit="#{@commit}"/>
|
676
|
+
XML
|
677
|
+
|
678
|
+
index.write @dummy_path
|
679
|
+
assert_equal expected, File.read(@dummy_path)
|
680
|
+
end
|
681
|
+
|
682
|
+
def test_version_time
|
683
|
+
index = ReaPack::Index.new @dummy_path
|
684
|
+
index.source_pattern = '$path'
|
685
|
+
index.files = ['Category/script.lua']
|
686
|
+
|
687
|
+
index.time = Time.new 2016, 2, 11, 20, 16, 40, -5 * 3600
|
688
|
+
|
689
|
+
index.scan index.files.first, <<-IN
|
690
|
+
@version 1.0
|
691
|
+
IN
|
692
|
+
|
693
|
+
expected = <<-XML
|
694
|
+
<?xml version="1.0" encoding="utf-8"?>
|
695
|
+
<index version="1">
|
696
|
+
<category name="Category">
|
697
|
+
<reapack name="script.lua" type="script">
|
698
|
+
<version name="1.0" time="2016-02-12T01:16:40Z">
|
699
|
+
<source platform="all">Category/script.lua</source>
|
700
|
+
</version>
|
701
|
+
</reapack>
|
702
|
+
</category>
|
703
|
+
</index>
|
704
|
+
XML
|
705
|
+
|
706
|
+
index.write!
|
707
|
+
assert_equal expected, File.read(index.path)
|
708
|
+
end
|
709
|
+
|
710
|
+
def test_add_anonymous_link
|
711
|
+
index = ReaPack::Index.new @dummy_path
|
712
|
+
|
713
|
+
assert_equal 0, index.links(:website).size
|
714
|
+
index.eval_link :website, 'http://test.com'
|
715
|
+
assert_equal 1, index.links(:website).size
|
716
|
+
|
717
|
+
assert_equal '1 new website link, empty index', index.changelog
|
718
|
+
|
719
|
+
index.write!
|
720
|
+
end
|
721
|
+
|
722
|
+
def test_add_named_link
|
723
|
+
index = ReaPack::Index.new @dummy_path
|
724
|
+
|
725
|
+
assert_equal 0, index.links(:website).size
|
726
|
+
index.eval_link :website, 'Test=http://test.com/hello=world'
|
727
|
+
assert_equal 1, index.links(:website).size
|
728
|
+
|
729
|
+
assert_equal '1 new website link, empty index', index.changelog
|
730
|
+
|
731
|
+
index.write!
|
732
|
+
expected = <<-XML
|
733
|
+
<?xml version="1.0" encoding="utf-8"?>
|
734
|
+
<index version="1">
|
735
|
+
<metadata>
|
736
|
+
<link rel="website" href="http://test.com/hello=world">Test</link>
|
737
|
+
</metadata>
|
738
|
+
</index>
|
739
|
+
XML
|
740
|
+
|
741
|
+
index.write @dummy_path
|
742
|
+
assert_equal expected, File.read(@dummy_path)
|
743
|
+
end
|
744
|
+
|
745
|
+
def test_edit_link
|
746
|
+
index = ReaPack::Index.new @dummy_path
|
747
|
+
index.eval_link :website, 'Test=http://test.com'
|
748
|
+
index.eval_link :website, 'Test=http://test.com'
|
749
|
+
assert_equal '1 new website link, empty index', index.changelog
|
750
|
+
|
751
|
+
index.eval_link :website, 'Test=http://test.com/hello'
|
752
|
+
assert_equal '1 new website link, 1 modified website link, empty index',
|
753
|
+
index.changelog
|
754
|
+
end
|
755
|
+
|
756
|
+
def test_remove_link_by_name
|
757
|
+
index = ReaPack::Index.new @dummy_path
|
758
|
+
index.eval_link :website, 'Test=http://test.com'
|
759
|
+
index.eval_link :website, '-Test'
|
760
|
+
assert_equal '1 new website link, 1 removed website link, empty index', index.changelog
|
761
|
+
end
|
762
|
+
|
763
|
+
def test_remove_link_by_url
|
764
|
+
index = ReaPack::Index.new @dummy_path
|
765
|
+
index.eval_link :website, 'Test=http://test.com'
|
766
|
+
index.eval_link :website, '-http://test.com'
|
767
|
+
assert_equal '1 new website link, 1 removed website link, empty index', index.changelog
|
768
|
+
end
|
769
|
+
|
770
|
+
def test_description
|
771
|
+
index = ReaPack::Index.new @dummy_path
|
772
|
+
index.write!
|
773
|
+
|
774
|
+
assert_empty index.description
|
775
|
+
assert_equal false, index.modified?
|
776
|
+
|
777
|
+
index.description = 'Hello World'
|
778
|
+
refute_empty index.description
|
779
|
+
assert_equal true, index.modified?
|
780
|
+
assert_equal '1 modified metadata', index.changelog
|
781
|
+
|
782
|
+
index.write!
|
783
|
+
|
784
|
+
index.description = 'Hello World'
|
785
|
+
assert_equal false, index.modified?
|
786
|
+
end
|
787
|
+
|
788
|
+
def test_extension
|
789
|
+
index = ReaPack::Index.new @dummy_path
|
790
|
+
|
791
|
+
index.files = [
|
792
|
+
'Extensions/reapack.ext',
|
793
|
+
]
|
794
|
+
|
795
|
+
index.scan index.files.first, <<-IN
|
796
|
+
@version 1.0
|
797
|
+
@provides
|
798
|
+
reaper_reapack.so http://example.com/$path
|
799
|
+
IN
|
800
|
+
|
801
|
+
expected = <<-XML
|
802
|
+
<?xml version="1.0" encoding="utf-8"?>
|
803
|
+
<index version="1">
|
804
|
+
<category name="Extensions">
|
805
|
+
<reapack name="reapack.ext" type="extension">
|
806
|
+
<version name="1.0">
|
807
|
+
<source platform="all" file="reaper_reapack.so">http://example.com/reaper_reapack.so</source>
|
808
|
+
</version>
|
809
|
+
</reapack>
|
810
|
+
</category>
|
811
|
+
</index>
|
812
|
+
XML
|
813
|
+
|
814
|
+
index.write!
|
815
|
+
assert_equal expected, File.read(@dummy_path)
|
816
|
+
end
|
817
|
+
end
|