reapack-index 1.1beta3 → 1.1beta4
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 +2 -2
- data/README.md +1 -1
- data/bin/reapack-index +1 -1
- data/lib/reapack/index.rb +7 -2
- data/lib/reapack/index/cli.rb +8 -19
- data/lib/reapack/index/cli/options.rb +4 -7
- data/lib/reapack/index/gem_version.rb +1 -1
- data/lib/reapack/index/git.rb +1 -1
- data/lib/reapack/index/metadata.rb +2 -2
- data/lib/reapack/index/scanner.rb +10 -2
- data/reapack-index.gemspec +1 -1
- data/setup/reapack-index.nsi +10 -9
- data/test/cli/test_check.rb +4 -8
- data/test/cli/test_metadata.rb +14 -39
- data/test/cli/test_scan.rb +36 -39
- data/test/index/test_provides.rb +5 -15
- data/test/test_cli.rb +20 -31
- data/test/test_git.rb +3 -2
- data/test/test_index.rb +26 -1
- data/test/test_metadata.rb +17 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68a03118ab26b00e4fd7969dc54c9b2b350f517a
|
4
|
+
data.tar.gz: 2bc39e1d5de9c718b69f8f8efbcd4c10fcc3e496
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88efa5f4a1116dd6ad47cb3fe2bf3418eac5621a6c2e5031e7d33284b66a5540977bc11a1e89ba4e9f60cbeccc91409841a6b64c0a227dbdd75945950baa1395
|
7
|
+
data.tar.gz: 8fd0bcb5dba3dcc5f20dd5eccc0e82f21f4ec4017bd1ca2cf6e85fb7e6b9ffe23cb1b69c9d3b23c5045c27efcdb149a546c640c3280cfc24b8588ca5c9d8ad2f
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -32,7 +32,7 @@ Modes:
|
|
32
32
|
-s, --scan [FILE|COMMIT] Scan new commits (default), a file or a commit
|
33
33
|
--rebuild Clear the index and rescan the whole git history
|
34
34
|
Indexer options:
|
35
|
-
-a, --[no-]amend
|
35
|
+
-a, --[no-]amend Update existing versions
|
36
36
|
-i, --ignore PATH Don't check or index any file starting with PATH
|
37
37
|
-o, --output FILE=./index.xml Set the output filename and path for the index
|
38
38
|
--[no-]strict Enable strict validation mode
|
data/bin/reapack-index
CHANGED
data/lib/reapack/index.rb
CHANGED
@@ -298,10 +298,15 @@ private
|
|
298
298
|
|
299
299
|
def sort(node)
|
300
300
|
node.element_children.map {|n| sort n }
|
301
|
-
return if node.name == Package.tag
|
302
301
|
|
303
302
|
sorted = node.element_children
|
304
|
-
.stable_sort_by {|n|
|
303
|
+
.stable_sort_by {|n|
|
304
|
+
if n.name == Version.tag
|
305
|
+
'' # don't sort version tags by name attribute value
|
306
|
+
else
|
307
|
+
n[:name].to_s.downcase
|
308
|
+
end
|
309
|
+
}
|
305
310
|
.stable_sort_by {|n| n.name.downcase }
|
306
311
|
|
307
312
|
sorted.each {|n| node << n }
|
data/lib/reapack/index/cli.rb
CHANGED
@@ -2,16 +2,13 @@ class ReaPack::Index::CLI
|
|
2
2
|
attr_reader :index
|
3
3
|
|
4
4
|
def initialize(argv = [])
|
5
|
-
@opts = parse_options
|
6
|
-
path = argv.last || Dir.pwd
|
5
|
+
@opts = parse_options argv
|
7
6
|
|
8
|
-
|
7
|
+
@git = ReaPack::Index::Git.new argv.first || Dir.pwd
|
8
|
+
log "found git repository in #{@git.path}"
|
9
9
|
|
10
|
-
@git = ReaPack::Index::Git.new path
|
11
10
|
@opts = parse_options(read_config).merge @opts unless @opts[:noconfig]
|
12
|
-
|
13
11
|
@opts = DEFAULTS.merge @opts
|
14
|
-
return unless @exit.nil?
|
15
12
|
|
16
13
|
log Hash[@opts.sort].inspect
|
17
14
|
|
@@ -21,12 +18,10 @@ class ReaPack::Index::CLI
|
|
21
18
|
set_url_template
|
22
19
|
rescue Rugged::OSError, Rugged::RepositoryError, ReaPack::Index::Error => e
|
23
20
|
$stderr.puts e.message
|
24
|
-
|
21
|
+
throw :stop, false
|
25
22
|
end
|
26
23
|
|
27
24
|
def run
|
28
|
-
return @exit unless @exit.nil?
|
29
|
-
|
30
25
|
if @opts[:check]
|
31
26
|
return do_check
|
32
27
|
end
|
@@ -45,7 +40,7 @@ class ReaPack::Index::CLI
|
|
45
40
|
|
46
41
|
unless @index.modified?
|
47
42
|
$stderr.puts 'Nothing to do!' unless @opts[:quiet]
|
48
|
-
return
|
43
|
+
return
|
49
44
|
end
|
50
45
|
|
51
46
|
# changelog will be cleared by Index#write!
|
@@ -54,15 +49,10 @@ class ReaPack::Index::CLI
|
|
54
49
|
|
55
50
|
@index.write!
|
56
51
|
commit changelog
|
57
|
-
|
58
|
-
success_code
|
52
|
+
true
|
59
53
|
end
|
60
54
|
|
61
55
|
private
|
62
|
-
def success_code
|
63
|
-
@exit.nil? ? true : @exit
|
64
|
-
end
|
65
|
-
|
66
56
|
def set_url_template
|
67
57
|
tpl = @opts[:url_template]
|
68
58
|
is_custom = tpl != DEFAULTS[:url_template]
|
@@ -92,9 +82,8 @@ private
|
|
92
82
|
elsif c = @git.get_commit(hash)
|
93
83
|
c
|
94
84
|
else
|
95
|
-
$stderr.puts "--scan: bad file or revision: '%s'" %
|
96
|
-
|
97
|
-
nil
|
85
|
+
$stderr.puts "--scan: bad file or revision: '%s'" % hash
|
86
|
+
throw :stop, false
|
98
87
|
end
|
99
88
|
}.compact
|
100
89
|
end
|
@@ -72,7 +72,7 @@ class ReaPack::Index::CLI
|
|
72
72
|
|
73
73
|
op.separator 'Indexer options:'
|
74
74
|
|
75
|
-
op.on '-a', '--[no-]amend', '
|
75
|
+
op.on '-a', '--[no-]amend', 'Update existing versions' do |bool|
|
76
76
|
opts[:amend] = bool
|
77
77
|
end
|
78
78
|
|
@@ -171,14 +171,12 @@ class ReaPack::Index::CLI
|
|
171
171
|
|
172
172
|
op.on_tail '-v', '--version', 'Display version information' do
|
173
173
|
puts op.ver
|
174
|
-
|
175
|
-
return opts
|
174
|
+
throw :stop, true
|
176
175
|
end
|
177
176
|
|
178
177
|
op.on_tail '-h', '--help', 'Prints this help' do
|
179
178
|
puts op
|
180
|
-
|
181
|
-
return opts
|
179
|
+
throw :stop, true
|
182
180
|
end
|
183
181
|
end.parse! args
|
184
182
|
|
@@ -186,7 +184,6 @@ class ReaPack::Index::CLI
|
|
186
184
|
rescue OptionParser::ParseError => e
|
187
185
|
$stderr.puts "#{PROGRAM_NAME}: #{e.message}"
|
188
186
|
$stderr.puts "Try '#{PROGRAM_NAME} --help' for more information."
|
189
|
-
|
190
|
-
opts
|
187
|
+
throw :stop, false
|
191
188
|
end
|
192
189
|
end
|
data/lib/reapack/index/git.rb
CHANGED
@@ -143,12 +143,12 @@ class ReaPack::Index
|
|
143
143
|
end
|
144
144
|
|
145
145
|
def make_rtf(content)
|
146
|
-
PandocRuby.new(content).to_rtf :standalone
|
146
|
+
PandocRuby.new(content).to_rtf :standalone, f: :commonmark
|
147
147
|
rescue Errno::ENOENT
|
148
148
|
raise Error, [
|
149
149
|
"RTF conversion failed because the pandoc executable " \
|
150
150
|
"cannot be found in your PATH.",
|
151
|
-
"Try again after installing pandoc
|
151
|
+
"Try again after installing pandoc <http://pandoc.org/>."
|
152
152
|
].join("\n")
|
153
153
|
end
|
154
154
|
|
@@ -38,7 +38,7 @@ class ReaPack::Index
|
|
38
38
|
HEADER_ALIASES = {
|
39
39
|
[:reascript_name, :jsfx_name, :theme_name,
|
40
40
|
:extension_name, :desc] => :description,
|
41
|
-
:links => :link,
|
41
|
+
[:links, :website] => :link,
|
42
42
|
:screenshots => :screenshot,
|
43
43
|
}.freeze
|
44
44
|
|
@@ -129,7 +129,15 @@ class ReaPack::Index
|
|
129
129
|
raise Error, "file not found '#{line.file_pattern}'" if files.empty?
|
130
130
|
else
|
131
131
|
# use the relative path for external urls
|
132
|
-
|
132
|
+
if line.file_pattern.start_with? '/'
|
133
|
+
prefix = []
|
134
|
+
dirs = File.split(@pkg.category).size - 1
|
135
|
+
dirs.times { prefix << '..' }
|
136
|
+
|
137
|
+
files = [File.join(*prefix, line.file_pattern)]
|
138
|
+
else
|
139
|
+
files = [line.file_pattern]
|
140
|
+
end
|
133
141
|
end
|
134
142
|
|
135
143
|
files.map {|file|
|
data/reapack-index.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_runtime_dependency 'addressable', '~> 2.4'
|
30
30
|
spec.add_runtime_dependency 'colorize', '~> 0.7'
|
31
31
|
spec.add_runtime_dependency 'gitable', '~> 0.3'
|
32
|
-
spec.add_runtime_dependency 'metaheader', '~> 1.
|
32
|
+
spec.add_runtime_dependency 'metaheader', '~> 1.3beta4'
|
33
33
|
spec.add_runtime_dependency 'nokogiri', '~> 1.6.8'
|
34
34
|
spec.add_runtime_dependency 'pandoc-ruby', '~> 2.0'
|
35
35
|
spec.add_runtime_dependency 'rugged', '~> 0.24'
|
data/setup/reapack-index.nsi
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
Unicode true
|
2
|
+
|
1
3
|
!include MUI2.nsh
|
2
4
|
!include Sections.nsh
|
3
5
|
!include StrRep.nsh
|
4
6
|
|
5
|
-
!define VERSION "1.
|
6
|
-
!define NAME "
|
7
|
+
!define VERSION "1.1beta4"
|
8
|
+
!define NAME "reapack-index ${VERSION}"
|
7
9
|
!define LONG_VERSION "0.1.0.0"
|
8
10
|
|
9
11
|
!define RUBY_VERSION "2.3.1"
|
@@ -11,8 +13,8 @@
|
|
11
13
|
!define RUBYINSTALLER_URL \
|
12
14
|
"http://dl.bintray.com/oneclick/rubyinstaller/${RUBYINSTALLER_FILE}"
|
13
15
|
|
14
|
-
!define PANDOC_VERSION "1.17.
|
15
|
-
!define PANDOC_FILE "pandoc-${PANDOC_VERSION}-
|
16
|
+
!define PANDOC_VERSION "1.17.2"
|
17
|
+
!define PANDOC_FILE "pandoc-${PANDOC_VERSION}-windows.msi"
|
16
18
|
!define PANDOC_URL \
|
17
19
|
"https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/${PANDOC_FILE}"
|
18
20
|
|
@@ -74,7 +76,7 @@ VIAddVersionKey "LegalCopyright" "Copyright (C) 2015-2016 Christian Fillion"
|
|
74
76
|
!macro RELOAD_PATH
|
75
77
|
; reload the path to use the one freshly set by the ruby installer
|
76
78
|
ReadRegStr $R1 HKCU "Environment" "Path"
|
77
|
-
System::Call 'Kernel32::
|
79
|
+
System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("Path", R1).r2'
|
78
80
|
!macroend
|
79
81
|
|
80
82
|
Section /o "Ruby for Windows" InstallRuby
|
@@ -125,7 +127,7 @@ Section /o "Pandoc" InstallPandoc
|
|
125
127
|
!insertmacro EXEC_GUI '"msiexec" /i $R0 /passive' ${PANDOC_FILE}
|
126
128
|
SectionEnd
|
127
129
|
|
128
|
-
Section "
|
130
|
+
Section "reapack-index" InstallMain
|
129
131
|
SectionIn RO
|
130
132
|
|
131
133
|
DetailPrint "Installing reapack-index... (this can take a while)"
|
@@ -162,10 +164,9 @@ Function .onInit
|
|
162
164
|
nsExec::ExecToStack '"pandoc" --version'
|
163
165
|
Pop $0
|
164
166
|
|
165
|
-
StrCmp $0 "error" 0 +
|
167
|
+
StrCmp $0 "error" 0 +4 ; failed to launch pandoc
|
166
168
|
SectionGetFlags ${InstallPandoc} $1
|
167
169
|
IntOp $1 $1 | ${SF_SELECTED}
|
168
|
-
IntOp $1 $1 | ${SF_RO}
|
169
170
|
SectionSetFlags ${InstallPandoc} $1
|
170
171
|
|
171
172
|
SectionGetFlags ${InstallMain} $1
|
@@ -184,5 +185,5 @@ FunctionEnd
|
|
184
185
|
"Install Pandoc to enable automatic conversion from various document formats into RTF."
|
185
186
|
|
186
187
|
!insertmacro MUI_DESCRIPTION_TEXT ${InstallMain} \
|
187
|
-
"Install ReaPack
|
188
|
+
"Install Package indexer for git-based ReaPack repositories v${VERSION} on your computer."
|
188
189
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
data/test/cli/test_check.rb
CHANGED
@@ -66,7 +66,7 @@ Finished checks for 2 packages with 1 failure
|
|
66
66
|
wrapper ['--check'], setup: setup do
|
67
67
|
mkfile 'Chunky/Bacon.lua', "@version 1.0\n@provides ../background.png"
|
68
68
|
|
69
|
-
capture_io {
|
69
|
+
capture_io { @cli.run }
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
@@ -112,9 +112,7 @@ Finished checks for 1 package with 0 failures
|
|
112
112
|
mkfile 'Directory/test/1.lua', 'konnichiwa'
|
113
113
|
mkfile 'Directory/test2.lua', '@version 1.0'
|
114
114
|
|
115
|
-
assert_output
|
116
|
-
@cli.run
|
117
|
-
end
|
115
|
+
assert_output(nil, expected) { @cli.run }
|
118
116
|
end
|
119
117
|
end
|
120
118
|
|
@@ -148,9 +146,7 @@ Finished checks for 1 package with 0 failures
|
|
148
146
|
|
149
147
|
def test_unset_name_warning
|
150
148
|
wrapper ['--check'] do
|
151
|
-
assert_output
|
152
|
-
@cli.run
|
153
|
-
end
|
149
|
+
assert_output(nil, /index is unnamed/i) { @cli.run }
|
154
150
|
end
|
155
151
|
end
|
156
152
|
|
@@ -187,7 +183,7 @@ Finished checks for 2 packages with 1 failure
|
|
187
183
|
wrapper ['--check'], setup: setup do
|
188
184
|
mkfile 'test.lua', '@version 1.0'
|
189
185
|
|
190
|
-
|
186
|
+
@cli.run
|
191
187
|
end
|
192
188
|
end
|
193
189
|
|
data/test/cli/test_metadata.rb
CHANGED
@@ -7,19 +7,14 @@ class TestCLI::Metadata < MiniTest::Test
|
|
7
7
|
|
8
8
|
def test_website_link
|
9
9
|
wrapper ['-l http://cfillion.tk'] do
|
10
|
-
assert_output
|
11
|
-
assert_equal true, @cli.run
|
12
|
-
end
|
13
|
-
|
10
|
+
assert_output("1 new website link, empty index\n") { @cli.run }
|
14
11
|
assert_match 'rel="website">http://cfillion.tk</link>', read_index
|
15
12
|
end
|
16
13
|
end
|
17
14
|
|
18
15
|
def test_donation_link
|
19
16
|
wrapper ['--donation-link', 'Link Label=http://cfillion.tk'] do
|
20
|
-
assert_output
|
21
|
-
assert_equal true, @cli.run
|
22
|
-
end
|
17
|
+
assert_output("1 new donation link, empty index\n") { @cli.run }
|
23
18
|
|
24
19
|
assert_match 'rel="donation" href="http://cfillion.tk">Link Label</link>',
|
25
20
|
read_index
|
@@ -28,9 +23,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
28
23
|
|
29
24
|
def test_screenshot_link
|
30
25
|
wrapper ['--screenshot-link', 'Link Label http://cfillion.tk'] do
|
31
|
-
assert_output
|
32
|
-
assert_equal true, @cli.run
|
33
|
-
end
|
26
|
+
assert_output("1 new screenshot link, empty index\n") { @cli.run }
|
34
27
|
|
35
28
|
assert_match 'rel="screenshot" href="http://cfillion.tk">Link Label</link>',
|
36
29
|
read_index
|
@@ -41,9 +34,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
41
34
|
wrapper ['--link', 'shinsekai yori', '--donation-link', 'hello world',
|
42
35
|
'--screenshot-link', 'chunky bacon',
|
43
36
|
'--link', 'http://cfillion.tk'] do
|
44
|
-
stdout, stderr = capture_io
|
45
|
-
assert_equal true, @cli.run
|
46
|
-
end
|
37
|
+
stdout, stderr = capture_io { @cli.run }
|
47
38
|
|
48
39
|
assert_equal "1 new website link, empty index\n", stdout
|
49
40
|
assert_match /warning: --link: invalid link 'shinsekai yori'/i, stderr
|
@@ -55,10 +46,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
55
46
|
|
56
47
|
def test_remove_link
|
57
48
|
wrapper ['--link', 'http://test.com', '--link', '-http://test.com'] do
|
58
|
-
assert_output
|
59
|
-
assert_equal true, @cli.run
|
60
|
-
end
|
61
|
-
|
49
|
+
assert_output("1 new website link, 1 removed website link, empty index\n") { @cli.run }
|
62
50
|
refute_match 'rel="website">http://test.com</link>', read_index
|
63
51
|
end
|
64
52
|
end
|
@@ -77,7 +65,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
77
65
|
|
78
66
|
wrapper ['--ls-links'], setup: setup do
|
79
67
|
stdin, stderr = capture_io do
|
80
|
-
|
68
|
+
@cli.run
|
81
69
|
end
|
82
70
|
|
83
71
|
expected = <<-OUT
|
@@ -96,9 +84,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
96
84
|
setup = proc { opts << mkfile('README.md', '# Hello World') }
|
97
85
|
|
98
86
|
wrapper opts, setup: setup do
|
99
|
-
assert_output
|
100
|
-
assert_equal true, @cli.run
|
101
|
-
end
|
87
|
+
assert_output("1 modified metadata, empty index\n") { @cli.run }
|
102
88
|
|
103
89
|
assert_match 'Hello World', read_index
|
104
90
|
end
|
@@ -109,7 +95,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
109
95
|
wrapper ['--about=404.md'] do
|
110
96
|
assert_output "empty index\n",
|
111
97
|
/warning: --about: no such file or directory - 404.md/i do
|
112
|
-
|
98
|
+
@cli.run
|
113
99
|
end
|
114
100
|
end
|
115
101
|
end
|
@@ -126,7 +112,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
126
112
|
wrapper opts, setup: setup do
|
127
113
|
assert_output "empty index\n", /pandoc executable cannot be found/i do
|
128
114
|
ENV['PATH'] = String.new
|
129
|
-
|
115
|
+
@cli.run
|
130
116
|
end
|
131
117
|
end
|
132
118
|
ensure
|
@@ -145,10 +131,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
145
131
|
}
|
146
132
|
|
147
133
|
wrapper ['--remove-about'], setup: setup do
|
148
|
-
assert_output
|
149
|
-
assert_equal true, @cli.run
|
150
|
-
end
|
151
|
-
|
134
|
+
assert_output("1 modified metadata\n") { @cli.run }
|
152
135
|
refute_match 'Hello World', read_index
|
153
136
|
end
|
154
137
|
end
|
@@ -165,17 +148,13 @@ class TestCLI::Metadata < MiniTest::Test
|
|
165
148
|
}
|
166
149
|
|
167
150
|
wrapper ['--dump-about'], setup: setup do
|
168
|
-
assert_output
|
169
|
-
assert_equal true, @cli.run
|
170
|
-
end
|
151
|
+
assert_output('Hello World') { @cli.run }
|
171
152
|
end
|
172
153
|
end
|
173
154
|
|
174
155
|
def test_unset_name_warning
|
175
156
|
wrapper do
|
176
|
-
_, stderr = capture_io
|
177
|
-
assert_equal true, @cli.run
|
178
|
-
end
|
157
|
+
_, stderr = capture_io { @cli.run }
|
179
158
|
|
180
159
|
assert_match /index is unnamed/i, stderr
|
181
160
|
refute_match File.dirname($0), stderr
|
@@ -185,9 +164,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
185
164
|
|
186
165
|
def test_set_name
|
187
166
|
wrapper ['--name=Hello World'] do
|
188
|
-
_, stderr = capture_io
|
189
|
-
assert_equal true, @cli.run
|
190
|
-
end
|
167
|
+
_, stderr = capture_io { @cli.run }
|
191
168
|
|
192
169
|
refute_match /index is unnamed/i, stderr
|
193
170
|
assert_match 'name="Hello World"', read_index
|
@@ -196,9 +173,7 @@ class TestCLI::Metadata < MiniTest::Test
|
|
196
173
|
|
197
174
|
def test_set_name_invalid
|
198
175
|
wrapper ['--name=Hello/World'] do
|
199
|
-
_, stderr = capture_io
|
200
|
-
assert_equal true, @cli.run
|
201
|
-
end
|
176
|
+
_, stderr = capture_io { @cli.run }
|
202
177
|
|
203
178
|
refute_match /The name of this index is unset/i, stderr
|
204
179
|
assert_match /invalid name 'Hello\/World'/i, stderr
|
data/test/cli/test_scan.rb
CHANGED
@@ -34,9 +34,7 @@ class TestCLI::Scan < MiniTest::Test
|
|
34
34
|
mkfile('Category/Sub/test2.lua', '@version 1.0'),
|
35
35
|
]
|
36
36
|
|
37
|
-
assert_output
|
38
|
-
assert_equal true, @cli.run
|
39
|
-
end
|
37
|
+
assert_output("2 new categories, 2 new packages, 2 new versions\n") { @cli.run }
|
40
38
|
|
41
39
|
assert_equal @git.last_commit.id, @cli.index.commit
|
42
40
|
assert_equal @git.last_commit.time, @cli.index.time
|
@@ -47,7 +45,7 @@ class TestCLI::Scan < MiniTest::Test
|
|
47
45
|
def test_empty_branch
|
48
46
|
wrapper do
|
49
47
|
assert_output nil, /the current branch does not contains any commit/i do
|
50
|
-
|
48
|
+
@cli.run
|
51
49
|
end
|
52
50
|
end
|
53
51
|
end
|
@@ -60,10 +58,7 @@ class TestCLI::Scan < MiniTest::Test
|
|
60
58
|
Dir.mkdir mkpath('test')
|
61
59
|
Dir.chdir mkpath('test')
|
62
60
|
|
63
|
-
assert_output
|
64
|
-
assert_equal true, @cli.run
|
65
|
-
end
|
66
|
-
|
61
|
+
assert_output(/1 new package/) { @cli.run }
|
67
62
|
assert_match 'test1.lua', read_index
|
68
63
|
end
|
69
64
|
end
|
@@ -85,7 +80,7 @@ class TestCLI::Scan < MiniTest::Test
|
|
85
80
|
File.delete mkpath('cat/test.lua')
|
86
81
|
@git.create_commit 'third commit', [mkpath('cat/test.lua')]
|
87
82
|
|
88
|
-
|
83
|
+
@cli.run
|
89
84
|
end
|
90
85
|
end
|
91
86
|
|
@@ -108,7 +103,7 @@ processing [a-f0-9]{7}: third commit
|
|
108
103
|
@git.create_commit 'initial commit', [mkfile('README.md', '# Hello World')]
|
109
104
|
|
110
105
|
stdout, stderr = capture_io do
|
111
|
-
|
106
|
+
@cli.run
|
112
107
|
end
|
113
108
|
|
114
109
|
assert_equal "empty index\n", stdout
|
@@ -122,7 +117,7 @@ processing [a-f0-9]{7}: third commit
|
|
122
117
|
[mkfile('cat/test.lua', 'no version tag in this script!')]
|
123
118
|
|
124
119
|
assert_output nil, /warning: cat\/test\.lua:\n\x20\x20missing tag/i do
|
125
|
-
|
120
|
+
@cli.run
|
126
121
|
end
|
127
122
|
end
|
128
123
|
end
|
@@ -133,7 +128,7 @@ processing [a-f0-9]{7}: third commit
|
|
133
128
|
[mkfile('cat/test.lua', 'no version tag in this script!')]
|
134
129
|
|
135
130
|
_, stderr = capture_io do
|
136
|
-
|
131
|
+
@cli.run
|
137
132
|
end
|
138
133
|
|
139
134
|
refute_match /warning/i, stderr
|
@@ -145,9 +140,7 @@ processing [a-f0-9]{7}: third commit
|
|
145
140
|
@git.create_commit 'initial commit',
|
146
141
|
[mkfile('cat/test.lua', 'no version tag in this script!')]
|
147
142
|
|
148
|
-
assert_output
|
149
|
-
assert_equal true, @cli.run
|
150
|
-
end
|
143
|
+
assert_output(nil, /warning/i) { @cli.run }
|
151
144
|
end
|
152
145
|
end
|
153
146
|
|
@@ -166,9 +159,7 @@ processing [a-f0-9]{7}: third commit
|
|
166
159
|
@git.create_commit 'second commit',
|
167
160
|
[mkfile('cat/test2.lua', '@version 1.0')]
|
168
161
|
|
169
|
-
assert_output
|
170
|
-
assert_equal true, @cli.run
|
171
|
-
end
|
162
|
+
assert_output(nil, '') { @cli.run }
|
172
163
|
|
173
164
|
refute_match 'test1.lua', read_index
|
174
165
|
assert_match 'test2.lua', read_index
|
@@ -177,7 +168,7 @@ processing [a-f0-9]{7}: third commit
|
|
177
168
|
|
178
169
|
def test_amend
|
179
170
|
wrapper ['--amend'] do
|
180
|
-
|
171
|
+
@cli.index.amend
|
181
172
|
end
|
182
173
|
end
|
183
174
|
|
@@ -199,7 +190,7 @@ processing [a-f0-9]{7}: third commit
|
|
199
190
|
]
|
200
191
|
|
201
192
|
assert_output "1 new category, 1 new package, 1 new version\n" do
|
202
|
-
|
193
|
+
@cli.run
|
203
194
|
end
|
204
195
|
|
205
196
|
refute_match 'Hello/World.lua', read_index
|
@@ -216,10 +207,7 @@ processing [a-f0-9]{7}: third commit
|
|
216
207
|
File.delete mkpath('cat/test.lua')
|
217
208
|
@git.create_commit 'second commit', [mkpath('cat/test.lua')]
|
218
209
|
|
219
|
-
assert_output
|
220
|
-
assert_equal true, @cli.run
|
221
|
-
end
|
222
|
-
|
210
|
+
assert_output(/1 removed package/i) { @cli.run }
|
223
211
|
refute_match 'test.lua', read_index
|
224
212
|
end
|
225
213
|
end
|
@@ -240,7 +228,7 @@ processing [a-f0-9]{7}: third commit
|
|
240
228
|
]
|
241
229
|
|
242
230
|
_, stderr = capture_io do
|
243
|
-
|
231
|
+
@cli.run
|
244
232
|
end
|
245
233
|
|
246
234
|
refute_match 'conflict', stderr
|
@@ -262,7 +250,7 @@ processing [a-f0-9]{7}: third commit
|
|
262
250
|
]
|
263
251
|
|
264
252
|
_, stderr = capture_io do
|
265
|
-
|
253
|
+
@cli.run
|
266
254
|
end
|
267
255
|
|
268
256
|
refute_match 'conflict', stderr
|
@@ -286,7 +274,7 @@ processing [a-f0-9]{7}: third commit
|
|
286
274
|
}
|
287
275
|
|
288
276
|
wrapper options, setup: setup do
|
289
|
-
capture_io {
|
277
|
+
capture_io { @cli.run }
|
290
278
|
|
291
279
|
refute_match 'test1.lua', read_index, 'The initial commit was scanned'
|
292
280
|
assert_match 'test2.lua', read_index
|
@@ -311,7 +299,7 @@ processing [a-f0-9]{7}: third commit
|
|
311
299
|
}
|
312
300
|
|
313
301
|
wrapper options, setup: setup do
|
314
|
-
capture_io {
|
302
|
+
capture_io { @cli.run }
|
315
303
|
|
316
304
|
refute_match 'test1.lua', read_index, 'The initial commit was scanned'
|
317
305
|
assert_match 'test2.lua', read_index
|
@@ -330,7 +318,7 @@ processing [a-f0-9]{7}: third commit
|
|
330
318
|
}
|
331
319
|
|
332
320
|
wrapper options, setup: setup do
|
333
|
-
capture_io {
|
321
|
+
capture_io { @cli.run }
|
334
322
|
|
335
323
|
assert_equal false, @cli.index.auto_bump_commit
|
336
324
|
refute_match %Q[commit="#{options[1]}"], read_index
|
@@ -354,7 +342,7 @@ processing [a-f0-9]{7}: third commit
|
|
354
342
|
}
|
355
343
|
|
356
344
|
wrapper options, setup: setup do
|
357
|
-
capture_io {
|
345
|
+
capture_io { @cli.run }
|
358
346
|
|
359
347
|
refute_match 'version name="1"', read_index, 'The initial commit was scanned'
|
360
348
|
assert_match 'version name="2"', read_index
|
@@ -378,7 +366,7 @@ processing [a-f0-9]{7}: third commit
|
|
378
366
|
}
|
379
367
|
|
380
368
|
wrapper options, setup: setup do
|
381
|
-
capture_io {
|
369
|
+
capture_io { @cli.run }
|
382
370
|
assert_match 'test1.lua', read_index
|
383
371
|
end
|
384
372
|
end
|
@@ -393,7 +381,7 @@ processing [a-f0-9]{7}: third commit
|
|
393
381
|
}
|
394
382
|
|
395
383
|
wrapper options, setup: setup do
|
396
|
-
capture_io {
|
384
|
+
capture_io { @cli.run }
|
397
385
|
end
|
398
386
|
end
|
399
387
|
|
@@ -403,12 +391,25 @@ processing [a-f0-9]{7}: third commit
|
|
403
391
|
@git.create_commit 'initial commit', [mkfile('README.md')]
|
404
392
|
|
405
393
|
assert_output nil, /--scan: bad file or revision: '#{Regexp.escape hash}'/i do
|
406
|
-
|
394
|
+
assert_throws(:stop, false) { @cli.run }
|
407
395
|
end
|
408
396
|
end
|
409
397
|
}
|
410
398
|
end
|
411
399
|
|
400
|
+
def test_report_right_invalid_hash
|
401
|
+
wrapper ['--scan', 'README.md', '--scan', INVALID_HASHES.first] do
|
402
|
+
@git.create_commit 'initial commit', [mkfile('README.md')]
|
403
|
+
|
404
|
+
_, stderr = capture_io do
|
405
|
+
assert_throws(:stop, false) { @cli.run }
|
406
|
+
end
|
407
|
+
|
408
|
+
refute_match 'README.md', stderr
|
409
|
+
assert_match INVALID_HASHES.first, stderr
|
410
|
+
end
|
411
|
+
end
|
412
|
+
|
412
413
|
def test_rebuild
|
413
414
|
setup = proc {
|
414
415
|
@git.create_commit 'initial commit',
|
@@ -428,9 +429,7 @@ processing [a-f0-9]{7}: third commit
|
|
428
429
|
@git.create_commit 'second commit',
|
429
430
|
[mkfile('cat/test2.lua', '@version 1.0')]
|
430
431
|
|
431
|
-
assert_output
|
432
|
-
assert_equal true, @cli.run
|
433
|
-
end
|
432
|
+
assert_output(nil, '') { @cli.run }
|
434
433
|
|
435
434
|
contents = read_index
|
436
435
|
assert_match 'test1.lua', contents
|
@@ -457,9 +456,7 @@ processing [a-f0-9]{7}: third commit
|
|
457
456
|
@git.create_commit 'second commit',
|
458
457
|
[mkfile('cat/test2.lua', '@version 1.0')]
|
459
458
|
|
460
|
-
assert_output
|
461
|
-
assert_equal true, @cli.run
|
462
|
-
end
|
459
|
+
assert_output(nil, '') { @cli.run }
|
463
460
|
|
464
461
|
contents = read_index
|
465
462
|
refute_match 'test1.lua', contents
|
data/test/index/test_provides.rb
CHANGED
@@ -87,19 +87,6 @@ class TestIndex::Provides < MiniTest::Test
|
|
87
87
|
assert_equal expected, File.read(index.path)
|
88
88
|
end
|
89
89
|
|
90
|
-
def test_invalid_options
|
91
|
-
index = ReaPack::Index.new @dummy_path
|
92
|
-
index.url_template = 'http://host/$path'
|
93
|
-
|
94
|
-
error = assert_raises ReaPack::Index::Error do
|
95
|
-
index.scan 'cat/test.lua', <<-IN
|
96
|
-
@version 1.0
|
97
|
-
@provides
|
98
|
-
[hello] test.png
|
99
|
-
IN
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
90
|
def test_custom_url
|
104
91
|
index = ReaPack::Index.new @dummy_path
|
105
92
|
index.files = ['Category/script.lua']
|
@@ -108,11 +95,14 @@ class TestIndex::Provides < MiniTest::Test
|
|
108
95
|
@version 1.0
|
109
96
|
@provides
|
110
97
|
script.lua http://google.com/download/$commit/$version/$path
|
98
|
+
/root http://google.com/download/$commit/$version/$path
|
111
99
|
IN
|
112
100
|
|
113
101
|
index.write!
|
114
|
-
|
115
|
-
|
102
|
+
|
103
|
+
xml = File.read index.path
|
104
|
+
assert_match 'http://google.com/download/master/1.0/Category/script.lua', xml
|
105
|
+
assert_match 'file="../root"', xml
|
116
106
|
end
|
117
107
|
|
118
108
|
def test_empty_tag
|
data/test/test_cli.rb
CHANGED
@@ -5,22 +5,19 @@ class TestCLI < MiniTest::Test
|
|
5
5
|
|
6
6
|
def test_help
|
7
7
|
assert_output /--help/, '' do
|
8
|
-
|
9
|
-
assert_equal true, i.run # does nothing
|
8
|
+
assert_throws(:stop, true) { ReaPack::Index::CLI.new ['--help'] }
|
10
9
|
end
|
11
10
|
end
|
12
11
|
|
13
12
|
def test_version
|
14
13
|
assert_output /#{Regexp.escape ReaPack::Index::VERSION.to_s}/, '' do
|
15
|
-
|
16
|
-
assert_equal true, i.run # does nothing
|
14
|
+
assert_throws(:stop, true) { ReaPack::Index::CLI.new ['--version'] }
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
20
18
|
def test_help_version
|
21
19
|
stdout, _ = capture_io do
|
22
|
-
|
23
|
-
assert_equal true, i.run # does nothing
|
20
|
+
assert_throws(:stop, true) { ReaPack::Index::CLI.new ['--help', '--version'] }
|
24
21
|
end
|
25
22
|
|
26
23
|
refute_match ReaPack::Index::VERSION.to_s, stdout
|
@@ -28,22 +25,19 @@ class TestCLI < MiniTest::Test
|
|
28
25
|
|
29
26
|
def test_invalid_option
|
30
27
|
assert_output '', /reapack-index: invalid option: --hello-world/i do
|
31
|
-
|
32
|
-
assert_equal false, i.run
|
28
|
+
assert_throws(:stop, false) { ReaPack::Index::CLI.new ['--hello-world'] }
|
33
29
|
end
|
34
30
|
end
|
35
31
|
|
36
32
|
def test_ambiguous_option
|
37
33
|
assert_output '', /reapack-index: ambiguous option: --c/i do
|
38
|
-
|
39
|
-
assert_equal false, i.run
|
34
|
+
assert_throws(:stop, false) { ReaPack::Index::CLI.new ['--c'] }
|
40
35
|
end
|
41
36
|
end
|
42
37
|
|
43
38
|
def test_missing_argument
|
44
39
|
assert_output nil, /missing argument/ do
|
45
|
-
|
46
|
-
assert_equal false, i.run # does nothing
|
40
|
+
assert_throws(:stop, false) { ReaPack::Index::CLI.new ['--output'] }
|
47
41
|
end
|
48
42
|
end
|
49
43
|
|
@@ -96,10 +90,12 @@ class TestCLI < MiniTest::Test
|
|
96
90
|
end
|
97
91
|
|
98
92
|
def test_config
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
93
|
+
catch :stop do
|
94
|
+
assert_output /--help/, '' do
|
95
|
+
wrapper [], setup: proc {
|
96
|
+
mkfile '.reapack-index.conf', '--help'
|
97
|
+
}
|
98
|
+
end
|
103
99
|
end
|
104
100
|
end
|
105
101
|
|
@@ -124,7 +120,7 @@ class TestCLI < MiniTest::Test
|
|
124
120
|
mkfile('cat/test.lua', 'no version tag in this script!')
|
125
121
|
]
|
126
122
|
|
127
|
-
|
123
|
+
@cli.run
|
128
124
|
end
|
129
125
|
end
|
130
126
|
|
@@ -140,7 +136,7 @@ class TestCLI < MiniTest::Test
|
|
140
136
|
Dir.chdir File.join(@git.path, 'Category')
|
141
137
|
|
142
138
|
assert_output /--help/ do
|
143
|
-
ReaPack::Index::CLI.new
|
139
|
+
catch :stop do ReaPack::Index::CLI.new end
|
144
140
|
end
|
145
141
|
end
|
146
142
|
end
|
@@ -168,21 +164,18 @@ class TestCLI < MiniTest::Test
|
|
168
164
|
end
|
169
165
|
|
170
166
|
assert_output '', no_such_file do
|
171
|
-
|
172
|
-
assert_equal false, i.run
|
167
|
+
assert_throws(:stop, false) { ReaPack::Index::CLI.new ['/hello/world'] }
|
173
168
|
end
|
174
169
|
|
175
170
|
assert_output '', /could not find repository/i do
|
176
|
-
|
177
|
-
assert_equal false, i.run
|
171
|
+
assert_throws(:stop, false) { ReaPack::Index::CLI.new ['/'] }
|
178
172
|
end
|
179
173
|
end
|
180
174
|
|
181
175
|
def test_invalid_index
|
182
176
|
assert_output '', /\A'.+index\.xml' is not a ReaPack index file\Z/ do
|
183
177
|
setup = proc { mkfile 'index.xml', "\0" }
|
184
|
-
wrapper [], setup: setup do
|
185
|
-
end
|
178
|
+
assert_throws(:stop, false) { wrapper [], setup: setup do end }
|
186
179
|
end
|
187
180
|
end
|
188
181
|
|
@@ -192,7 +185,7 @@ class TestCLI < MiniTest::Test
|
|
192
185
|
[mkfile('README.md', '# Hello World')]
|
193
186
|
|
194
187
|
stdout, stderr = capture_io do
|
195
|
-
|
188
|
+
@cli.run
|
196
189
|
end
|
197
190
|
|
198
191
|
assert_equal "empty index\n", stdout
|
@@ -225,9 +218,7 @@ class TestCLI < MiniTest::Test
|
|
225
218
|
[mkfile('cat/test.lua', 'no version tag in this script!')]
|
226
219
|
|
227
220
|
# must output a new line before 'warning:'
|
228
|
-
assert_output
|
229
|
-
assert_equal true, @cli.run
|
230
|
-
end
|
221
|
+
assert_output(nil, /\nwarning:/i) { @cli.run }
|
231
222
|
end
|
232
223
|
end
|
233
224
|
|
@@ -236,9 +227,7 @@ class TestCLI < MiniTest::Test
|
|
236
227
|
@git.create_commit 'initial commit',
|
237
228
|
[mkfile('cat/test.lua', 'no version tag in this script!')]
|
238
229
|
|
239
|
-
assert_output
|
240
|
-
assert_equal true, @cli.run
|
241
|
-
end
|
230
|
+
assert_output('', '') { @cli.run }
|
242
231
|
end
|
243
232
|
end
|
244
233
|
|
data/test/test_git.rb
CHANGED
@@ -164,9 +164,10 @@ class TestGit < MiniTest::Test
|
|
164
164
|
end
|
165
165
|
|
166
166
|
def test_inspect_commit
|
167
|
-
c = @git.create_commit
|
167
|
+
c = @git.create_commit "summary\n\nlong message", []
|
168
168
|
assert_match c.class.name, c.inspect
|
169
169
|
assert_match c.id, c.inspect
|
170
|
-
assert_match c.
|
170
|
+
assert_match c.summary, c.inspect
|
171
|
+
refute_match c.message, c.inspect
|
171
172
|
end
|
172
173
|
end
|
data/test/test_index.rb
CHANGED
@@ -253,7 +253,7 @@ class TestIndex < MiniTest::Test
|
|
253
253
|
assert_match /bee.+zebra/m, File.read(index.path)
|
254
254
|
end
|
255
255
|
|
256
|
-
def
|
256
|
+
def test_do_not_sort_versions
|
257
257
|
original = <<-XML
|
258
258
|
<?xml version="1.0" encoding="utf-8"?>
|
259
259
|
<index version="1">
|
@@ -273,6 +273,31 @@ class TestIndex < MiniTest::Test
|
|
273
273
|
assert_equal original, File.read(index.path)
|
274
274
|
end
|
275
275
|
|
276
|
+
def test_sort_package_tags
|
277
|
+
original = <<-XML
|
278
|
+
<?xml version="1.0" encoding="utf-8"?>
|
279
|
+
<index version="1">
|
280
|
+
<category name="Other">
|
281
|
+
<reapack name="test.lua">
|
282
|
+
<version name="z"/>
|
283
|
+
<metadata>
|
284
|
+
<link/>
|
285
|
+
<description/>
|
286
|
+
</metadata>
|
287
|
+
</reapack>
|
288
|
+
</category>
|
289
|
+
</index>
|
290
|
+
XML
|
291
|
+
|
292
|
+
File.write @dummy_path, original
|
293
|
+
index = ReaPack::Index.new @dummy_path
|
294
|
+
index.write!
|
295
|
+
|
296
|
+
contents = File.read index.path
|
297
|
+
assert_match /metadata.+version/m, contents
|
298
|
+
assert_match /description.+link/m, contents
|
299
|
+
end
|
300
|
+
|
276
301
|
def test_dont_mess_with_link_ordering
|
277
302
|
# https://bugs.ruby-lang.org/issues/11907
|
278
303
|
original = <<-XML
|
data/test/test_metadata.rb
CHANGED
@@ -482,6 +482,23 @@ class TestMetadata < MiniTest::Test
|
|
482
482
|
assert_equal false, md.modified?
|
483
483
|
end
|
484
484
|
|
485
|
+
def test_about_markdown_blank_before_header
|
486
|
+
before = make_node '<index/>'
|
487
|
+
md = ReaPack::Index::Metadata.new before
|
488
|
+
md.about = "First Line\n# Header\n* List"
|
489
|
+
|
490
|
+
refute_match 'Firstn Line # Header * List', before.to_s
|
491
|
+
assert_match "\\bullet", before.to_s
|
492
|
+
end
|
493
|
+
|
494
|
+
def test_about_markdown_no_4_space_rule
|
495
|
+
before = make_node '<index/>'
|
496
|
+
md = ReaPack::Index::Metadata.new before
|
497
|
+
md.about = "- a\n- b\n - c\n- d"
|
498
|
+
|
499
|
+
assert_match "\\endash", before.to_s # nested list (c)
|
500
|
+
end
|
501
|
+
|
485
502
|
def test_pandoc_not_found
|
486
503
|
old_path = ENV['PATH']
|
487
504
|
ENV['PATH'] = String.new
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reapack-index
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1beta4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cfillion
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.
|
131
|
+
version: 1.3beta4
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.
|
138
|
+
version: 1.3beta4
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: nokogiri
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|