roger 1.7.0 → 1.7.1
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/.rubocop.yml +3 -3
- data/CHANGELOG.md +5 -1
- data/doc/templating.md +6 -2
- data/lib/roger/cli/serve.rb +1 -1
- data/lib/roger/cli/test.rb +0 -2
- data/lib/roger/generators.rb +3 -3
- data/lib/roger/generators/new.rb +1 -1
- data/lib/roger/helpers/get_callable.rb +1 -1
- data/lib/roger/helpers/get_files.rb +1 -1
- data/lib/roger/helpers/logging.rb +2 -2
- data/lib/roger/helpers/registration.rb +2 -2
- data/lib/roger/project.rb +2 -2
- data/lib/roger/release.rb +2 -3
- data/lib/roger/release/cleaner.rb +8 -10
- data/lib/roger/release/finalizers/git_branch.rb +19 -19
- data/lib/roger/release/finalizers/rsync.rb +2 -2
- data/lib/roger/release/injector.rb +4 -8
- data/lib/roger/release/processors.rb +2 -2
- data/lib/roger/release/processors/mockup.rb +1 -1
- data/lib/roger/release/scm.rb +3 -3
- data/lib/roger/release/scm/git.rb +1 -1
- data/lib/roger/renderer.rb +25 -12
- data/lib/roger/resolver.rb +10 -10
- data/lib/roger/rogerfile.rb +2 -2
- data/lib/roger/server.rb +6 -6
- data/lib/roger/template.rb +19 -23
- data/lib/roger/template/helpers/capture.rb +1 -1
- data/lib/roger/template/helpers/partial.rb +5 -5
- data/lib/roger/test.rb +4 -4
- data/lib/roger/version.rb +1 -1
- data/roger.gemspec +1 -1
- data/test/helpers/generators.rb +2 -2
- data/test/project/lib/tests/noop/lib/cli.rb +1 -2
- data/test/unit/cli/cli_release_test.rb +39 -0
- data/test/unit/cli/cli_serve_test.rb +1 -1
- data/test/unit/generators/generator_test.rb +28 -0
- data/test/unit/generators/new_test.rb +74 -0
- data/test/unit/generators_test.rb +5 -15
- data/test/unit/helpers/get_files_test.rb +1 -1
- data/test/unit/mockupfile_test.rb +1 -1
- data/test/unit/rack/roger_test.rb +3 -1
- data/test/unit/release/finalizers/git_branch_test.rb +2 -2
- data/test/unit/release/injector_test.rb +11 -0
- data/test/unit/release/processors/mockup_test.rb +3 -1
- data/test/unit/release/processors_test.rb +4 -4
- data/test/unit/renderer/renderer_layout_test.rb +33 -4
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 513655e105f751dca8bbc543a7256b732aeb511b
|
4
|
+
data.tar.gz: e9d571bfed7a5daa925441689eee296e489cd64c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91fb6db2902cf5c9aa25a95d30c5ad2cb75bcb701d04fdddaa182c2544f0d4d2af2cc7c020398c960e51fdbc8774407a2b8b1b6679184f961ad471485ca95cd3
|
7
|
+
data.tar.gz: 60cda336208d541df3bdd447343a0a46a87feab919c84c55c70a5ac9b2c8cfeeab4d3ef931f64fc1f025195538e90de1cf6ebcb75a6f70dd6ced94d656e9cb03
|
data/.rubocop.yml
CHANGED
@@ -24,8 +24,8 @@ Style/ClassAndModuleChildren:
|
|
24
24
|
|
25
25
|
# By default, the rails cops are not run. Override in project or home
|
26
26
|
# directory .rubocop.yml files, or by giving the -R/--rails option.
|
27
|
-
|
28
|
-
|
27
|
+
Rails:
|
28
|
+
Enabled: false
|
29
29
|
|
30
30
|
# Disabled cops
|
31
31
|
Metrics/ClassLength:
|
@@ -44,4 +44,4 @@ Lint/AssignmentInCondition:
|
|
44
44
|
Enabled: false
|
45
45
|
|
46
46
|
Style/SingleLineBlockParams:
|
47
|
-
Enabled: false
|
47
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## Version 1.7.1
|
4
|
+
* Allow setting defaults per template extension.
|
5
|
+
* Minor fixes
|
6
|
+
|
3
7
|
## Version 1.7.0
|
4
8
|
* Finalizers and processors now use the same stack. This means you can run processors after certain finalizers
|
5
9
|
* Finalizers and processors now have exactly the same API
|
@@ -268,4 +272,4 @@ There should be no breaking changes between 0.12.5 and 0.13.0
|
|
268
272
|
* Replace CLI "generate" command with "new" subcommand and add support for remote git skeletons based on Thor templating.
|
269
273
|
* Add most simple mockup directory as default_template
|
270
274
|
* Requirejs processor updated so it will search for a global r.js command, a local npm r.js command and a vendored r.js command
|
271
|
-
* Minor fixes and changes
|
275
|
+
* Minor fixes and changes
|
data/doc/templating.md
CHANGED
@@ -73,10 +73,14 @@ Layout (after)
|
|
73
73
|
```
|
74
74
|
|
75
75
|
### Default layout
|
76
|
-
It is possible to define a global default layout in the Rogerfile.
|
76
|
+
It is possible to define a global default layout per template extension in the Rogerfile.
|
77
77
|
|
78
78
|
```
|
79
|
-
roger.project.options[:renderer][:layout] =
|
79
|
+
roger.project.options[:renderer][:layout] = {
|
80
|
+
"html.erb" => "my_default_layout",
|
81
|
+
"md.erb" => "my_markdown_layout",
|
82
|
+
"md" => "my_markdown_layout"
|
83
|
+
}
|
80
84
|
```
|
81
85
|
|
82
86
|
The layout can of course be overwritten in the frontmatter. Setting an empty layout will disable the default layout.
|
data/lib/roger/cli/serve.rb
CHANGED
data/lib/roger/cli/test.rb
CHANGED
@@ -9,8 +9,6 @@ module Roger
|
|
9
9
|
|
10
10
|
desc "all", "Run all tests defined in Rogerfile. (this is the default action)"
|
11
11
|
def all
|
12
|
-
# If we use fail here the test breaks; no idea why
|
13
|
-
# rubocop:disable Style/SignalException:
|
14
12
|
raise(Thor::Error, "Test failed") unless Cli::Base.project.test.run!
|
15
13
|
end
|
16
14
|
end
|
data/lib/roger/generators.rb
CHANGED
@@ -12,13 +12,13 @@ module Roger
|
|
12
12
|
def self.register(name, klass = nil)
|
13
13
|
name, klass = generator_name(name, klass)
|
14
14
|
|
15
|
-
|
15
|
+
raise(
|
16
16
|
ArgumentError,
|
17
17
|
"Generator name '#{name.inspect}' already in use"
|
18
18
|
) if Cli::Generate.tasks.key?(name)
|
19
19
|
|
20
20
|
usage = "#{name} #{klass.arguments.map(&:banner).join(' ')}"
|
21
|
-
long_desc =
|
21
|
+
long_desc = klass.desc || "Run #{name} generator"
|
22
22
|
|
23
23
|
Cli::Generate.register klass, name, usage, long_desc
|
24
24
|
Cli::Generate.tasks[name].options = klass.class_options if klass.class_options
|
@@ -31,7 +31,7 @@ module Roger
|
|
31
31
|
klass = name
|
32
32
|
name = klass.to_s.sub(/Generator$/, "").sub(/^.*Generators::/, "").downcase
|
33
33
|
else
|
34
|
-
|
34
|
+
raise ArgumentError, "Name must be a symbol" unless name.is_a?(Symbol)
|
35
35
|
end
|
36
36
|
|
37
37
|
[name.to_s, klass]
|
data/lib/roger/generators/new.rb
CHANGED
@@ -57,7 +57,7 @@ class Roger::Generators::NewGenerator < Thor::Group
|
|
57
57
|
def git_clone_template(template)
|
58
58
|
tmp_dir = temp_directory
|
59
59
|
|
60
|
-
if run("git clone --depth=1 #{Shellwords.escape(template)} #{tmp_dir}")
|
60
|
+
if run("git clone -q --depth=1 #{Shellwords.escape(template)} #{tmp_dir}")
|
61
61
|
say "Cloned template from #{template}"
|
62
62
|
run("rm -rf #{tmp_dir + '.git'}")
|
63
63
|
@cleanup << tmp_dir.to_s
|
@@ -21,7 +21,7 @@ module Roger
|
|
21
21
|
error_message = "Could not resolve #{callable.inspect}. Callable must"
|
22
22
|
error_message << "be an object that responds to #call or a symbol that resolve"
|
23
23
|
error_message << "to such an object or a class with a #call instance method."
|
24
|
-
|
24
|
+
raise ArgumentError, error_message
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -19,8 +19,8 @@ module Roger
|
|
19
19
|
|
20
20
|
type = to_s.split("::").last
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
raise ArgumentError, "#{type} name '#{name.inspect}' already in use" if map.key?(name)
|
23
|
+
raise ArgumentError, "Name must be a symbol" unless name.is_a?(Symbol)
|
24
24
|
|
25
25
|
map[name] = processor
|
26
26
|
end
|
data/lib/roger/project.rb
CHANGED
@@ -66,8 +66,8 @@ module Roger
|
|
66
66
|
def partial_path=(p)
|
67
67
|
@partial_path = single_or_multiple_paths(p)
|
68
68
|
end
|
69
|
-
|
70
|
-
|
69
|
+
alias partials_path partial_path
|
70
|
+
alias partials_path= partial_path=
|
71
71
|
|
72
72
|
def layouts_path=(p)
|
73
73
|
@layouts_path = single_or_multiple_paths(p)
|
data/lib/roger/release.rb
CHANGED
@@ -80,7 +80,7 @@ module Roger
|
|
80
80
|
when :fixed
|
81
81
|
@_scm = Release::Scm::Fixed.new
|
82
82
|
else
|
83
|
-
|
83
|
+
raise "Unknown SCM #{options[:scm].inspect}"
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
@@ -240,7 +240,7 @@ module Roger
|
|
240
240
|
rm_rf(build_path)
|
241
241
|
end
|
242
242
|
|
243
|
-
unless target_path.exist?
|
243
|
+
unless target_path.exist?
|
244
244
|
log self, "Creating target path \"#{target_path}\""
|
245
245
|
mkdir target_path
|
246
246
|
end
|
@@ -259,7 +259,6 @@ module Roger
|
|
259
259
|
@stack.push([Roger::Release::Processors::UrlRelativizer.new, {}])
|
260
260
|
end
|
261
261
|
|
262
|
-
# rubocop:disable Style/GuardClause
|
263
262
|
unless find_in_stack(Roger::Release::Finalizers::Dir)
|
264
263
|
@stack.push([Roger::Release::Finalizers::Dir.new, {}])
|
265
264
|
end
|
@@ -36,21 +36,19 @@ module Roger
|
|
36
36
|
begin
|
37
37
|
build_path = Pathname.new(build_path).realpath.to_s
|
38
38
|
path = Pathname.new(path)
|
39
|
-
if path.absolute?
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
path = if path.absolute?
|
40
|
+
path.realpath.to_s
|
41
|
+
else
|
42
|
+
Pathname.new(File.join(build_path.to_s, path)).realpath.to_s
|
43
|
+
end
|
44
44
|
rescue Errno::ENOENT
|
45
45
|
# Real path does not exist
|
46
46
|
return false
|
47
47
|
end
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
fail "Cleaning pattern is not inside build directory"
|
53
|
-
end
|
49
|
+
raise "Cleaning pattern is not inside build directory" unless path[build_path]
|
50
|
+
|
51
|
+
true
|
54
52
|
end
|
55
53
|
end
|
56
54
|
end
|
@@ -58,8 +58,8 @@ module Roger::Release::Finalizers
|
|
58
58
|
FileUtils.cp_r @release.build_path.to_s + "/.", clone_dir.to_s
|
59
59
|
|
60
60
|
commands = [
|
61
|
-
%w(git add .), # 4. Add all files
|
62
|
-
%w(git commit -a -m) << "Release #{@release.scm.version}" # 5. Commit
|
61
|
+
%w(git add . ), # 4. Add all files
|
62
|
+
%w(git commit -q -a -m) << "Release #{@release.scm.version}" # 5. Commit
|
63
63
|
]
|
64
64
|
|
65
65
|
# 6. Git push if in options
|
@@ -74,20 +74,20 @@ module Roger::Release::Finalizers
|
|
74
74
|
# Check if remote already has branch
|
75
75
|
def remote_has_branch?(remote, branch)
|
76
76
|
command = Shellwords.join([
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
77
|
+
"git",
|
78
|
+
"ls-remote",
|
79
|
+
"--heads",
|
80
|
+
remote,
|
81
|
+
"refs/heads/#{branch}"
|
82
|
+
])
|
83
83
|
`#{command}` != ""
|
84
84
|
end
|
85
85
|
|
86
86
|
def create_empty_branch(clone_dir, remote, branch)
|
87
87
|
commands = [
|
88
|
-
%w(git init),
|
88
|
+
%w(git init -q),
|
89
89
|
%w(git remote add origin) << remote,
|
90
|
-
%w(git checkout -b) << branch
|
90
|
+
%w(git checkout -q -b) << branch
|
91
91
|
]
|
92
92
|
|
93
93
|
# Branch does not exist yet
|
@@ -101,14 +101,14 @@ module Roger::Release::Finalizers
|
|
101
101
|
|
102
102
|
def clone_branch(clone_dir, remote, branch)
|
103
103
|
command = Shellwords.join([
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
104
|
+
"git",
|
105
|
+
"clone",
|
106
|
+
remote,
|
107
|
+
"--branch",
|
108
|
+
branch,
|
109
|
+
"--single-branch",
|
110
|
+
clone_dir
|
111
|
+
])
|
112
112
|
`#{command}`
|
113
113
|
end
|
114
114
|
|
@@ -122,7 +122,7 @@ module Roger::Release::Finalizers
|
|
122
122
|
|
123
123
|
remote.strip!
|
124
124
|
|
125
|
-
|
125
|
+
raise "No remote found for origin" if remote.nil? || remote.empty?
|
126
126
|
|
127
127
|
remote
|
128
128
|
end
|
@@ -68,7 +68,7 @@ module Roger::Release::Finalizers
|
|
68
68
|
output = `#{command.join(" ")}`
|
69
69
|
|
70
70
|
# Check if rsync succeeded
|
71
|
-
|
71
|
+
raise "Rsync failed.\noutput:\n #{output}" unless $CHILD_STATUS.success?
|
72
72
|
end
|
73
73
|
|
74
74
|
def prompt_for_upload
|
@@ -81,7 +81,7 @@ module Roger::Release::Finalizers
|
|
81
81
|
return if (@options.keys & must_have_keys).size == must_have_keys.size
|
82
82
|
|
83
83
|
release.log(self, "Missing options: #{(must_have_keys - @options.keys).inspect}")
|
84
|
-
|
84
|
+
raise "Missing keys: #{(must_have_keys - @options.keys).inspect}"
|
85
85
|
end
|
86
86
|
|
87
87
|
def prompt(question = "Do you wish to continue?")
|
@@ -56,7 +56,7 @@ module Roger
|
|
56
56
|
injected_vars << variable
|
57
57
|
end
|
58
58
|
end
|
59
|
-
|
59
|
+
unless injected_vars.empty?
|
60
60
|
release.log(self, "Injected variables #{injected_vars.inspect} into #{f}")
|
61
61
|
end
|
62
62
|
File.open(f, "w") { |fh| fh.write c }
|
@@ -70,24 +70,20 @@ module Roger
|
|
70
70
|
when Hash
|
71
71
|
get_complex_injection(injection, release)
|
72
72
|
else
|
73
|
-
|
74
|
-
injection.to_s
|
75
|
-
else
|
76
|
-
fail ArgumentError, "Woah, what's this? #{injection.inspect}"
|
77
|
-
end
|
73
|
+
injection.to_s
|
78
74
|
end
|
79
75
|
end
|
80
76
|
|
81
77
|
def get_complex_injection(injection, release)
|
82
78
|
content = injection_content(injection, release)
|
83
79
|
|
84
|
-
|
80
|
+
raise ArgumentError, "No :content or :file specified" unless content
|
85
81
|
|
86
82
|
if injection[:processor]
|
87
83
|
if tmpl = Tilt[injection[:processor]]
|
88
84
|
(tmpl.new { content }).render
|
89
85
|
else
|
90
|
-
|
86
|
+
raise ArgumentError, "Unknown processor #{injection[:processor]}"
|
91
87
|
end
|
92
88
|
else
|
93
89
|
content
|
@@ -11,7 +11,7 @@ module Roger::Release::Processors
|
|
11
11
|
|
12
12
|
# Name of this processor
|
13
13
|
def name
|
14
|
-
@name ||
|
14
|
+
@name || raise(ArgumentError, "Implement in subclass")
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -49,7 +49,7 @@ module Roger::Release::Processors
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def perform
|
52
|
-
|
52
|
+
raise ArgumentError, "Implement in subclass"
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
data/lib/roger/release/scm.rb
CHANGED
@@ -13,19 +13,19 @@ module Roger
|
|
13
13
|
#
|
14
14
|
# @return String The current version string
|
15
15
|
def version
|
16
|
-
|
16
|
+
raise "Implement in subclass"
|
17
17
|
end
|
18
18
|
|
19
19
|
# Returns the release version date from the SCM
|
20
20
|
def date
|
21
|
-
|
21
|
+
raise "Implement in subclass"
|
22
22
|
end
|
23
23
|
|
24
24
|
# Returns a Release::Scm object with the previous version's data
|
25
25
|
#
|
26
26
|
# @return Roger::Release::Scm The previous version
|
27
27
|
def previous
|
28
|
-
|
28
|
+
raise "Implement in subclass"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
data/lib/roger/renderer.rb
CHANGED
@@ -183,7 +183,7 @@ module Roger
|
|
183
183
|
(Pathname.new(current_template.source_path).dirname + pn).realpath
|
184
184
|
else
|
185
185
|
err = "Only within another template you can use relative paths"
|
186
|
-
|
186
|
+
raise ArgumentError, err
|
187
187
|
end
|
188
188
|
else
|
189
189
|
pn.realpath
|
@@ -204,7 +204,11 @@ module Roger
|
|
204
204
|
|
205
205
|
# Gets the layout for a specific template
|
206
206
|
def layout_for_template(template, options)
|
207
|
-
layout_name = template.data.key?(:layout)
|
207
|
+
layout_name = if template.data.key?(:layout)
|
208
|
+
template.data[:layout]
|
209
|
+
else
|
210
|
+
get_default_layout(template, options)
|
211
|
+
end
|
208
212
|
|
209
213
|
# Only attempt to load layout when:
|
210
214
|
# - Template is the toplevel template
|
@@ -214,6 +218,15 @@ module Roger
|
|
214
218
|
template(layout_name, nil, :layout)
|
215
219
|
end
|
216
220
|
|
221
|
+
# Gets the default layout that can be specified by the Rogerfile:
|
222
|
+
# roger.project.options[:renderer][:layout] = {
|
223
|
+
# "html.erb" => "default"
|
224
|
+
# }
|
225
|
+
def get_default_layout(template, options)
|
226
|
+
source_ext = Renderer.source_extension_for(template.source_path)
|
227
|
+
options[:layout][source_ext] if options.key?(:layout)
|
228
|
+
end
|
229
|
+
|
217
230
|
# Will check the template nesting if we haven't already
|
218
231
|
# rendered this path before. If it has we'll throw an argumenteerror
|
219
232
|
def prevent_recursion!(template)
|
@@ -230,7 +243,7 @@ module Roger
|
|
230
243
|
err = "Recursive render detected for '#{template.source_path}'"
|
231
244
|
err += " in '#{current_template.source_path}'"
|
232
245
|
|
233
|
-
|
246
|
+
raise ArgumentError, err
|
234
247
|
end
|
235
248
|
|
236
249
|
# Will instantiate a Template or throw an ArgumentError
|
@@ -239,14 +252,14 @@ module Roger
|
|
239
252
|
if source
|
240
253
|
template = Template.new(source, @context, source_path: path)
|
241
254
|
else
|
242
|
-
case type
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
255
|
+
template_path = case type
|
256
|
+
when :partial
|
257
|
+
find_partial(path)
|
258
|
+
when :layout
|
259
|
+
find_layout(path)
|
260
|
+
else
|
261
|
+
path
|
262
|
+
end
|
250
263
|
|
251
264
|
if template_path && File.exist?(template_path)
|
252
265
|
template = Template.open(template_path, @context)
|
@@ -263,7 +276,7 @@ module Roger
|
|
263
276
|
def template_not_found!(type, path)
|
264
277
|
err = "No such #{type} #{path}"
|
265
278
|
err += " in #{@current_template.source_path}" if @current_template
|
266
|
-
|
279
|
+
raise ArgumentError, err
|
267
280
|
end
|
268
281
|
|
269
282
|
# Find a partial
|
data/lib/roger/resolver.rb
CHANGED
@@ -24,12 +24,12 @@ module Roger
|
|
24
24
|
erubis
|
25
25
|
str
|
26
26
|
)
|
27
|
-
}
|
27
|
+
}.freeze
|
28
28
|
|
29
29
|
attr_reader :load_paths
|
30
30
|
|
31
31
|
def initialize(paths)
|
32
|
-
|
32
|
+
raise ArgumentError, "Resolver base path can't be nil" if paths.nil?
|
33
33
|
|
34
34
|
# Convert to paths
|
35
35
|
@load_paths = [paths].flatten.map { |p| Pathname.new(p) }
|
@@ -57,7 +57,7 @@ module Roger
|
|
57
57
|
|
58
58
|
output
|
59
59
|
end
|
60
|
-
|
60
|
+
alias url_to_path find_template
|
61
61
|
|
62
62
|
# Convert a disk path on file to an url
|
63
63
|
def path_to_url(path, relative_to = nil)
|
@@ -81,7 +81,7 @@ module Roger
|
|
81
81
|
path, qs, anch = strip_query_string_and_anchor(url)
|
82
82
|
|
83
83
|
# Get disk path
|
84
|
-
if true_path =
|
84
|
+
if true_path = url_to_path(path, exact_match: true)
|
85
85
|
path = path_to_url(true_path, relative_to_path)
|
86
86
|
path += qs if qs
|
87
87
|
path += anch if anch
|
@@ -151,17 +151,17 @@ module Roger
|
|
151
151
|
results = []
|
152
152
|
|
153
153
|
files.each do |file|
|
154
|
-
if file.start_with?(path)
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
154
|
+
match = if file.start_with?(path)
|
155
|
+
path
|
156
|
+
else
|
157
|
+
path_without_extension
|
158
|
+
end
|
159
159
|
|
160
160
|
processable_extensions = file[(match.length + 1)..-1].split(".")
|
161
161
|
|
162
162
|
# All processable_extensions must be processable
|
163
163
|
# by a template_extension
|
164
|
-
next unless (processable_extensions - template_extensions).
|
164
|
+
next unless (processable_extensions - template_extensions).empty?
|
165
165
|
|
166
166
|
if file.start_with?(path)
|
167
167
|
# The whole path is found in the filename, not just
|
data/lib/roger/rogerfile.rb
CHANGED
@@ -34,7 +34,7 @@ module Roger
|
|
34
34
|
|
35
35
|
# Actually load the rogerfile
|
36
36
|
def load
|
37
|
-
return unless File.exist?(@path) && !
|
37
|
+
return unless File.exist?(@path) && !loaded?
|
38
38
|
|
39
39
|
@source = File.read(@path)
|
40
40
|
context = Context.new(self)
|
@@ -59,7 +59,7 @@ module Roger
|
|
59
59
|
server
|
60
60
|
end
|
61
61
|
|
62
|
-
|
62
|
+
alias server serve
|
63
63
|
|
64
64
|
def test(options = {})
|
65
65
|
test = project.test(options)
|
data/lib/roger/server.rb
CHANGED
@@ -91,7 +91,7 @@ module Roger
|
|
91
91
|
@used_port = nil
|
92
92
|
@used_handler = nil
|
93
93
|
end
|
94
|
-
|
94
|
+
alias run run!
|
95
95
|
|
96
96
|
def server_options_for_handler
|
97
97
|
# Search for available port
|
@@ -113,11 +113,11 @@ module Roger
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def handler=(h)
|
116
|
-
if h.respond_to?(:run)
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
116
|
+
@handler = if h.respond_to?(:run)
|
117
|
+
h
|
118
|
+
else
|
119
|
+
get_handler(h)
|
120
|
+
end
|
121
121
|
end
|
122
122
|
|
123
123
|
protected
|
data/lib/roger/template.rb
CHANGED
@@ -59,11 +59,9 @@ module Roger
|
|
59
59
|
return @_real_source_path if @_real_source_path_cached
|
60
60
|
|
61
61
|
@_real_source_path_cached = true
|
62
|
-
if File.exist?(source_path)
|
63
|
-
|
64
|
-
|
65
|
-
@_real_source_path = nil
|
66
|
-
end
|
62
|
+
@_real_source_path = if File.exist?(source_path)
|
63
|
+
Pathname.new(source_path).realpath
|
64
|
+
end
|
67
65
|
end
|
68
66
|
|
69
67
|
protected
|
@@ -73,11 +71,11 @@ module Roger
|
|
73
71
|
@current_tilt_template = template_class
|
74
72
|
template = template_class.new(source_path) { src }
|
75
73
|
|
76
|
-
if block_given?
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
74
|
+
block_content = if block_given?
|
75
|
+
yield
|
76
|
+
else
|
77
|
+
""
|
78
|
+
end
|
81
79
|
|
82
80
|
template.render(@context, locals) do |name|
|
83
81
|
if name
|
@@ -92,20 +90,18 @@ module Roger
|
|
92
90
|
def extract_front_matter(source)
|
93
91
|
fm_regex = /\A(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
94
92
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
rescue *YAML_ERRORS => e
|
104
|
-
puts "YAML Exception: #{e.message}"
|
105
|
-
return false
|
93
|
+
return [{}, source] unless match = source.match(fm_regex)
|
94
|
+
|
95
|
+
source = source.sub(fm_regex, "")
|
96
|
+
|
97
|
+
begin
|
98
|
+
data = (YAML.load(match[1]) || {}).inject({}) do |memo, (k, v)|
|
99
|
+
memo[k.to_sym] = v
|
100
|
+
memo
|
106
101
|
end
|
107
|
-
|
108
|
-
|
102
|
+
rescue *YAML_ERRORS => e
|
103
|
+
puts "YAML Exception: #{e.message}"
|
104
|
+
return false
|
109
105
|
end
|
110
106
|
|
111
107
|
[data, source]
|
@@ -39,7 +39,7 @@ module Roger
|
|
39
39
|
unless Thread.current[:tilt_current_template].is_a?(Tilt::ERBTemplate)
|
40
40
|
err = "content_for works only with ERB Templates"
|
41
41
|
err += "(was: #{template.current_tilt_template.inspect})"
|
42
|
-
|
42
|
+
raise ArgumentError, err
|
43
43
|
end
|
44
44
|
|
45
45
|
@block_counter ||= 0
|
@@ -4,11 +4,11 @@ module Roger
|
|
4
4
|
# The partial helper
|
5
5
|
module Partial
|
6
6
|
def partial(name, locals = {}, &block)
|
7
|
-
if locals[:locals]
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
options = if locals[:locals]
|
8
|
+
locals
|
9
|
+
else
|
10
|
+
{ locals: locals }
|
11
|
+
end
|
12
12
|
if block_given?
|
13
13
|
partial_with_block(name, options, &block)
|
14
14
|
else
|
data/lib/roger/test.rb
CHANGED
@@ -21,7 +21,7 @@ module Roger
|
|
21
21
|
desc "test", "Run the test"
|
22
22
|
def test
|
23
23
|
ok = Roger::Cli::Base.project.test.run_test!(self.class.stack_index)
|
24
|
-
|
24
|
+
raise(Thor::Error, "The test failed") unless ok
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
@@ -37,10 +37,10 @@ module Roger
|
|
37
37
|
|
38
38
|
def register(name, test, cli = nil)
|
39
39
|
if map.key?(name)
|
40
|
-
|
40
|
+
raise ArgumentError, "Another test has already claimed the name #{name.inspect}"
|
41
41
|
end
|
42
42
|
|
43
|
-
|
43
|
+
raise ArgumentError, "Name must be a symbol" unless name.is_a?(Symbol)
|
44
44
|
map[name] = test
|
45
45
|
cli_map[name] = cli if cli
|
46
46
|
end
|
@@ -122,7 +122,7 @@ module Roger
|
|
122
122
|
usage = "#{name} #{klass.arguments.map(&:banner).join(' ')}"
|
123
123
|
thor_class = klass
|
124
124
|
else
|
125
|
-
usage =
|
125
|
+
usage = name.to_s
|
126
126
|
thor_class = Class.new(Roger::Test::Cli)
|
127
127
|
end
|
128
128
|
|
data/lib/roger/version.rb
CHANGED
data/roger.gemspec
CHANGED
@@ -42,5 +42,5 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.add_development_dependency("mocha", "~> 1.1.0")
|
43
43
|
s.add_development_dependency("simplecov", "~> 0.10.0")
|
44
44
|
s.add_development_dependency("puma", "~> 3.6.0")
|
45
|
-
s.add_development_dependency("rubocop", "~> 0.
|
45
|
+
s.add_development_dependency("rubocop", "~> 0.38.0")
|
46
46
|
end
|
data/test/helpers/generators.rb
CHANGED
@@ -8,7 +8,7 @@ module Generators
|
|
8
8
|
|
9
9
|
def test
|
10
10
|
# Somewhat ugly way of checking
|
11
|
-
|
11
|
+
raise NotImplementedError
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -19,7 +19,7 @@ module Generators
|
|
19
19
|
desc "Returns a project"
|
20
20
|
def test
|
21
21
|
# Somewhat ugly way of checking
|
22
|
-
|
22
|
+
raise StandardError if @project
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -1,9 +1,8 @@
|
|
1
1
|
module RogerNoopTest
|
2
|
-
# A CLI command for the Noop test. Doesn't do anything
|
2
|
+
# A CLI command for the Noop test. Doesn't do anything
|
3
3
|
class Cli < Roger::Test::Cli
|
4
4
|
desc "init", "init noop tests"
|
5
5
|
def init
|
6
|
-
puts "initialized"
|
7
6
|
end
|
8
7
|
end
|
9
8
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "./lib/roger/cli"
|
3
|
+
require "test_construct"
|
4
|
+
|
5
|
+
require File.dirname(__FILE__) + "/../../helpers/cli"
|
6
|
+
|
7
|
+
module Roger
|
8
|
+
# These tests ar for the roger generate command
|
9
|
+
class CliReleaseTest < ::Test::Unit::TestCase
|
10
|
+
include TestConstruct::Helpers
|
11
|
+
include TestCli
|
12
|
+
|
13
|
+
def setup
|
14
|
+
# Reset project as not to leak from other tests
|
15
|
+
Cli::Base.project = nil
|
16
|
+
|
17
|
+
@base_path = setup_construct
|
18
|
+
@base_path.directory "html" do |h|
|
19
|
+
h.file "index.html"
|
20
|
+
end
|
21
|
+
@base_path.file "Rogerfile", "roger.release(scm: :fixed) { |r| r.scm.version = '1' }"
|
22
|
+
end
|
23
|
+
|
24
|
+
def teardown
|
25
|
+
teardown_construct(@base_path)
|
26
|
+
Cli::Base.project = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
# roger generate
|
30
|
+
def test_has_release_command
|
31
|
+
assert_includes Cli::Base.tasks.keys, "release"
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_runs_release
|
35
|
+
run_command(%w(release))
|
36
|
+
assert File.exist?(@base_path + "releases/html-1")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# Generators register themself on the CLI module
|
3
|
+
require "test_helper"
|
4
|
+
require "test_construct"
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + "/../../helpers/cli"
|
7
|
+
|
8
|
+
module Roger
|
9
|
+
# Test Roger Generators
|
10
|
+
class GeneratoGeneratorTest < ::Test::Unit::TestCase
|
11
|
+
include TestConstruct::Helpers
|
12
|
+
include TestCli
|
13
|
+
|
14
|
+
def test_new_generator_exists
|
15
|
+
assert_includes Cli::Generate.tasks, "generator"
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_generator_generator
|
19
|
+
name = "tralal"
|
20
|
+
path = "./tmp"
|
21
|
+
|
22
|
+
within_construct do
|
23
|
+
run_command(%w(generate generator) + [name, path])
|
24
|
+
assert File.exist? "#{path}/#{name}_generator.rb"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# Generators register themself on the CLI module
|
3
|
+
require "test_helper"
|
4
|
+
require "test_construct"
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + "/../../helpers/cli"
|
7
|
+
|
8
|
+
module Roger
|
9
|
+
# Test Roger Generators
|
10
|
+
class GeneratorNewTest < ::Test::Unit::TestCase
|
11
|
+
include TestConstruct::Helpers
|
12
|
+
include TestCli
|
13
|
+
|
14
|
+
def test_new_generator_exists
|
15
|
+
assert_includes Cli::Generate.tasks, "new"
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_exits_on_existing_dir
|
19
|
+
within_construct do |c|
|
20
|
+
c.directory "existingdir"
|
21
|
+
|
22
|
+
assert_raises(SystemExit) { run_command %w(generate new existingdir) }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_with_non_existing_template
|
27
|
+
within_construct do
|
28
|
+
assert_raises(SystemExit) { run_command %w(generate new mydir -t template) }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_with_default_template
|
33
|
+
within_construct do
|
34
|
+
run_command %w(generate new mydir)
|
35
|
+
|
36
|
+
assert File.exist?("mydir/Rogerfile")
|
37
|
+
assert File.exist?("mydir/Gemfile")
|
38
|
+
assert File.exist?("mydir/CHANGELOG")
|
39
|
+
assert File.exist?("mydir/.gitignore")
|
40
|
+
assert File.directory?("mydir/html")
|
41
|
+
assert File.directory?("mydir/partials")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_with_git_template
|
46
|
+
within_construct do |c|
|
47
|
+
c.directory "template" do |t|
|
48
|
+
system("git init -q")
|
49
|
+
t.file "gitone"
|
50
|
+
system("git add gitone; git commit -q -am 'test'")
|
51
|
+
end
|
52
|
+
|
53
|
+
git_path = "file://#{c + 'template/.git'}"
|
54
|
+
run_command %w(generate new mydir -t) << git_path
|
55
|
+
|
56
|
+
assert File.exist?("mydir/gitone")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_with_custom_template
|
61
|
+
within_construct do |c|
|
62
|
+
c.directory "template" do |t|
|
63
|
+
t.file "one"
|
64
|
+
t.file "two"
|
65
|
+
end
|
66
|
+
|
67
|
+
run_command %w(generate new mydir -t template)
|
68
|
+
|
69
|
+
assert File.exist?("mydir/one")
|
70
|
+
assert File.exist?("mydir/two")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -1,12 +1,17 @@
|
|
1
1
|
# Generators register themself on the CLI module
|
2
2
|
require "test_helper"
|
3
3
|
require "./lib/roger/generators.rb"
|
4
|
+
require "test_construct"
|
4
5
|
|
5
6
|
require File.dirname(__FILE__) + "/../helpers/generators"
|
7
|
+
require File.dirname(__FILE__) + "/../helpers/cli"
|
6
8
|
|
7
9
|
module Roger
|
8
10
|
# Test Roger Generators
|
9
11
|
class GeneratorTest < ::Test::Unit::TestCase
|
12
|
+
include TestConstruct::Helpers
|
13
|
+
include TestCli
|
14
|
+
|
10
15
|
def setup
|
11
16
|
@cli = Cli::Base.new
|
12
17
|
|
@@ -39,21 +44,6 @@ module Roger
|
|
39
44
|
def test_cli_help_shows_all_available_generators
|
40
45
|
end
|
41
46
|
|
42
|
-
def test_default_generator
|
43
|
-
assert_includes Cli::Generate.tasks, "new"
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_generator_generator
|
47
|
-
generators = Cli::Generate.new
|
48
|
-
name = "tralal"
|
49
|
-
path = "./tmp"
|
50
|
-
generators.invoke :generator, [name, path]
|
51
|
-
assert File.exist? "#{path}/#{name}_generator.rb"
|
52
|
-
|
53
|
-
# Remove generated generator
|
54
|
-
File.unlink "#{path}/#{name}_generator.rb"
|
55
|
-
end
|
56
|
-
|
57
47
|
def test_invoke_mocked_generator
|
58
48
|
Roger::Generators.register ::Generators::MockedGenerator
|
59
49
|
|
@@ -63,7 +63,7 @@ module Roger
|
|
63
63
|
|
64
64
|
def test_excludes
|
65
65
|
files = @object.get_files(["**/*.js"], ["\Adir"])
|
66
|
-
expect = @files.grep(/\.js\Z/).reject { |f| f
|
66
|
+
expect = @files.grep(/\.js\Z/).reject { |f| f.start_with?("dir") }
|
67
67
|
assert_array_contains(expect, files)
|
68
68
|
end
|
69
69
|
|
@@ -22,7 +22,9 @@ module Roger
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_renderer_options_are_passed
|
25
|
-
@project.options[:renderer][:layout] =
|
25
|
+
@project.options[:renderer][:layout] = {
|
26
|
+
"html.erb" => "bracket"
|
27
|
+
}
|
26
28
|
|
27
29
|
@project.construct.file "layouts/bracket.html.erb", "[<%= yield %>]"
|
28
30
|
@project.construct.file "html/test.html.erb", "<%= 'test' %>"
|
@@ -44,10 +44,10 @@ module Roger
|
|
44
44
|
finalizer = Roger::Release::Finalizers::GitBranch.new
|
45
45
|
remote_repo = setup_construct(chdir: false)
|
46
46
|
|
47
|
-
`git init`
|
47
|
+
`git init -q`
|
48
48
|
|
49
49
|
Dir.chdir(remote_repo.to_s) do
|
50
|
-
`git init --bare`
|
50
|
+
`git init -q --bare`
|
51
51
|
end
|
52
52
|
|
53
53
|
`git remote add origin #{Shellwords.escape(remote_repo.to_s)}`
|
@@ -30,6 +30,17 @@ module Roger
|
|
30
30
|
assert_equal "a1b", File.read(@target_file.to_s)
|
31
31
|
end
|
32
32
|
|
33
|
+
def test_to_s_injection
|
34
|
+
injector = Roger::Release::Injector.new(
|
35
|
+
{ "VAR" => 1 },
|
36
|
+
into: ["out"]
|
37
|
+
)
|
38
|
+
|
39
|
+
injector.call(@release)
|
40
|
+
|
41
|
+
assert_equal "a1b", File.read(@target_file.to_s)
|
42
|
+
end
|
43
|
+
|
33
44
|
def test_regex_injection
|
34
45
|
injector = Roger::Release::Injector.new(
|
35
46
|
{ /V.R/ => "1" },
|
@@ -45,7 +45,9 @@ module Roger
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_renderer_options_are_passed
|
48
|
-
@release.project.options[:renderer][:layout] =
|
48
|
+
@release.project.options[:renderer][:layout] = {
|
49
|
+
"html.erb" => "bracket"
|
50
|
+
}
|
49
51
|
@release.project.construct.file "layouts/bracket.html.erb", "[<%= yield %>]"
|
50
52
|
@release.project.construct.directory "build" do |dir|
|
51
53
|
dir.file "test.html.erb", "<%= 'test' %>"
|
@@ -15,13 +15,13 @@ module Roger
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_register_processor
|
18
|
-
processor = ->(_e) {
|
18
|
+
processor = ->(_e) { raise "ProcessorName" }
|
19
19
|
assert Roger::Release::Processors.register(:name, processor)
|
20
20
|
assert_equal Roger::Release::Processors.map, name: processor
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_register_processor_with_symbol_only_name
|
24
|
-
processor = ->(_e) {
|
24
|
+
processor = ->(_e) { raise "ProcessorName" }
|
25
25
|
|
26
26
|
assert_raise(ArgumentError) do
|
27
27
|
Roger::Release::Processors.register("name", processor)
|
@@ -33,7 +33,7 @@ module Roger
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def test_register_processor_with_same_name
|
36
|
-
processor = ->(_e) {
|
36
|
+
processor = ->(_e) { raise "ProcessorName" }
|
37
37
|
Roger::Release::Processors.register(:name, processor)
|
38
38
|
|
39
39
|
assert_raise(ArgumentError) do
|
@@ -42,7 +42,7 @@ module Roger
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_register_processor_with_same_contents
|
45
|
-
processor = ->(_e) {
|
45
|
+
processor = ->(_e) { raise "ProcessorName" }
|
46
46
|
Roger::Release::Processors.register(:name, processor)
|
47
47
|
|
48
48
|
assert_nothing_raised do
|
@@ -43,22 +43,51 @@ module Roger
|
|
43
43
|
|
44
44
|
def test_default_layout
|
45
45
|
template = "TEMPLATE"
|
46
|
-
|
46
|
+
default_layout = {
|
47
|
+
"html.erb" => "bracket"
|
48
|
+
}
|
49
|
+
|
50
|
+
assert_equal "[TEMPLATE]", render_erb_template(template, layout: default_layout)
|
47
51
|
end
|
48
52
|
|
49
53
|
def test_default_layout_is_overriden_by_frontmatter
|
50
54
|
template = "---\nlayout: \"yield\"\n---\nTEMPLATE"
|
51
|
-
|
55
|
+
default_layout = {
|
56
|
+
"html.erb" => "bracket"
|
57
|
+
}
|
58
|
+
|
59
|
+
assert_equal "TEMPLATE", render_erb_template(template, layout: default_layout)
|
52
60
|
end
|
53
61
|
|
54
62
|
def test_default_layout_can_by_disabled_in_frontmatter
|
55
63
|
template = "---\nlayout: \n---\nTEMPLATE"
|
56
|
-
|
64
|
+
default_layout = {
|
65
|
+
"html.erb" => "bracket"
|
66
|
+
}
|
67
|
+
|
68
|
+
assert_equal "TEMPLATE", render_erb_template(template, layout: default_layout)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_default__layouts_is_skipped_for_other_extensions_types
|
72
|
+
template = "TEMPLATE"
|
73
|
+
default_layout = {
|
74
|
+
"html.erb" => "bracket"
|
75
|
+
}
|
76
|
+
|
77
|
+
assert_equal "TEMPLATE", render_css_template(template, layout: default_layout)
|
57
78
|
end
|
58
79
|
|
59
80
|
def render_erb_template(template, options = {})
|
81
|
+
render_abstract_template(@base + "html/layouts/test.html.erb", template, options)
|
82
|
+
end
|
83
|
+
|
84
|
+
def render_css_template(template, options = {})
|
85
|
+
render_abstract_template(@base + "html/layouts/test.css.erb", template, options)
|
86
|
+
end
|
87
|
+
|
88
|
+
def render_abstract_template(filename, template, options)
|
60
89
|
options = {}.update(options).update(source: template)
|
61
|
-
@renderer.render(
|
90
|
+
@renderer.render(filename, options)
|
62
91
|
end
|
63
92
|
end
|
64
93
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Flurin Egger
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2017-06-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
@@ -172,14 +172,14 @@ dependencies:
|
|
172
172
|
requirements:
|
173
173
|
- - "~>"
|
174
174
|
- !ruby/object:Gem::Version
|
175
|
-
version: 0.
|
175
|
+
version: 0.38.0
|
176
176
|
type: :development
|
177
177
|
prerelease: false
|
178
178
|
version_requirements: !ruby/object:Gem::Requirement
|
179
179
|
requirements:
|
180
180
|
- - "~>"
|
181
181
|
- !ruby/object:Gem::Version
|
182
|
-
version: 0.
|
182
|
+
version: 0.38.0
|
183
183
|
description: See homepage for more information.
|
184
184
|
email:
|
185
185
|
- info@digitpaint.nl
|
@@ -316,9 +316,12 @@ files:
|
|
316
316
|
- test/project/partials2/partials2-test.html.erb
|
317
317
|
- test/unit/cli/cli_base_test.rb
|
318
318
|
- test/unit/cli/cli_generate_test.rb
|
319
|
+
- test/unit/cli/cli_release_test.rb
|
319
320
|
- test/unit/cli/cli_serve_test.rb
|
320
321
|
- test/unit/cli/cli_test_test.rb
|
321
322
|
- test/unit/cli/cli_version_test.rb
|
323
|
+
- test/unit/generators/generator_test.rb
|
324
|
+
- test/unit/generators/new_test.rb
|
322
325
|
- test/unit/generators_test.rb
|
323
326
|
- test/unit/helpers/get_files_test.rb
|
324
327
|
- test/unit/helpers/logging_test.rb
|
@@ -368,7 +371,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
368
371
|
version: '0'
|
369
372
|
requirements: []
|
370
373
|
rubyforge_project:
|
371
|
-
rubygems_version: 2.
|
374
|
+
rubygems_version: 2.6.10
|
372
375
|
signing_key:
|
373
376
|
specification_version: 4
|
374
377
|
summary: Roger is a set of tools to create self-containing HTML mockups.
|
@@ -429,9 +432,12 @@ test_files:
|
|
429
432
|
- test/project/partials2/partials2-test.html.erb
|
430
433
|
- test/unit/cli/cli_base_test.rb
|
431
434
|
- test/unit/cli/cli_generate_test.rb
|
435
|
+
- test/unit/cli/cli_release_test.rb
|
432
436
|
- test/unit/cli/cli_serve_test.rb
|
433
437
|
- test/unit/cli/cli_test_test.rb
|
434
438
|
- test/unit/cli/cli_version_test.rb
|
439
|
+
- test/unit/generators/generator_test.rb
|
440
|
+
- test/unit/generators/new_test.rb
|
435
441
|
- test/unit/generators_test.rb
|
436
442
|
- test/unit/helpers/get_files_test.rb
|
437
443
|
- test/unit/helpers/logging_test.rb
|