reapack-index 1.0 → 1.1beta1
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 +4 -4
- data/README.md +3 -1
- data/lib/reapack/index.rb +10 -13
- data/lib/reapack/index/cli.rb +6 -3
- data/lib/reapack/index/cli/options.rb +22 -12
- data/lib/reapack/index/gem_version.rb +1 -1
- data/lib/reapack/index/git.rb +1 -1
- data/lib/reapack/index/metadata.rb +46 -6
- data/lib/reapack/index/package.rb +31 -6
- data/lib/reapack/index/scanner.rb +54 -13
- data/lib/reapack/index/version.rb +3 -4
- data/reapack-index.gemspec +1 -1
- data/setup/reapack-index.nsi +2 -2
- data/test/cli/test_metadata.rb +13 -0
- data/test/cli/test_scan.rb +14 -0
- data/test/data/index.xml +1 -1
- data/test/index/test_metadata.rb +5 -5
- data/test/index/test_scan.rb +31 -103
- data/test/scanner/test_makeurl.rb +102 -0
- data/test/scanner/test_validation.rb +126 -0
- data/test/test_git.rb +10 -0
- data/test/test_index.rb +35 -25
- data/test/test_metadata.rb +115 -19
- data/test/test_package.rb +55 -5
- data/test/test_scanner.rb +113 -140
- data/test/test_source.rb +16 -0
- metadata +10 -6
data/test/test_git.rb
CHANGED
@@ -142,4 +142,14 @@ class TestGit < MiniTest::Test
|
|
142
142
|
|
143
143
|
assert_equal content, @git.last_commit.each_diff.first.new_content
|
144
144
|
end
|
145
|
+
|
146
|
+
def test_path_encoding
|
147
|
+
path = mkpath 'еуые'
|
148
|
+
Dir.mkdir path
|
149
|
+
path.encode! Encoding::Windows_1251
|
150
|
+
path.freeze
|
151
|
+
|
152
|
+
git = ReaPack::Index::Git.new path # should not throw
|
153
|
+
assert_equal @git.path, git.path
|
154
|
+
end
|
145
155
|
end
|
data/test/test_index.rb
CHANGED
@@ -9,34 +9,44 @@ class TestIndex < MiniTest::Test
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_type_of
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
{
|
13
|
+
'src/main.cpp' => nil,
|
14
|
+
'src/noext' => nil,
|
15
|
+
'in_root' => nil,
|
16
|
+
'Cat/test.lua' => :script,
|
17
|
+
'Cat/test.eel' => :script,
|
18
|
+
'Cat/test.py' => :script,
|
19
|
+
'Cat/test.ext' => :extension,
|
20
|
+
'Cat/test.jsfx' => :effect,
|
21
|
+
'Cat/test.data' => :data,
|
22
|
+
'Cat/test.theme' => :theme,
|
23
|
+
}.each {|fn, type|
|
24
|
+
actual = ReaPack::Index.type_of fn
|
25
|
+
assert_equal type, actual,
|
26
|
+
"%s was not of type %s, got %s instead" %
|
27
|
+
[fn.inspect, type.inspect, actual.inspect]
|
28
|
+
}
|
20
29
|
end
|
21
30
|
|
22
31
|
def test_resolve_type
|
23
|
-
|
24
|
-
nil,
|
25
|
-
:script
|
26
|
-
|
27
|
-
|
28
|
-
:
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
'
|
33
|
-
|
34
|
-
'
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
{
|
33
|
+
'hello' => nil,
|
34
|
+
:script => :script,
|
35
|
+
'lua' => :script,
|
36
|
+
'eel' => :script,
|
37
|
+
'effect' => :effect,
|
38
|
+
:jsfx => :effect,
|
39
|
+
'jsfx' => :effect,
|
40
|
+
'extension' => :extension,
|
41
|
+
'ext' => :extension,
|
42
|
+
'data' => :data,
|
43
|
+
'theme' => :theme,
|
44
|
+
}.each {|input, type|
|
45
|
+
actual = ReaPack::Index.resolve_type input
|
46
|
+
assert_equal type, actual,
|
47
|
+
"%s was not of type %s, got %s instead" %
|
48
|
+
[input.inspect, type.inspect, actual.inspect]
|
49
|
+
}
|
40
50
|
end
|
41
51
|
|
42
52
|
def test_url_template
|
data/test/test_metadata.rb
CHANGED
@@ -14,11 +14,13 @@ class TestMetadata < MiniTest::Test
|
|
14
14
|
XML
|
15
15
|
|
16
16
|
md = ReaPack::Index::Metadata.new before
|
17
|
+
assert_equal false, md.modified?
|
17
18
|
assert_empty md.links(:website)
|
18
19
|
|
19
20
|
link = md.push_link :website, 'http://cfillion.tk'
|
20
21
|
assert_equal true, link.is_new?
|
21
22
|
assert_equal true, link.modified?
|
23
|
+
assert_equal true, md.modified?
|
22
24
|
|
23
25
|
links = md.links :website
|
24
26
|
assert_equal 1, links.size
|
@@ -56,6 +58,29 @@ class TestMetadata < MiniTest::Test
|
|
56
58
|
assert_equal after.chomp, before.to_s
|
57
59
|
end
|
58
60
|
|
61
|
+
def test_screenshot_link
|
62
|
+
before = make_node '<index/>'
|
63
|
+
after = <<-XML
|
64
|
+
<index>
|
65
|
+
<metadata>
|
66
|
+
<link rel="screenshot">http://cfillion.tk</link>
|
67
|
+
</metadata>
|
68
|
+
</index>
|
69
|
+
XML
|
70
|
+
|
71
|
+
md = ReaPack::Index::Metadata.new before
|
72
|
+
assert_empty md.links(:donation)
|
73
|
+
|
74
|
+
md.push_link :screenshot, 'http://cfillion.tk'
|
75
|
+
|
76
|
+
links = md.links :screenshot
|
77
|
+
assert_equal 1, links.size
|
78
|
+
assert_equal links.first.url, links.first.name
|
79
|
+
assert_equal 'http://cfillion.tk', links.first.url
|
80
|
+
|
81
|
+
assert_equal after.chomp, before.to_s
|
82
|
+
end
|
83
|
+
|
59
84
|
def test_invalid_type
|
60
85
|
md = ReaPack::Index::Metadata.new make_node('<index/>')
|
61
86
|
|
@@ -65,6 +90,7 @@ class TestMetadata < MiniTest::Test
|
|
65
90
|
|
66
91
|
assert_raises ArgumentError do
|
67
92
|
md.push_link :hello, 'world'
|
93
|
+
assert_equal false, md.modified?
|
68
94
|
end
|
69
95
|
|
70
96
|
assert_raises ArgumentError do
|
@@ -122,6 +148,17 @@ class TestMetadata < MiniTest::Test
|
|
122
148
|
assert_equal links[3].name, links[3].url
|
123
149
|
end
|
124
150
|
|
151
|
+
def test_split_link
|
152
|
+
assert_equal ['http://perdu.com'],
|
153
|
+
ReaPack::Index::Link.split('http://perdu.com')
|
154
|
+
|
155
|
+
assert_equal ['Hello World', 'http://perdu.com/a=b'],
|
156
|
+
ReaPack::Index::Link.split('Hello World=http://perdu.com/a=b')
|
157
|
+
|
158
|
+
assert_equal ['Hello World', 'http://perdu.com/a=b'],
|
159
|
+
ReaPack::Index::Link.split('Hello World http://perdu.com/a=b')
|
160
|
+
end
|
161
|
+
|
125
162
|
def test_invalid_link
|
126
163
|
after = '<index/>'
|
127
164
|
before = make_node after
|
@@ -151,9 +188,11 @@ class TestMetadata < MiniTest::Test
|
|
151
188
|
|
152
189
|
md = ReaPack::Index::Metadata.new before
|
153
190
|
assert_equal 2, md.links(:website).size
|
191
|
+
assert_equal false, md.modified?
|
154
192
|
|
155
193
|
md.remove_link :website, 'http://cfillion.tk'
|
156
194
|
assert_equal 1, md.links(:website).size
|
195
|
+
assert_equal true, md.modified?
|
157
196
|
|
158
197
|
md.remove_link :website, 'Search'
|
159
198
|
assert_equal 0, md.links(:website).size
|
@@ -241,7 +280,41 @@ class TestMetadata < MiniTest::Test
|
|
241
280
|
assert_equal after.chomp, before.to_s
|
242
281
|
end
|
243
282
|
|
244
|
-
def
|
283
|
+
def test_replace_links
|
284
|
+
before = make_node <<-XML
|
285
|
+
<index>
|
286
|
+
<metadata>
|
287
|
+
<link rel="website" href="http://cfillion.tk">A</link>
|
288
|
+
<link rel="donation">http://google.com</link>
|
289
|
+
</metadata>
|
290
|
+
</index>
|
291
|
+
XML
|
292
|
+
|
293
|
+
after = <<-XML
|
294
|
+
<index>
|
295
|
+
<metadata>
|
296
|
+
<link rel="donation">http://google.com</link>
|
297
|
+
</metadata>
|
298
|
+
</index>
|
299
|
+
XML
|
300
|
+
|
301
|
+
md = ReaPack::Index::Metadata.new before
|
302
|
+
assert_equal false, md.modified?
|
303
|
+
|
304
|
+
md.replace_links :website do
|
305
|
+
link1 = md.push_link :website, 'A', 'http://cfillion.tk'
|
306
|
+
end
|
307
|
+
|
308
|
+
assert_equal false, md.modified?
|
309
|
+
|
310
|
+
md.replace_links :website do
|
311
|
+
end
|
312
|
+
|
313
|
+
assert_equal true, md.modified?
|
314
|
+
assert_equal after.chomp, before.to_s
|
315
|
+
end
|
316
|
+
|
317
|
+
def test_read_about
|
245
318
|
md = ReaPack::Index::Metadata.new make_node <<-XML
|
246
319
|
<index>
|
247
320
|
<metadata>
|
@@ -250,20 +323,20 @@ class TestMetadata < MiniTest::Test
|
|
250
323
|
</index>
|
251
324
|
XML
|
252
325
|
|
253
|
-
assert_equal 'Hello World', md.
|
326
|
+
assert_equal 'Hello World', md.about
|
254
327
|
end
|
255
328
|
|
256
|
-
def
|
329
|
+
def test_read_about_empty
|
257
330
|
md = ReaPack::Index::Metadata.new make_node <<-XML
|
258
331
|
<index>
|
259
332
|
<metadata/>
|
260
333
|
</index>
|
261
334
|
XML
|
262
335
|
|
263
|
-
assert_empty md.
|
336
|
+
assert_empty md.about
|
264
337
|
end
|
265
338
|
|
266
|
-
def
|
339
|
+
def test_write_about
|
267
340
|
rtf = <<-RTF
|
268
341
|
{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0 \\fswiss Helvetica;}{\\f1 Courier;}}
|
269
342
|
{\\colortbl;\\red255\\green0\\blue0;\\red0\\green0\\blue255;}
|
@@ -283,15 +356,17 @@ class TestMetadata < MiniTest::Test
|
|
283
356
|
XML
|
284
357
|
|
285
358
|
md = ReaPack::Index::Metadata.new before
|
286
|
-
assert_empty md.
|
359
|
+
assert_empty md.about
|
360
|
+
assert_equal false, md.modified?
|
287
361
|
|
288
|
-
md.
|
289
|
-
assert_equal
|
362
|
+
md.about = 'Hello World'
|
363
|
+
assert_equal true, md.modified?
|
364
|
+
assert_equal rtf, md.about
|
290
365
|
|
291
366
|
assert_equal after.chomp, before.to_s
|
292
367
|
end
|
293
368
|
|
294
|
-
def
|
369
|
+
def test_write_about_rtf
|
295
370
|
rtf = <<-RTF
|
296
371
|
{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0 \\fswiss Helvetica;}{\\f1 Courier;}}
|
297
372
|
{\\colortbl;\\red255\\green0\\blue0;\\red0\\green0\\blue255;}
|
@@ -311,15 +386,15 @@ class TestMetadata < MiniTest::Test
|
|
311
386
|
XML
|
312
387
|
|
313
388
|
md = ReaPack::Index::Metadata.new before
|
314
|
-
assert_empty md.
|
389
|
+
assert_empty md.about
|
315
390
|
|
316
|
-
md.
|
317
|
-
assert_equal rtf, md.
|
391
|
+
md.about = rtf
|
392
|
+
assert_equal rtf, md.about
|
318
393
|
|
319
394
|
assert_equal after.chomp, before.to_s
|
320
395
|
end
|
321
396
|
|
322
|
-
def
|
397
|
+
def test_replace_about
|
323
398
|
before = make_node <<-XML
|
324
399
|
<index>
|
325
400
|
<metadata>
|
@@ -349,12 +424,12 @@ class TestMetadata < MiniTest::Test
|
|
349
424
|
XML
|
350
425
|
|
351
426
|
md = ReaPack::Index::Metadata.new before
|
352
|
-
md.
|
427
|
+
md.about = 'Chunky Bacon'
|
353
428
|
|
354
429
|
assert_equal after.chomp, before.to_s
|
355
430
|
end
|
356
431
|
|
357
|
-
def
|
432
|
+
def test_remove_about
|
358
433
|
rtf = <<-RTF
|
359
434
|
{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0 \\fswiss Helvetica;}{\\f1 Courier;}}
|
360
435
|
{\\colortbl;\\red255\\green0\\blue0;\\red0\\green0\\blue255;}
|
@@ -375,14 +450,35 @@ class TestMetadata < MiniTest::Test
|
|
375
450
|
after = '<index/>'
|
376
451
|
|
377
452
|
md = ReaPack::Index::Metadata.new before
|
378
|
-
refute_empty md.
|
453
|
+
refute_empty md.about
|
379
454
|
|
380
|
-
md.
|
381
|
-
assert_empty md.
|
455
|
+
md.about = String.new
|
456
|
+
assert_empty md.about
|
457
|
+
assert_equal true, md.modified?
|
382
458
|
|
383
459
|
assert_equal after, before.to_s
|
384
460
|
end
|
385
461
|
|
462
|
+
def test_set_same_about
|
463
|
+
before = make_node <<-XML
|
464
|
+
<index>
|
465
|
+
<metadata>
|
466
|
+
<description><![CDATA[{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0 \\fswiss Helvetica;}{\\f1 Courier;}}
|
467
|
+
{\\colortbl;\\red255\\green0\\blue0;\\red0\\green0\\blue255;}
|
468
|
+
\\widowctrl\\hyphauto
|
469
|
+
|
470
|
+
{\\pard \\ql \\f0 \\sa180 \\li0 \\fi0 Hello World\\par}
|
471
|
+
}
|
472
|
+
]]></description>
|
473
|
+
</metadata>
|
474
|
+
</index>
|
475
|
+
XML
|
476
|
+
|
477
|
+
md = ReaPack::Index::Metadata.new before
|
478
|
+
md.about = 'Hello World'
|
479
|
+
assert_equal false, md.modified?
|
480
|
+
end
|
481
|
+
|
386
482
|
def test_pandoc_not_found
|
387
483
|
old_path = ENV['PATH']
|
388
484
|
ENV['PATH'] = String.new
|
@@ -390,7 +486,7 @@ class TestMetadata < MiniTest::Test
|
|
390
486
|
md = ReaPack::Index::Metadata.new make_node('<index/>')
|
391
487
|
|
392
488
|
error = assert_raises ReaPack::Index::Error do
|
393
|
-
md.
|
489
|
+
md.about = 'test'
|
394
490
|
end
|
395
491
|
|
396
492
|
assert_match /pandoc executable cannot be found in your PATH/i, error.message
|
data/test/test_package.rb
CHANGED
@@ -4,8 +4,8 @@ class TestPackage < MiniTest::Test
|
|
4
4
|
include XMLHelper
|
5
5
|
|
6
6
|
def test_change_type
|
7
|
-
before = make_node '<reapack name="
|
8
|
-
after = '<reapack name="
|
7
|
+
before = make_node '<reapack name="pkg"/>'
|
8
|
+
after = '<reapack name="pkg" type="script"/>'
|
9
9
|
|
10
10
|
pkg = ReaPack::Index::Package.new before
|
11
11
|
assert_nil pkg.type
|
@@ -18,7 +18,7 @@ class TestPackage < MiniTest::Test
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_set_same_type
|
21
|
-
before = make_node '<reapack name="
|
21
|
+
before = make_node '<reapack name="pkg" type="script"/>'
|
22
22
|
|
23
23
|
pkg = ReaPack::Index::Package.new before
|
24
24
|
|
@@ -28,9 +28,59 @@ class TestPackage < MiniTest::Test
|
|
28
28
|
refute pkg.modified?, 'package is modified'
|
29
29
|
end
|
30
30
|
|
31
|
+
def test_set_description
|
32
|
+
before = make_node '<reapack name="pkg"/>'
|
33
|
+
after = '<reapack name="pkg" desc="hello world"/>'
|
34
|
+
|
35
|
+
pkg = ReaPack::Index::Package.new before
|
36
|
+
assert_empty pkg.description
|
37
|
+
|
38
|
+
pkg.description = 'hello world'
|
39
|
+
assert pkg.modified?, 'package is not modified'
|
40
|
+
assert_equal 'hello world', pkg.description
|
41
|
+
|
42
|
+
assert_equal after, before.to_s
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_set_same_description
|
46
|
+
before = make_node '<reapack name="pkg" desc="hello world"/>'
|
47
|
+
|
48
|
+
pkg = ReaPack::Index::Package.new before
|
49
|
+
|
50
|
+
assert_equal 'hello world', pkg.description
|
51
|
+
pkg.description = pkg.description
|
52
|
+
|
53
|
+
refute pkg.modified?, 'package is modified'
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_remove_description
|
57
|
+
before = make_node '<reapack name="pkg" desc="hello world"/>'
|
58
|
+
after = '<reapack name="pkg"/>'
|
59
|
+
|
60
|
+
pkg = ReaPack::Index::Package.new before
|
61
|
+
assert_equal 'hello world', pkg.description
|
62
|
+
|
63
|
+
pkg.description = nil
|
64
|
+
assert pkg.modified?, 'package is not modified'
|
65
|
+
|
66
|
+
assert_equal after, before.to_s
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_set_metadata
|
70
|
+
before = make_node '<reapack name="pkg"/>'
|
71
|
+
|
72
|
+
pkg = ReaPack::Index::Package.new before
|
73
|
+
refute pkg.modified?, 'package is modified'
|
74
|
+
|
75
|
+
pkg.metadata.about = 'hello world'
|
76
|
+
assert pkg.modified?, 'package is not modified'
|
77
|
+
|
78
|
+
assert_match /<metadata>.+<description>/m, before.to_s
|
79
|
+
end
|
80
|
+
|
31
81
|
def test_versions
|
32
82
|
before = make_node <<-XML
|
33
|
-
<reapack name="
|
83
|
+
<reapack name="pkg" type="script">
|
34
84
|
<version name="1.0" />
|
35
85
|
</reapack>
|
36
86
|
XML
|
@@ -47,7 +97,7 @@ class TestPackage < MiniTest::Test
|
|
47
97
|
|
48
98
|
def test_get_or_create_version
|
49
99
|
before = make_node <<-XML
|
50
|
-
<reapack name="
|
100
|
+
<reapack name="pkg" type="script">
|
51
101
|
<version name="1.0" />
|
52
102
|
</reapack>
|
53
103
|
XML
|
data/test/test_scanner.rb
CHANGED
@@ -1,194 +1,167 @@
|
|
1
1
|
require File.expand_path '../helper', __FILE__
|
2
2
|
|
3
3
|
class TestScanner < MiniTest::Test
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@cat = MiniTest::Mock.new
|
4
|
+
include XMLHelper
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
@pkg.expect :path, 'Hello/World.lua'
|
6
|
+
def setup
|
7
|
+
@mock = MiniTest::Mock.new
|
11
8
|
|
12
|
-
|
13
|
-
|
9
|
+
@mh = MetaHeader.new String.new
|
10
|
+
@mh[:version] = '1.0'
|
14
11
|
|
15
|
-
|
16
|
-
|
12
|
+
@doc = Nokogiri::XML <<-XML
|
13
|
+
<category name="Hello">
|
14
|
+
<reapack type="script" name="World.lua"/>
|
15
|
+
</category>
|
16
|
+
XML
|
17
17
|
|
18
|
-
|
19
|
-
@cdetector.expect :[], nil, ['Hello/World.lua']
|
18
|
+
@pkg = ReaPack::Index::Package.new @doc.css('reapack').first
|
20
19
|
|
21
|
-
|
22
|
-
|
20
|
+
@index = MiniTest::Mock.new
|
21
|
+
@index.expect :cdetector, ReaPack::Index::ConflictDetector.new
|
22
|
+
@index.expect :url_template, 'https://google.com/$path'
|
23
|
+
@index.expect :files, ['Hello/World.lua']
|
24
|
+
@index.expect :commit, 'master'
|
25
|
+
2.times { @index.expect :time, Time.at(42) }
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
def teardown
|
29
|
-
[@cat, @pkg, @ver, @mh, @index, @cdetector].each {|mock| mock.verify }
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_path
|
33
|
-
@index.expect :files, ['Category/script.lua']
|
34
|
-
@index.expect :url_template, '$path'
|
35
|
-
@index.expect :commit, 'C0FF33'
|
27
|
+
@scanner = ReaPack::Index::Scanner.new nil, @pkg, @mh, @index
|
28
|
+
end
|
36
29
|
|
37
|
-
|
38
|
-
|
30
|
+
def teardown
|
31
|
+
@mock.verify
|
32
|
+
end
|
39
33
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
@index.expect :commit, 'C0FF33'
|
34
|
+
def test_author
|
35
|
+
@mh[:author] = 'cfillion'
|
36
|
+
@mock.expect :author=, nil, ['cfillion']
|
44
37
|
|
45
|
-
|
38
|
+
@pkg.version('1.0').stub :author=, -> (arg) { @mock.author= arg } do
|
39
|
+
@scanner.run
|
46
40
|
end
|
41
|
+
end
|
47
42
|
|
48
|
-
|
49
|
-
|
43
|
+
def test_version_time
|
44
|
+
@mock.expect :time=, nil, [Time.at(42)]
|
50
45
|
|
51
|
-
|
46
|
+
@pkg.version('1.0').stub :time=, -> (arg) { @mock.time= arg } do
|
47
|
+
@scanner.run
|
52
48
|
end
|
49
|
+
end
|
53
50
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
@index.expect :commit, 'C0FF33'
|
51
|
+
def test_edit_version_amend_off
|
52
|
+
ver = make_node '<version name="1.0"/>'
|
53
|
+
ver.parent = @pkg.node
|
58
54
|
|
59
|
-
|
55
|
+
@index.expect :amend, false
|
56
|
+
@pkg.version('1.0').stub :replace_sources, -> (*) { fail 'version was altered' } do
|
57
|
+
@scanner.run
|
60
58
|
end
|
59
|
+
end
|
61
60
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
@index.expect :commit, 'C0FF33'
|
61
|
+
def test_edit_version_amend_on
|
62
|
+
ver = make_node '<version name="1.0"/>'
|
63
|
+
ver.parent = @pkg.node
|
66
64
|
|
67
|
-
|
65
|
+
@index.expect :amend, true
|
66
|
+
@mock.expect :replace_sources, nil
|
67
|
+
@pkg.version('1.0').stub :replace_sources, -> (*) { @mock.replace_sources } do
|
68
|
+
@scanner.run
|
68
69
|
end
|
70
|
+
end
|
69
71
|
|
70
|
-
|
71
|
-
|
72
|
-
@scanner.make_url 'script.lua', 'ok if explicit template'
|
73
|
-
|
74
|
-
@index.expect :url_template, nil
|
75
|
-
error = assert_raises ReaPack::Index::Error do
|
76
|
-
@scanner.make_url 'script.lua'
|
77
|
-
end
|
72
|
+
def test_metapackage_on
|
73
|
+
@mh[:metapackage] = true
|
78
74
|
|
79
|
-
|
75
|
+
error = assert_raises ReaPack::Index::Error do
|
76
|
+
@scanner.run
|
80
77
|
end
|
81
78
|
|
82
|
-
|
83
|
-
|
84
|
-
@index.expect :files, []
|
85
|
-
@index.expect :url_template, 'http://implicit/url/template'
|
79
|
+
assert_equal 'no files provided', error.message
|
80
|
+
end
|
86
81
|
|
87
|
-
|
82
|
+
def test_metapackage_off
|
83
|
+
@mh[:metapackage] = false
|
84
|
+
@pkg.type = ReaPack::Index::Scanner::META_TYPES.first
|
85
|
+
@scanner.run
|
86
|
+
end
|
88
87
|
|
89
|
-
|
90
|
-
|
91
|
-
|
88
|
+
def test_description
|
89
|
+
@mh[:description] = 'From the New World'
|
90
|
+
@mock.expect :description=, nil, ['From the New World']
|
92
91
|
|
93
|
-
|
92
|
+
@pkg.stub :description=, -> (arg) { @mock.description= arg } do
|
93
|
+
@scanner.run
|
94
94
|
end
|
95
|
+
end
|
95
96
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
def test_description_alias_rescript_name
|
98
|
+
@mh[:reascript_name] = 'Right'
|
99
|
+
@mh[:description] = 'Wrong'
|
100
|
+
@mock.expect :description=, nil, ['Right']
|
100
101
|
|
101
|
-
|
102
|
-
|
102
|
+
@pkg.stub :description=, -> (arg) { @mock.description= arg } do
|
103
|
+
@scanner.run
|
103
104
|
end
|
104
105
|
end
|
105
106
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
@pkg.expect :path, 'cat/test'
|
107
|
+
def test_description_alias_desc
|
108
|
+
@mh[:desc] = 'Right'
|
109
|
+
@mh[:description] = 'Wrong'
|
110
|
+
@mock.expect :description=, nil, ['Right']
|
111
111
|
|
112
|
-
|
113
|
-
@
|
114
|
-
|
115
|
-
@index = MiniTest::Mock.new
|
116
|
-
@index.expect :cdetector, ReaPack::Index::ConflictDetector.new
|
117
|
-
|
118
|
-
@scanner = ReaPack::Index::Scanner.new nil, @pkg, @mh, @index
|
112
|
+
@pkg.stub :description=, -> (arg) { @mock.description= arg } do
|
113
|
+
@scanner.run
|
119
114
|
end
|
115
|
+
end
|
120
116
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
@scanner.instance_variable_set :@mh, mh_mock
|
126
|
-
|
127
|
-
error = assert_raises(ReaPack::Index::Error) { @scanner.run }
|
117
|
+
def test_about
|
118
|
+
@mh[:about] = '# Hello World'
|
119
|
+
@mock.expect :about=, nil, ['# Hello World']
|
128
120
|
|
129
|
-
|
130
|
-
|
121
|
+
@pkg.metadata.stub :about=, -> (arg) { @mock.about= arg } do
|
122
|
+
@scanner.run
|
131
123
|
end
|
124
|
+
end
|
132
125
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
@mh[:version] = 'no.numbers'
|
139
|
-
error = assert_raises(ReaPack::Index::Error) { @scanner.run }
|
140
|
-
assert_equal "invalid value for tag 'version'", error.message
|
141
|
-
|
142
|
-
@mh[:version] = 'v1.0'
|
143
|
-
error = assert_raises(ReaPack::Index::Error) { @scanner.run }
|
144
|
-
assert_equal "invalid value for tag 'version'", error.message
|
126
|
+
def test_website_links
|
127
|
+
@mh[:website] = [
|
128
|
+
'http://cfillion.tk',
|
129
|
+
'Label http://cfillion.tk',
|
130
|
+
].join "\n"
|
145
131
|
|
146
|
-
|
147
|
-
|
148
|
-
assert_equal "missing value for tag 'version'", error.message
|
132
|
+
@mock.expect :push_link, nil, [:website, 'http://cfillion.tk']
|
133
|
+
@mock.expect :push_link, nil, [:website, 'Label', 'http://cfillion.tk']
|
149
134
|
|
150
|
-
|
151
|
-
|
152
|
-
assert_equal "tag 'version' must be singleline", error.message
|
135
|
+
@pkg.metadata.stub :push_link, -> (*arg) { @mock.push_link *arg } do
|
136
|
+
@scanner.run
|
153
137
|
end
|
138
|
+
end
|
154
139
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
140
|
+
def test_screenshot_links
|
141
|
+
@mh[:screenshot] = [
|
142
|
+
'http://i.imgur.com/1.png',
|
143
|
+
'Label http://i.imgur.com/2.png',
|
144
|
+
].join "\n"
|
159
145
|
|
160
|
-
|
161
|
-
|
162
|
-
assert_equal "tag 'author' must be singleline", error.message
|
163
|
-
end
|
146
|
+
@mock.expect :push_link, nil, [:screenshot, 'http://i.imgur.com/1.png']
|
147
|
+
@mock.expect :push_link, nil, [:screenshot, 'Label', 'http://i.imgur.com/2.png']
|
164
148
|
|
165
|
-
|
166
|
-
@
|
167
|
-
error = assert_raises(ReaPack::Index::Error) { @scanner.run }
|
168
|
-
assert_equal "missing value for tag 'changelog'", error.message
|
149
|
+
@pkg.metadata.stub :push_link, -> (*arg) { @mock.push_link *arg } do
|
150
|
+
@scanner.run
|
169
151
|
end
|
152
|
+
end
|
170
153
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
@mh[:provides] = '[hello] world'
|
177
|
-
error = assert_raises(ReaPack::Index::Error) { @scanner.run }
|
178
|
-
assert_equal "invalid value for tag 'provides': unknown option 'hello'",
|
179
|
-
error.message
|
180
|
-
end
|
154
|
+
def test_donation_links
|
155
|
+
@mh[:donation] = [
|
156
|
+
'https://www.paypal.me/cfillion',
|
157
|
+
'Label https://www.paypal.me/cfillion',
|
158
|
+
].join "\n"
|
181
159
|
|
182
|
-
|
183
|
-
|
184
|
-
error = assert_raises(ReaPack::Index::Error) { @scanner.run }
|
185
|
-
assert_equal "tag 'noindex' cannot have a value", error.message
|
186
|
-
end
|
160
|
+
@mock.expect :push_link, nil, [:donation, 'https://www.paypal.me/cfillion']
|
161
|
+
@mock.expect :push_link, nil, [:donation, 'Label', 'https://www.paypal.me/cfillion']
|
187
162
|
|
188
|
-
|
189
|
-
@
|
190
|
-
error = assert_raises(ReaPack::Index::Error) { @scanner.run }
|
191
|
-
assert_equal "tag 'metapackage' cannot have a value", error.message
|
163
|
+
@pkg.metadata.stub :push_link, -> (*arg) { @mock.push_link *arg } do
|
164
|
+
@scanner.run
|
192
165
|
end
|
193
166
|
end
|
194
167
|
end
|