reapack-index 1.0beta4 → 1.0rc2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,14 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <index version="1" commit="f572d396fae9206628714fb2ce00f72e94f2258f">
2
+ <index version="1" commit="f572d396fae9206628714fb2ce00f72e94f2258f" name="Test">
3
3
  <category name="Category Name">
4
4
  <reapack name="Hello World.lua" type="script">
5
5
  <version name="1.0" author="cfillion">
6
6
  <changelog><![CDATA[Fixed a division by zero error.]]></changelog>
7
- <source platform="all">https://google.com/Category%20Name/Hello%20World.lua</source>
7
+ <source>https://google.com/Category%20Name/Hello%20World.lua</source>
8
8
  </version>
9
9
  </reapack>
10
10
  </category>
11
+ <description>
12
+ <link>https://github.com/cfillion/reapack-index</link>
13
+ </description>
11
14
  </index>
@@ -7,7 +7,7 @@ class TestIndex::Provides < MiniTest::Test
7
7
 
8
8
  def test_simple
9
9
  index = ReaPack::Index.new @dummy_path
10
- index.url_template = 'http://host/$path'
10
+ index.url_template = 'http://host/$path?$package'
11
11
 
12
12
  index.files = [
13
13
  'Category/script.lua',
@@ -28,9 +28,9 @@ class TestIndex::Provides < MiniTest::Test
28
28
  <category name="Category">
29
29
  <reapack name="script.lua" type="script">
30
30
  <version name="1.0">
31
- <source platform="all">http://host/Category/script.lua</source>
32
- <source platform="windows" file="../Resources/unicode.dat">http://host/Resources/unicode.dat</source>
33
- <source platform="all" file="test.png">http://host/Category/test.png</source>
31
+ <source main="true">http://host/Category/script.lua?Category/script.lua</source>
32
+ <source platform="windows" file="../Resources/unicode.dat">http://host/Resources/unicode.dat?Category/script.lua</source>
33
+ <source file="test.png">http://host/Category/test.png?Category/script.lua</source>
34
34
  </version>
35
35
  </reapack>
36
36
  </category>
@@ -75,8 +75,8 @@ class TestIndex::Provides < MiniTest::Test
75
75
  <category name="Category">
76
76
  <reapack name="script.lua" type="script">
77
77
  <version name="1.0">
78
- <source platform="darwin">http://host/Category/script.lua</source>
79
- <source platform="win64">http://host/Category/script.lua</source>
78
+ <source main="true" platform="darwin">http://host/Category/script.lua</source>
79
+ <source main="true" platform="win64">http://host/Category/script.lua</source>
80
80
  </version>
81
81
  </reapack>
82
82
  </category>
@@ -142,7 +142,7 @@ class TestIndex::Provides < MiniTest::Test
142
142
  index.scan index.files.first, <<-IN
143
143
  @version 1.0
144
144
  @provides
145
- [windows] Data/*
145
+ [windows] Data/{a,b}.*
146
146
  test*
147
147
  IN
148
148
 
@@ -152,10 +152,10 @@ class TestIndex::Provides < MiniTest::Test
152
152
  <category name="Category">
153
153
  <reapack name="script.lua" type="script">
154
154
  <version name="1.0">
155
- <source platform="all">http://host/Category/script.lua</source>
155
+ <source main="true">http://host/Category/script.lua</source>
156
156
  <source platform="windows" file="Data/a.dat">http://host/Category/Data/a.dat</source>
157
157
  <source platform="windows" file="Data/b.dat">http://host/Category/Data/b.dat</source>
158
- <source platform="all" file="test.txt">http://host/Category/test.txt</source>
158
+ <source file="test.txt">http://host/Category/test.txt</source>
159
159
  </version>
160
160
  </reapack>
161
161
  </category>
@@ -262,7 +262,7 @@ class TestIndex::Provides < MiniTest::Test
262
262
  <category name="Other">
263
263
  <reapack name="test1.lua" type="script">
264
264
  <version name="1.0">
265
- <source platform="all" file="background.png">http://irrelevant</source>
265
+ <source file="background.png">http://irrelevant</source>
266
266
  </version>
267
267
  </reapack>
268
268
  </category>
@@ -299,4 +299,58 @@ class TestIndex::Provides < MiniTest::Test
299
299
  @provides file
300
300
  IN
301
301
  end
302
+
303
+ def test_main
304
+ index = ReaPack::Index.new @dummy_path
305
+ index.url_template = 'http://host/$path'
306
+ index.files = [
307
+ 'Category/script.lua',
308
+ 'Category/a.dat',
309
+ 'Category/b.dat',
310
+ ]
311
+
312
+ index.scan index.files.first, <<-IN
313
+ @version 1.0
314
+ @provides
315
+ [main] a.dat
316
+ [nomain] .
317
+ [nomain] b.dat
318
+ IN
319
+
320
+ expected = <<-XML
321
+ <?xml version="1.0" encoding="utf-8"?>
322
+ <index version="1">
323
+ <category name="Category">
324
+ <reapack name="script.lua" type="script">
325
+ <version name="1.0">
326
+ <source main="true" file="a.dat">http://host/Category/a.dat</source>
327
+ <source>http://host/Category/script.lua</source>
328
+ <source file="b.dat">http://host/Category/b.dat</source>
329
+ </version>
330
+ </reapack>
331
+ </category>
332
+ </index>
333
+ XML
334
+
335
+ index.write!
336
+ assert_equal expected, File.read(index.path)
337
+ end
338
+
339
+ def test_main_self
340
+ index = ReaPack::Index.new @dummy_path
341
+ index.url_template = 'http://host/$path'
342
+ index.files = [
343
+ 'Category/script.lua',
344
+ 'Category/a.dat',
345
+ 'Category/b.dat',
346
+ ]
347
+
348
+ index.scan index.files.first, <<-IN
349
+ @version 1.0
350
+ @provides .
351
+ IN
352
+
353
+ index.write!
354
+ assert_match 'main="true"', File.read(index.path)
355
+ end
302
356
  end
@@ -44,7 +44,7 @@ class TestIndex::Scan < MiniTest::Test
44
44
  <reapack name="Instrument Track.lua" type="script">
45
45
  <version name="1.0">
46
46
  <changelog><![CDATA[Hello World]]></changelog>
47
- <source platform="all">http://host/Category/Path/Instrument%20Track.lua</source>
47
+ <source main="true">http://host/Category/Path/Instrument%20Track.lua</source>
48
48
  </version>
49
49
  </reapack>
50
50
  </category>
@@ -109,22 +109,11 @@ class TestIndex::Scan < MiniTest::Test
109
109
  assert index.modified?, 'index is not modified'
110
110
  assert_equal '1 modified package, 1 modified version', index.changelog
111
111
 
112
- expected = <<-XML
113
- <?xml version="1.0" encoding="utf-8"?>
114
- <index version="1" commit="#{@commit}">
115
- <category name="Category Name">
116
- <reapack name="Hello World.lua" type="script">
117
- <version name="1.0">
118
- <changelog><![CDATA[New Changelog!]]></changelog>
119
- <source platform="all">http://google.com/Category%20Name/Hello%20World.lua</source>
120
- </version>
121
- </reapack>
122
- </category>
123
- </index>
124
- XML
125
-
126
112
  index.write @dummy_path
127
- assert_equal expected, File.read(@dummy_path)
113
+ contents = File.read @dummy_path
114
+
115
+ assert_match @commit, contents
116
+ assert_match 'New Changelog!', contents
128
117
  end
129
118
 
130
119
  def test_edit_version_amend_unmodified
@@ -144,33 +133,6 @@ class TestIndex::Scan < MiniTest::Test
144
133
  assert_empty index.changelog
145
134
  end
146
135
 
147
- def test_missing_version
148
- index = ReaPack::Index.new @dummy_path
149
- index.url_template = 'http://host/$path'
150
- index.files = ['cat/test.lua']
151
-
152
- error = assert_raises ReaPack::Index::Error do
153
- index.scan index.files.first, 'no version tag here'
154
- end
155
-
156
- assert_equal "missing tag 'version'", error.message
157
- end
158
-
159
- def test_empty_changelog
160
- index = ReaPack::Index.new @dummy_path
161
- index.url_template = 'http://host/$path'
162
- index.files = ['cat/test.lua']
163
-
164
- error = assert_raises ReaPack::Index::Error do
165
- index.scan index.files.first, <<-IN
166
- @version 1.0
167
- @changelog
168
- IN
169
- end
170
-
171
- assert_equal "missing value for tag 'changelog'", error.message
172
- end
173
-
174
136
  def test_author
175
137
  index = ReaPack::Index.new @dummy_path
176
138
  index.url_template = 'http://host/$path'
@@ -185,38 +147,6 @@ class TestIndex::Scan < MiniTest::Test
185
147
  assert_match '<version name="1.0" author="cfillion">', File.read(index.path)
186
148
  end
187
149
 
188
- def test_author_boolean
189
- index = ReaPack::Index.new @dummy_path
190
- index.url_template = 'http://host/$path'
191
- index.files = ['cat/test.lua']
192
-
193
- error = assert_raises ReaPack::Index::Error do
194
- index.scan index.files.first, <<-IN
195
- @version 1.0
196
- @author
197
- IN
198
- end
199
-
200
- assert_equal "missing value for tag 'author'", error.message
201
- end
202
-
203
- def test_author_multiline
204
- index = ReaPack::Index.new @dummy_path
205
- index.url_template = 'http://host/$path'
206
- index.files = ['cat/test.lua']
207
-
208
- error = assert_raises ReaPack::Index::Error do
209
- index.scan index.files.first, <<-IN
210
- @version 1.0
211
- @author
212
- hello
213
- world
214
- IN
215
- end
216
-
217
- assert_equal "tag 'author' must be singleline", error.message
218
- end
219
-
220
150
  def test_noindex
221
151
  index = ReaPack::Index.new @real_path
222
152
 
@@ -234,13 +164,23 @@ class TestIndex::Scan < MiniTest::Test
234
164
  assert_equal true, index.modified?
235
165
  assert_equal '1 removed package', index.changelog
236
166
 
237
- expected = <<-XML
238
- <?xml version="1.0" encoding="utf-8"?>
239
- <index version="1" commit="#{@commit}"/>
240
- XML
241
-
242
167
  index.write @dummy_path
243
- assert_equal expected, File.read(@dummy_path)
168
+ contents = File.read @dummy_path
169
+
170
+ assert_match @commit, contents
171
+ refute_match '<category', contents
172
+ end
173
+
174
+ def test_metapackage
175
+ index = ReaPack::Index.new @dummy_path
176
+ index.url_template = 'http://host/$path'
177
+ index.files = ['Category/script.lua', 'Category/test']
178
+
179
+ error = assert_raises ReaPack::Index::Error do
180
+ index.scan index.files.first, "@version 1.0\n@metapackage"
181
+ end
182
+
183
+ assert_equal 'no files provided', error.message
244
184
  end
245
185
 
246
186
  def test_version_time
@@ -272,7 +212,7 @@ class TestIndex::Scan < MiniTest::Test
272
212
  <category name="Extensions">
273
213
  <reapack name="reapack.ext" type="extension">
274
214
  <version name="1.0">
275
- <source platform="all" file="reaper_reapack.so">http://example.com/reaper_reapack.so</source>
215
+ <source file="reaper_reapack.so">http://example.com/reaper_reapack.so</source>
276
216
  </version>
277
217
  </reapack>
278
218
  </category>
@@ -296,7 +236,7 @@ class TestIndex::Scan < MiniTest::Test
296
236
  <category name="Dynamics">
297
237
  <reapack name="super_compressor.jsfx" type="effect">
298
238
  <version name="1.0">
299
- <source platform="all">http://host/Dynamics/super_compressor.jsfx</source>
239
+ <source main="true">http://host/Dynamics/super_compressor.jsfx</source>
300
240
  </version>
301
241
  </reapack>
302
242
  </category>
@@ -320,7 +260,7 @@ class TestIndex::Scan < MiniTest::Test
320
260
  <category name="Grooves">
321
261
  <reapack name="sws.data" type="data">
322
262
  <version name="1.0">
323
- <source platform="all" file="sws/test.mid">http://host/Grooves/sws/test.mid</source>
263
+ <source file="sws/test.mid">http://host/Grooves/sws/test.mid</source>
324
264
  </version>
325
265
  </reapack>
326
266
  </category>
@@ -3,94 +3,98 @@ class TestConflictDetector < MiniTest::Test
3
3
 
4
4
  def test_unique
5
5
  cd = ReaPack::Index::ConflictDetector.new
6
- cd['grp', 'pkg'].push :all, 'file1.lua'
7
- cd['grp', 'pkg'].push :all, 'file2.lua'
6
+ cd['pkg'].push :grp, :all, 'file1.lua'
7
+ cd['pkg'].push :grp, :all, 'file2.lua'
8
8
 
9
- assert_nil cd.resolve('grp', 'pkg')
10
- assert_nil cd.resolve('grp')
9
+ assert_nil cd['pkg'].resolve
10
+ assert_nil cd.resolve(:grp, 'pkg')
11
+ assert_nil cd.resolve(:grp)
11
12
  end
12
13
 
13
14
  def test_duplicates
14
15
  cd = ReaPack::Index::ConflictDetector.new
15
- cd['grp', 'pkg'].push :all, 'file1.lua'
16
- cd['grp', 'pkg'].push :all, 'file1.lua'
17
- cd['grp', 'pkg'].push :all, 'file2.lua'
18
- cd['grp', 'pkg'].push :all, 'file2.lua'
19
-
20
- assert_equal ["duplicate file 'file1.lua'", "duplicate file 'file2.lua'"],
21
- cd.resolve('grp', 'pkg')
16
+ cd['pkg'].push :grp, :all, 'file1.lua'
17
+ cd['pkg'].push :grp, :all, 'file1.lua'
18
+ cd['pkg'].push :grp, :all, 'file2.lua'
19
+ cd['pkg'].push :grp, :all, 'file2.lua'
20
+
21
+ expected = ["duplicate file 'file1.lua'", "duplicate file 'file2.lua'"]
22
+ assert_equal expected, cd['pkg'].resolve
23
+ assert_equal expected, cd.resolve(:grp, 'pkg')
24
+ assert_equal expected, cd.resolve(:grp)
22
25
  end
23
26
 
24
27
  def test_same_platform
25
28
  cd = ReaPack::Index::ConflictDetector.new
26
- cd['grp', 'test'].push :windows, 'file.lua'
27
- cd['grp', 'test'].push :windows, 'file.lua'
29
+ cd['test'].push :grp, :windows, 'file.lua'
30
+ cd['test'].push :grp, :windows, 'file.lua'
28
31
 
29
- assert_equal ["duplicate file 'file.lua' on windows"], cd.resolve('grp')
30
- assert_nil cd.resolve('other bucket')
32
+ assert_equal ["duplicate file 'file.lua' on windows"], cd.resolve(:grp)
33
+ assert_nil cd.resolve(:other_bucket)
31
34
  end
32
35
 
33
36
  def test_unmatching_platform
34
37
  cd = ReaPack::Index::ConflictDetector.new
35
- cd['grp', 'test'].push :darwin, 'file.lua'
36
- cd['grp', 'test'].push :windows, 'file.lua'
38
+ cd['test'].push :grp, :darwin, 'file.lua'
39
+ cd['test'].push :grp, :windows, 'file.lua'
37
40
 
38
- assert_nil cd.resolve('grp')
41
+ assert_nil cd.resolve(:grp)
39
42
  end
40
43
 
41
44
  def test_subplatform
42
45
  cd = ReaPack::Index::ConflictDetector.new
43
- cd['grp', 'test'].push :all, 'file.lua'
44
- cd['grp', 'test'].push :windows, 'file.lua'
46
+ cd['test'].push :grp, :all, 'file.lua'
47
+ cd['test'].push :grp, :windows, 'file.lua'
45
48
 
46
- assert_equal ["duplicate file 'file.lua' on windows"], cd.resolve('grp')
49
+ assert_equal ["duplicate file 'file.lua' on windows"], cd.resolve(:grp)
47
50
  end
48
51
 
49
52
  def test_subsubplatform
50
53
  cd = ReaPack::Index::ConflictDetector.new
51
- cd['grp', 'test'].push :all, 'file.lua'
52
- cd['grp', 'test'].push :win32, 'file.lua'
54
+ cd['test'].push :grp, :all, 'file.lua'
55
+ cd['test'].push :grp, :win32, 'file.lua'
53
56
 
54
- assert_equal ["duplicate file 'file.lua' on win32"], cd.resolve('grp')
57
+ assert_equal ["duplicate file 'file.lua' on win32"], cd.resolve(:grp)
55
58
  end
56
59
 
57
60
  def test_conflicts
58
61
  cd = ReaPack::Index::ConflictDetector.new
59
- cd['grp', 'package1.lua'].push :all, 'file1.lua'
62
+ cd['package1.lua'].push :grp, :all, 'file1.lua'
60
63
 
61
- cd['grp', 'package2.lua'].push :all, 'file1.lua'
62
- cd['grp', 'package2.lua'].push :all, 'file2.lua'
64
+ cd['package2.lua'].push :grp, :all, 'file1.lua'
65
+ cd['package2.lua'].push :grp, :all, 'file2.lua'
63
66
 
64
- cd['grp', 'package3.lua'].push :windows, 'file2.lua'
67
+ cd['package3.lua'].push :grp, :windows, 'file2.lua'
65
68
 
66
- cd['grp', 'package4.lua'].push :darwin, 'file1.lua'
69
+ cd['package4.lua'].push :grp, :darwin, 'file1.lua'
67
70
 
68
- assert_nil cd.resolve('grp', 'not_specified.lua'), 'id = not_specified'
71
+ assert_nil cd.resolve(:grp, 'not_specified.lua'), 'id = not_specified'
69
72
 
70
73
  assert_equal ["'file1.lua' conflicts with 'package2.lua'"],
71
- cd.resolve('grp', 'package1.lua'), 'id = package1'
74
+ cd.resolve(:grp, 'package1.lua'), 'id = package1'
75
+ assert_equal cd.resolve(:grp, 'package1.lua'), cd['package1.lua'].resolve
72
76
 
73
77
  assert_equal ["'file1.lua' conflicts with 'package1.lua'",
74
78
  "'file2.lua' conflicts with 'package3.lua' on windows"],
75
- cd.resolve('grp', 'package2.lua'), 'id = package2'
79
+ cd.resolve(:grp, 'package2.lua'), 'id = package2'
76
80
 
77
81
  assert_equal ["'file2.lua' conflicts with 'package2.lua'"],
78
- cd.resolve('grp', 'package3.lua'), 'id = package3'
82
+ cd.resolve(:grp, 'package3.lua'), 'id = package3'
79
83
 
80
84
  # this conflict might happen on every platform,
81
85
  # so it should not be reported it as darwin-only
82
86
  assert_equal ["'file1.lua' conflicts with 'package1.lua'"],
83
- cd.resolve('grp', 'package4.lua'), 'id = package4'
87
+ cd.resolve(:grp, 'package4.lua'), 'id = package4'
84
88
  end
85
89
 
86
90
  def test_conflicts_bidirectional
87
91
  cd1 = ReaPack::Index::ConflictDetector.new
88
92
 
89
- a1 = cd1['grp', 'a']
90
- a1.push :all, 'file.lua'
93
+ a1 = cd1['a']
94
+ a1.push :grp, :all, 'file.lua'
91
95
 
92
- b1 = cd1['grp', 'b']
93
- b1.push :windows, 'file.lua'
96
+ b1 = cd1['b']
97
+ b1.push :grp, :windows, 'file.lua'
94
98
 
95
99
  assert_equal ["'file.lua' conflicts with 'b' on windows"],
96
100
  a1.resolve, 'id = a'
@@ -98,73 +102,90 @@ class TestConflictDetector < MiniTest::Test
98
102
  b1.resolve, 'id = b'
99
103
 
100
104
  cd2 = ReaPack::Index::ConflictDetector.new
101
- a2 = cd1['grp', 'a']
102
- a2.push :windows, 'file.lua'
105
+ a2 = cd1['a']
106
+ a2.push :grp, :windows, 'file.lua'
103
107
 
104
- b2 = cd1['grp', 'b']
105
- b2.push :all, 'file.lua'
108
+ b2 = cd1['b']
109
+ b2.push :grp, :all, 'file.lua'
106
110
 
107
111
  assert_equal a1.resolve, a2.resolve
108
112
  assert_equal b1.resolve, b2.resolve
109
113
  end
110
114
 
111
- def test_conflicts_platform_selection
115
+ def test_platform_selection
112
116
  cd1 = ReaPack::Index::ConflictDetector.new
113
- cd1['grp', 'a'].push :all, 'file.lua'
114
- cd1['grp', 'b'].push :windows, 'file.lua'
115
- cd1['grp', 'c'].push :win32, 'file.lua'
117
+ cd1['a'].push :grp1, :all, 'file.lua'
118
+ cd1['b'].push :grp1, :windows, 'file.lua'
119
+ cd1['c'].push :grp1, :win32, 'file.lua'
116
120
 
117
121
  assert_equal ["'file.lua' conflicts with 'b' on windows"],
118
- cd1.resolve('grp', 'a'), 'id = a'
122
+ cd1.resolve(:grp1, 'a'), 'id = a (grp1)'
123
+
124
+ cd1['a'].push :grp2, :all, 'file.lua'
125
+ cd1['b'].push :grp2, :darwin, 'file.lua'
126
+ cd1['c'].push :grp2, :win32, 'file.lua'
127
+
128
+ assert_equal ["'file.lua' conflicts with 'b' on darwin"],
129
+ cd1.resolve(:grp2, 'a'), 'id = a (grp2)'
119
130
  end
120
131
 
121
132
  def test_duplicate_platform_selection
122
133
  cd = ReaPack::Index::ConflictDetector.new
123
- cd['grp', 'test'].push :windows, 'file.lua'
124
- cd['grp', 'test'].push :all, 'file.lua'
125
- assert_equal ["duplicate file 'file.lua' on windows"], cd.resolve('grp')
134
+ cd['test'].push :grp, :windows, 'file.lua'
135
+ cd['test'].push :grp, :all, 'file.lua'
136
+ assert_equal ["duplicate file 'file.lua' on windows"], cd.resolve(:grp)
126
137
 
127
- cd['grp', 'test'].push :all, 'file.lua'
128
- assert_equal ["duplicate file 'file.lua'"], cd.resolve('grp')
138
+ cd['test'].push :grp, :all, 'file.lua'
139
+ assert_equal ["duplicate file 'file.lua'"], cd.resolve(:grp)
129
140
  end
130
141
 
131
142
  def test_platform_same_level
132
143
  cd1 = ReaPack::Index::ConflictDetector.new
133
- cd1['grp', 'test'].push :all, 'file.lua'
134
- cd1['grp', 'test'].push :win32, 'file.lua' # win32 first
135
- cd1['grp', 'test'].push :darwin32, 'file.lua'
144
+ cd1['test'].push :grp, :all, 'file.lua'
145
+ cd1['test'].push :grp, :win32, 'file.lua' # win32 first
146
+ cd1['test'].push :grp, :darwin32, 'file.lua'
136
147
 
137
- assert_equal ["duplicate file 'file.lua' on win32"], cd1.resolve('grp')
148
+ assert_equal ["duplicate file 'file.lua' on win32"], cd1.resolve(:grp)
138
149
 
139
150
  cd2 = ReaPack::Index::ConflictDetector.new
140
- cd2['grp', 'test'].push :all, 'file.lua'
141
- cd2['grp', 'test'].push :darwin32, 'file.lua' # darwin32 first
142
- cd2['grp', 'test'].push :win32, 'file.lua'
151
+ cd2['test'].push :grp, :all, 'file.lua'
152
+ cd2['test'].push :grp, :darwin32, 'file.lua' # darwin32 first
153
+ cd2['test'].push :grp, :win32, 'file.lua'
143
154
 
144
- assert_equal cd1.resolve('grp'), cd2.resolve('grp')
155
+ assert_equal cd1.resolve(:grp), cd2.resolve(:grp)
145
156
  end
146
157
 
147
158
  def test_remove_by_key
148
159
  cd = ReaPack::Index::ConflictDetector.new
149
- cd['grp', 'test'].push :all, 'file'
160
+ cd['test'].push :grp, :all, 'file'
150
161
 
151
- cd['grp', 'test'].clear
152
- cd['grp', 'test'].push :all, 'file'
162
+ cd['test'].clear
163
+ cd['test'].push :grp, :all, 'file'
153
164
 
154
- assert_equal nil, cd.resolve('grp', 'test')
165
+ assert_equal nil, cd.resolve(:grp, 'test')
155
166
  end
156
167
 
157
168
  def test_clone
158
169
  cd1 = ReaPack::Index::ConflictDetector.new
159
- cd1['grp', 'test'].push :all, 'file'
170
+ cd1['test'].push :grp, :all, 'file'
160
171
 
161
172
  cd2 = cd1.clone
162
173
 
163
- cd1['grp', 'test'].push :all, 'file'
164
- assert_nil cd2.resolve('grp')
174
+ cd1['test'].push :grp, :all, 'file'
175
+ assert_nil cd2.resolve(:grp)
176
+
177
+ cd2['test'].push :grp, :all, 'file'
178
+ refute_nil cd2.resolve(:grp)
179
+ end
180
+
181
+ def test_clear
182
+ cd = ReaPack::Index::ConflictDetector.new
183
+ cd['test'].push :grp, :all, 'file'
184
+
185
+ cd.clear
186
+ cd['test'].push :grp, :all, 'file'
165
187
 
166
- cd2['grp', 'test'].push :all, 'file'
167
- refute_nil cd2.resolve('grp')
188
+ assert_equal nil, cd.resolve(:grp, 'test')
168
189
  end
169
190
 
170
191
  def test_load_xml
@@ -194,6 +215,21 @@ class TestConflictDetector < MiniTest::Test
194
215
  <source platform="all" file="../Other/test1.lua">http://cross/category</source>
195
216
  </version>
196
217
  </reapack>
218
+ <reapack name="no_platform.lua" type="script">
219
+ <version name="1.0">
220
+ <source file="picture">http://cross/category</source>
221
+ </version>
222
+ </reapack>
223
+ <reapack name="weird_platform.lua" type="script">
224
+ <version name="1.0">
225
+ <source platform="bacon" file="picture">http://cross/category</source>
226
+ </version>
227
+ </reapack>
228
+ <reapack name="explicit_type.lua" type="script">
229
+ <version name="1.0">
230
+ <source type="effect" file="picture">http://cross/category</source>
231
+ </version>
232
+ </reapack>
197
233
  </category>
198
234
  </index>
199
235
  XML
@@ -203,12 +239,25 @@ class TestConflictDetector < MiniTest::Test
203
239
 
204
240
  assert_equal ["'Other/test1.lua' conflicts with 'Other/test2.lua'",
205
241
  "duplicate file 'Other/background.png' on win32"],
206
- cd.resolve(:script, 'Other/test1.lua'), 'test1'
242
+ cd['Other/test1.lua'].resolve, 'test1'
207
243
 
208
244
  assert_equal ["'Other/test1.lua' conflicts with 'Other/test1.lua'"],
209
- cd.resolve(:script, 'Other/test2.lua'), 'test2'
245
+ cd['Other/test2.lua'].resolve, 'test2'
210
246
 
211
247
  assert_equal ["'Other/test1.lua' conflicts with 'Other/test1.lua'"],
212
- cd.resolve(:script, 'Scripts/test3.lua'), 'test3'
248
+ cd['Scripts/test3.lua'].resolve, 'test3'
249
+
250
+ cd['Scripts/no_platform.lua'].resolve
251
+ cd['Scripts/weird_platform.lua'].resolve
252
+
253
+ assert_nil cd['Scripts/explicit_type.lua'].resolve
254
+ end
255
+
256
+ def test_unknown_platform
257
+ cd = ReaPack::Index::ConflictDetector.new
258
+ cd['test1'].push :grp, :unknown, 'file'
259
+ cd['test2'].push :grp, :all, 'file'
260
+
261
+ assert_equal ["'file' conflicts with 'test2'"], cd['test1'].resolve
213
262
  end
214
263
  end