reapack-index 1.0beta3 → 1.0beta4
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/.travis.yml +1 -1
- data/README.md +11 -113
- data/Rakefile +1 -1
- data/lib/reapack/index.rb +159 -109
- data/lib/reapack/index/cdetector.rb +120 -0
- data/lib/reapack/index/cli.rb +127 -161
- data/lib/reapack/index/cli/options.rb +29 -10
- data/lib/reapack/index/gem_version.rb +1 -1
- data/lib/reapack/index/git.rb +189 -0
- data/lib/reapack/index/metadata.rb +2 -2
- data/lib/reapack/index/named_node.rb +17 -12
- data/lib/reapack/index/package.rb +16 -9
- data/lib/reapack/index/provides.rb +46 -0
- data/lib/reapack/index/source.rb +59 -0
- data/lib/reapack/index/version.rb +3 -52
- data/reapack-index.gemspec +7 -6
- data/setup/reapack-index.nsi +9 -5
- data/test/cli/test_check.rb +190 -0
- data/test/cli/test_metadata.rb +194 -0
- data/test/cli/test_scan.rb +326 -0
- data/test/data/index.xml +1 -1
- data/test/helper.rb +90 -1
- data/test/index/test_metadata.rb +111 -0
- data/test/index/test_provides.rb +302 -0
- data/test/index/test_scan.rb +333 -0
- data/test/test_cdetector.rb +214 -0
- data/test/test_cli.rb +69 -797
- data/test/test_git.rb +139 -0
- data/test/test_index.rb +109 -703
- data/test/test_metadata.rb +2 -2
- data/test/test_named_node.rb +50 -42
- data/test/test_package.rb +15 -26
- data/test/test_provides.rb +68 -0
- data/test/test_source.rb +115 -0
- data/test/test_version.rb +10 -63
- metadata +33 -22
@@ -0,0 +1,326 @@
|
|
1
|
+
require File.expand_path '../../helper', __FILE__
|
2
|
+
|
3
|
+
TestCLI ||= Class.new MiniTest::Test
|
4
|
+
|
5
|
+
class TestCLI::Scan < MiniTest::Test
|
6
|
+
include CLIHelper
|
7
|
+
|
8
|
+
def test_initial_commit
|
9
|
+
wrapper do
|
10
|
+
@git.create_commit 'initial commit', [
|
11
|
+
mkfile('Category/test1.lua', '@version 1.0'),
|
12
|
+
mkfile('Category/Sub/test2.lua', '@version 1.0'),
|
13
|
+
]
|
14
|
+
|
15
|
+
assert_output /2 new packages/ do
|
16
|
+
assert_equal true, @cli.run
|
17
|
+
end
|
18
|
+
|
19
|
+
assert_match 'Category/test1.lua', read_index
|
20
|
+
assert_match 'Category/Sub/test2.lua', read_index
|
21
|
+
|
22
|
+
assert_equal @git.last_commit.id, @cli.index.commit
|
23
|
+
assert_equal @git.last_commit.time, @cli.index.time
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_normal_commit
|
28
|
+
wrapper do
|
29
|
+
@git.create_commit 'initial commit',
|
30
|
+
[mkfile('README.md', '# Hello World')]
|
31
|
+
|
32
|
+
@git.create_commit 'second commit', [
|
33
|
+
mkfile('Category/test1.lua', '@version 1.0'),
|
34
|
+
mkfile('Category/Sub/test2.lua', '@version 1.0'),
|
35
|
+
]
|
36
|
+
|
37
|
+
assert_output "2 new categories, 2 new packages, 2 new versions\n" do
|
38
|
+
assert_equal true, @cli.run
|
39
|
+
end
|
40
|
+
|
41
|
+
assert_equal @git.last_commit.id, @cli.index.commit
|
42
|
+
assert_equal @git.last_commit.time, @cli.index.time
|
43
|
+
assert_match 'Category/test1.lua', read_index
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_empty_branch
|
48
|
+
wrapper do
|
49
|
+
assert_output nil, /the current branch does not contains any commit/i do
|
50
|
+
assert_equal true, @cli.run
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_wd_subdirectory
|
56
|
+
wrapper do
|
57
|
+
@git.create_commit 'initial commit',
|
58
|
+
[mkfile('cat/test1.lua', '@version 1.0')]
|
59
|
+
|
60
|
+
Dir.mkdir mkpath('test')
|
61
|
+
Dir.chdir mkpath('test')
|
62
|
+
|
63
|
+
assert_output /1 new package/ do
|
64
|
+
assert_equal true, @cli.run
|
65
|
+
end
|
66
|
+
|
67
|
+
assert_match 'test1.lua', read_index
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_verbose
|
72
|
+
stdout, stderr = capture_io do
|
73
|
+
wrapper ['--verbose'] do
|
74
|
+
@git.create_commit 'initial commit', [
|
75
|
+
mkfile('cat/test.lua', '@version 1.0'),
|
76
|
+
mkfile('cat/test.png', 'file not shown in output'),
|
77
|
+
mkfile('test.png', 'not shown either'),
|
78
|
+
]
|
79
|
+
|
80
|
+
@git.create_commit 'second commit', [
|
81
|
+
mkfile('cat/test.lua', '@version 2.0'),
|
82
|
+
mkfile('cat/test.jsfx', '@version 1.0'),
|
83
|
+
]
|
84
|
+
|
85
|
+
File.delete mkpath('cat/test.lua')
|
86
|
+
@git.create_commit 'third commit', [mkpath('cat/test.lua')]
|
87
|
+
|
88
|
+
assert_equal true, @cli.run
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
assert_match /reading configuration from .+\.reapack-index\.conf/, stderr
|
93
|
+
|
94
|
+
verbose = /
|
95
|
+
processing [a-f0-9]{7}: initial commit
|
96
|
+
-> indexing added file cat\/test\.lua
|
97
|
+
processing [a-f0-9]{7}: second commit
|
98
|
+
-> indexing added file cat\/test\.jsfx
|
99
|
+
-> indexing modified file cat\/test\.lua
|
100
|
+
processing [a-f0-9]{7}: third commit
|
101
|
+
-> indexing deleted file cat\/test\.lua/i
|
102
|
+
|
103
|
+
assert_match verbose, stderr
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_verbose_override
|
107
|
+
wrapper ['--verbose', '--no-verbose'] do
|
108
|
+
@git.create_commit 'initial commit', [mkfile('README.md', '# Hello World')]
|
109
|
+
|
110
|
+
stdout, stderr = capture_io do
|
111
|
+
assert_equal true, @cli.run
|
112
|
+
end
|
113
|
+
|
114
|
+
assert_equal "empty index\n", stdout
|
115
|
+
refute_match /processing [a-f0-9]{7}: initial commit/i, stderr
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_invalid_metadata
|
120
|
+
wrapper do
|
121
|
+
@git.create_commit 'initial commit',
|
122
|
+
[mkfile('cat/test.lua', 'no version tag in this script!')]
|
123
|
+
|
124
|
+
assert_output nil, /warning: cat\/test\.lua:\n\x20\x20missing tag/i do
|
125
|
+
assert_equal true, @cli.run
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_no_warnings
|
131
|
+
wrapper ['-w'] do
|
132
|
+
@git.create_commit 'initial commit',
|
133
|
+
[mkfile('cat/test.lua', 'no version tag in this script!')]
|
134
|
+
|
135
|
+
_, stderr = capture_io do
|
136
|
+
assert_equal true, @cli.run
|
137
|
+
end
|
138
|
+
|
139
|
+
refute_match /warning/i, stderr
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_no_warnings_override
|
144
|
+
wrapper ['-w', '-W'] do
|
145
|
+
@git.create_commit 'initial commit',
|
146
|
+
[mkfile('cat/test.lua', 'no version tag in this script!')]
|
147
|
+
|
148
|
+
assert_output nil, /warning/i do
|
149
|
+
assert_equal true, @cli.run
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_from_last
|
155
|
+
setup = proc {
|
156
|
+
@git.create_commit 'initial commit',
|
157
|
+
[mkfile('cat/test1.lua', '@version 1.0')]
|
158
|
+
|
159
|
+
mkfile 'index.xml', <<-XML
|
160
|
+
<?xml version="1.0" encoding="utf-8"?>
|
161
|
+
<index version="1" name="hello" commit="#{@git.last_commit.id}"/>
|
162
|
+
XML
|
163
|
+
}
|
164
|
+
|
165
|
+
wrapper [], setup: setup do
|
166
|
+
@git.create_commit 'second commit',
|
167
|
+
[mkfile('cat/test2.lua', '@version 1.0')]
|
168
|
+
|
169
|
+
assert_output nil, '' do
|
170
|
+
assert_equal true, @cli.run
|
171
|
+
end
|
172
|
+
|
173
|
+
refute_match 'test1.lua', read_index
|
174
|
+
assert_match 'test2.lua', read_index
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_amend
|
179
|
+
wrapper ['--amend'] do
|
180
|
+
assert_equal true, @cli.index.amend
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def test_no_amend
|
185
|
+
wrapper ['--no-amend'] do
|
186
|
+
assert_equal false, @cli.index.amend
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
def test_scan_ignore
|
191
|
+
setup = proc { Dir.chdir @git.path }
|
192
|
+
|
193
|
+
wrapper ['--ignore=Hello', '--ignore=Chunky/Bacon.lua',
|
194
|
+
'--ignore=test2.lua'], setup: setup do
|
195
|
+
@git.create_commit 'initial commit', [
|
196
|
+
mkfile('Hello/World.lua', 'konnichiwa'),
|
197
|
+
mkfile('Chunky/Bacon.lua', 'konnichiwa'),
|
198
|
+
mkfile('Directory/test2.lua', '@version 1.0'),
|
199
|
+
]
|
200
|
+
|
201
|
+
assert_output "1 new category, 1 new package, 1 new version\n" do
|
202
|
+
assert_equal true, @cli.run
|
203
|
+
end
|
204
|
+
|
205
|
+
refute_match 'Hello/World.lua', read_index
|
206
|
+
refute_match 'Chunky/Bacon.lua', read_index
|
207
|
+
assert_match 'Directory/test2.lua', read_index
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
def test_remove
|
212
|
+
wrapper do
|
213
|
+
@git.create_commit 'initial commit',
|
214
|
+
[mkfile('cat/test.lua', '@version 1.0')]
|
215
|
+
|
216
|
+
File.delete mkpath('cat/test.lua')
|
217
|
+
@git.create_commit 'second commit', [mkpath('cat/test.lua')]
|
218
|
+
|
219
|
+
assert_output /1 removed package/i do
|
220
|
+
assert_equal true, @cli.run
|
221
|
+
end
|
222
|
+
|
223
|
+
refute_match 'test.lua', read_index
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_specify_commit
|
228
|
+
# --progress to check for FloatDomainError: Infinity errors
|
229
|
+
options = ['--progress', '--scan']
|
230
|
+
|
231
|
+
setup = proc {
|
232
|
+
@git.create_commit 'initial commit',
|
233
|
+
[mkfile('cat/test1.lua', '@version 2.0')]
|
234
|
+
|
235
|
+
@git.create_commit 'second commit',
|
236
|
+
[mkfile('cat/test2.lua', '@version 1.0')]
|
237
|
+
options << @git.last_commit.id
|
238
|
+
|
239
|
+
@git.create_commit 'third commit',
|
240
|
+
[mkfile('cat/test3.lua', '@version 1.1')]
|
241
|
+
}
|
242
|
+
|
243
|
+
wrapper options, setup: setup do
|
244
|
+
capture_io { assert_equal true, @cli.run }
|
245
|
+
|
246
|
+
refute_match 'test1.lua', read_index, 'The initial commit was scanned'
|
247
|
+
assert_match 'test2.lua', read_index
|
248
|
+
refute_match 'test3.lua', read_index, 'The third commit was scanned'
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_specify_two_commits
|
253
|
+
options = ['--scan', nil, '--scan', nil]
|
254
|
+
|
255
|
+
setup = proc {
|
256
|
+
@git.create_commit 'initial commit',
|
257
|
+
[mkfile('cat/test1.lua', '@version 2.0')]
|
258
|
+
|
259
|
+
@git.create_commit 'second commit',
|
260
|
+
[mkfile('cat/test2.lua', '@version 1.0')]
|
261
|
+
options[1] = @git.last_commit.id
|
262
|
+
|
263
|
+
@git.create_commit 'third commit',
|
264
|
+
[mkfile('cat/test3.lua', '@version 1.1')]
|
265
|
+
options[3] = @git.last_commit.id
|
266
|
+
}
|
267
|
+
|
268
|
+
wrapper options, setup: setup do
|
269
|
+
capture_io { assert_equal true, @cli.run }
|
270
|
+
|
271
|
+
refute_match 'test1.lua', read_index, 'The initial commit was scanned'
|
272
|
+
assert_match 'test2.lua', read_index
|
273
|
+
assert_match 'test3.lua', read_index
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
def test_reset
|
278
|
+
options = ['--scan']
|
279
|
+
|
280
|
+
setup = proc {
|
281
|
+
@git.create_commit 'initial commit',
|
282
|
+
[mkfile('cat/test1.lua', '@version 2.0')]
|
283
|
+
|
284
|
+
@git.create_commit 'second commit',
|
285
|
+
[mkfile('cat/test2.lua', '@version 1.0')]
|
286
|
+
options << @git.last_commit.id
|
287
|
+
|
288
|
+
options << '--scan'
|
289
|
+
}
|
290
|
+
|
291
|
+
wrapper options, setup: setup do
|
292
|
+
capture_io { assert_equal true, @cli.run }
|
293
|
+
assert_match 'test1.lua', read_index
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
297
|
+
def test_short_hash
|
298
|
+
options = ['--scan']
|
299
|
+
|
300
|
+
setup = proc {
|
301
|
+
@git.create_commit 'initial commit',
|
302
|
+
[mkfile('test1.lua', '@version 2.0')]
|
303
|
+
options << @git.last_commit.short_id
|
304
|
+
}
|
305
|
+
|
306
|
+
wrapper options, setup: setup do
|
307
|
+
capture_io { assert_equal true, @cli.run }
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
def test_invalid_hashes
|
312
|
+
INVALID_HASHES.each {|hash|
|
313
|
+
wrapper ['--scan', hash] do
|
314
|
+
@git.create_commit 'initial commit', [mkfile('README.md')]
|
315
|
+
|
316
|
+
assert_output nil, /--scan: bad revision: #{Regexp.escape hash}/i do
|
317
|
+
assert_equal false, @cli.run
|
318
|
+
end
|
319
|
+
end
|
320
|
+
}
|
321
|
+
end
|
322
|
+
|
323
|
+
def test_no_arguments
|
324
|
+
wrapper ['--scan'] do; end
|
325
|
+
end
|
326
|
+
end
|
data/test/data/index.xml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<index version="1" commit="
|
2
|
+
<index version="1" commit="f572d396fae9206628714fb2ce00f72e94f2258f">
|
3
3
|
<category name="Category Name">
|
4
4
|
<reapack name="Hello World.lua" type="script">
|
5
5
|
<version name="1.0" author="cfillion">
|
data/test/helper.rb
CHANGED
@@ -16,10 +16,99 @@ SimpleCov.start {
|
|
16
16
|
require 'reapack/index'
|
17
17
|
require 'minitest/autorun'
|
18
18
|
|
19
|
+
String.disable_colorization = true
|
20
|
+
|
19
21
|
module XMLHelper
|
20
22
|
def make_node(markup)
|
21
23
|
Nokogiri::XML(markup, &:noblanks).root
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
25
|
-
|
27
|
+
module IndexHelper
|
28
|
+
def setup
|
29
|
+
@real_path = File.expand_path '../data/index.xml', __FILE__
|
30
|
+
@dummy_path = Dir::Tmpname.create('index.xml') {|path| path }
|
31
|
+
|
32
|
+
@commit = '399f5609cff3e6fd92b5542d444fbf86da0443c6'
|
33
|
+
end
|
34
|
+
|
35
|
+
def teardown
|
36
|
+
File.delete @dummy_path if File.exist? @dummy_path
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
module GitHelper
|
41
|
+
INVALID_HASHES = [
|
42
|
+
'hello world', '0000000000000000000000000000000000000000',
|
43
|
+
'0000000000000000000000000000000000000deadbeef',
|
44
|
+
].freeze
|
45
|
+
|
46
|
+
def init_git
|
47
|
+
path = Dir.mktmpdir 'test-repository'
|
48
|
+
repo = Rugged::Repository.init_at path
|
49
|
+
repo.config['user.name'] = 'John Doe'
|
50
|
+
repo.config['user.email'] = 'john@doe.com'
|
51
|
+
repo.config['commit.gpgsign'] = false
|
52
|
+
|
53
|
+
@git = ReaPack::Index::Git.new path
|
54
|
+
[path, repo]
|
55
|
+
end
|
56
|
+
|
57
|
+
def mkpath(file)
|
58
|
+
File.join @git.path, file
|
59
|
+
end
|
60
|
+
|
61
|
+
def mkfile(file, content = String.new)
|
62
|
+
fn = mkpath file
|
63
|
+
FileUtils.mkdir_p File.dirname(fn)
|
64
|
+
File.write fn, content
|
65
|
+
fn
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
module CLIHelper
|
70
|
+
include GitHelper
|
71
|
+
|
72
|
+
class FakeIO
|
73
|
+
def initialize
|
74
|
+
@getch = 'n'
|
75
|
+
end
|
76
|
+
|
77
|
+
attr_accessor :getch
|
78
|
+
end
|
79
|
+
|
80
|
+
def fake_input
|
81
|
+
stdin = $stdin
|
82
|
+
$stdin = FakeIO.new
|
83
|
+
|
84
|
+
yield $stdin
|
85
|
+
ensure
|
86
|
+
$stdin = stdin
|
87
|
+
end
|
88
|
+
|
89
|
+
def wrapper(args = [], options = {})
|
90
|
+
old_wd = Dir.pwd
|
91
|
+
|
92
|
+
path, repo = init_git
|
93
|
+
|
94
|
+
if options[:remote] != false
|
95
|
+
options[:remote] ||= 'git@github.com:cfillion/test-repository.git'
|
96
|
+
repo.remotes.create 'origin', options[:remote]
|
97
|
+
end
|
98
|
+
|
99
|
+
options[:setup].call if options.has_key? :setup
|
100
|
+
|
101
|
+
@cli = ReaPack::Index::CLI.new \
|
102
|
+
['--no-progress', '--no-commit'] + args + ['--', path]
|
103
|
+
|
104
|
+
yield if block_given?
|
105
|
+
ensure
|
106
|
+
@git = @cli = nil
|
107
|
+
Dir.chdir old_wd
|
108
|
+
FileUtils.rm_r path
|
109
|
+
end
|
110
|
+
|
111
|
+
def read_index(file = 'index.xml')
|
112
|
+
File.read File.expand_path(file, @git.path)
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require File.expand_path '../../helper', __FILE__
|
2
|
+
|
3
|
+
TestIndex ||= Class.new MiniTest::Test
|
4
|
+
|
5
|
+
class TestIndex::Metadata < MiniTest::Test
|
6
|
+
include IndexHelper
|
7
|
+
|
8
|
+
def test_add_anonymous_link
|
9
|
+
index = ReaPack::Index.new @dummy_path
|
10
|
+
|
11
|
+
assert_equal 0, index.links(:website).size
|
12
|
+
index.eval_link :website, 'http://test.com'
|
13
|
+
assert_equal 1, index.links(:website).size
|
14
|
+
|
15
|
+
assert_equal '1 new website link, empty index', index.changelog
|
16
|
+
|
17
|
+
index.write!
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_add_named_link
|
21
|
+
index = ReaPack::Index.new @dummy_path
|
22
|
+
|
23
|
+
assert_equal 0, index.links(:website).size
|
24
|
+
index.eval_link :website, 'Test=http://test.com/hello=world'
|
25
|
+
assert_equal 1, index.links(:website).size
|
26
|
+
|
27
|
+
assert_equal '1 new website link, empty index', index.changelog
|
28
|
+
|
29
|
+
index.write!
|
30
|
+
expected = <<-XML
|
31
|
+
<?xml version="1.0" encoding="utf-8"?>
|
32
|
+
<index version="1">
|
33
|
+
<metadata>
|
34
|
+
<link rel="website" href="http://test.com/hello=world">Test</link>
|
35
|
+
</metadata>
|
36
|
+
</index>
|
37
|
+
XML
|
38
|
+
|
39
|
+
index.write!
|
40
|
+
assert_equal expected, File.read(index.path)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_edit_link
|
44
|
+
index = ReaPack::Index.new @dummy_path
|
45
|
+
|
46
|
+
index.eval_link :website, 'Test=http://test.com'
|
47
|
+
index.eval_link :website, 'Test=http://test.com'
|
48
|
+
assert_equal '1 new website link, empty index', index.changelog
|
49
|
+
|
50
|
+
index.eval_link :website, 'Test=http://test.com/hello'
|
51
|
+
assert_equal '1 new website link, 1 modified website link, empty index',
|
52
|
+
index.changelog
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_remove_link_by_name
|
56
|
+
index = ReaPack::Index.new @dummy_path
|
57
|
+
index.eval_link :website, 'Test=http://test.com'
|
58
|
+
index.eval_link :website, '-Test'
|
59
|
+
|
60
|
+
assert_equal '1 new website link, 1 removed website link, empty index', index.changelog
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_remove_link_by_url
|
64
|
+
index = ReaPack::Index.new @dummy_path
|
65
|
+
|
66
|
+
index.eval_link :website, 'Test=http://test.com'
|
67
|
+
index.eval_link :website, '-http://test.com'
|
68
|
+
|
69
|
+
assert_equal '1 new website link, 1 removed website link, empty index', index.changelog
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_description
|
73
|
+
index = ReaPack::Index.new @dummy_path
|
74
|
+
index.write!
|
75
|
+
|
76
|
+
assert_empty index.description
|
77
|
+
assert_equal false, index.modified?
|
78
|
+
|
79
|
+
index.description = 'Hello World'
|
80
|
+
refute_empty index.description
|
81
|
+
assert_equal true, index.modified?
|
82
|
+
assert_equal '1 modified metadata', index.changelog
|
83
|
+
|
84
|
+
index.write!
|
85
|
+
|
86
|
+
index.description = 'Hello World'
|
87
|
+
assert_equal false, index.modified?
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_name
|
91
|
+
index = ReaPack::Index.new @dummy_path
|
92
|
+
assert_empty index.name
|
93
|
+
|
94
|
+
index.name = 'Hello World'
|
95
|
+
assert_equal '1 modified metadata, empty index', index.changelog
|
96
|
+
|
97
|
+
error = assert_raises ReaPack::Index::Error do index.name = '.'; end
|
98
|
+
assert_raises ReaPack::Index::Error do index.name = 'hello/world'; end
|
99
|
+
assert_equal "invalid name '.'", error.message
|
100
|
+
|
101
|
+
assert_equal 'Hello World', index.name
|
102
|
+
|
103
|
+
expected = <<-XML
|
104
|
+
<?xml version="1.0" encoding="utf-8"?>
|
105
|
+
<index version="1" name="Hello World"/>
|
106
|
+
XML
|
107
|
+
|
108
|
+
index.write!
|
109
|
+
assert_equal expected, File.read(index.path)
|
110
|
+
end
|
111
|
+
end
|