roger 1.3.5 → 1.4.0
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/CHANGELOG.md +7 -2
- data/README.md +5 -5
- data/doc/cli.md +6 -6
- data/doc/{mockupfile.md → rogerfile.md} +10 -10
- data/doc/templating.md +76 -6
- data/lib/roger/cli/test.rb +1 -1
- data/lib/roger/generators/generator.rb +1 -1
- data/lib/roger/generators/new.rb +6 -6
- data/lib/roger/project.rb +35 -15
- data/lib/roger/release/finalizers/git_branch.rb +3 -3
- data/lib/roger/release/finalizers/rsync.rb +1 -1
- data/lib/roger/release/processors/mockup.rb +1 -1
- data/lib/roger/release/processors/url_relativizer.rb +1 -0
- data/lib/roger/release.rb +32 -50
- data/lib/roger/{mockupfile.rb → rogerfile.rb} +18 -11
- data/lib/roger/server.rb +1 -1
- data/lib/roger/template/helpers/capture.rb +53 -0
- data/lib/roger/template/helpers/partial.rb +37 -0
- data/lib/roger/template/template_context.rb +32 -0
- data/lib/roger/template.rb +25 -91
- data/lib/roger/test.rb +1 -1
- data/lib/roger/version.rb +1 -1
- data/test/helpers/cli.rb +5 -5
- data/test/unit/cli/cli_serve_test.rb +14 -14
- data/test/unit/cli/cli_test_test.rb +4 -4
- data/test/unit/generators_test.rb +1 -1
- data/test/unit/mockupfile_test.rb +38 -0
- data/test/unit/rack/roger_test.rb +1 -1
- data/test/unit/release/finalizers/dir_test.rb +43 -0
- data/test/unit/release/finalizers/git_branch_test.rb +26 -0
- data/test/unit/release/injector_test.rb +66 -0
- data/test/unit/release/processors/url_relativizer_test.rb +1 -1
- data/test/unit/release/scm/base_test.rb +23 -0
- data/test/unit/release/scm/git_test.rb +58 -0
- data/test/unit/release_test.rb +95 -5
- data/test/unit/server_test.rb +1 -1
- data/test/unit/template_test.rb +33 -0
- data/test/unit/test_test.rb +2 -2
- metadata +20 -8
- data/lib/roger/extractor.rb +0 -94
- /data/examples/default_template/{Mockupfile → Rogerfile} +0 -0
- /data/test/project/{Mockupfile → Rogerfile} +0 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "mocha/test_unit"
|
3
|
+
require "test_construct"
|
4
|
+
|
5
|
+
module Roger
|
6
|
+
# Test for Roger Zip finalizer
|
7
|
+
class GitScmTest < ::Test::Unit::TestCase
|
8
|
+
include TestConstruct::Helpers
|
9
|
+
|
10
|
+
def setup
|
11
|
+
@construct = setup_construct
|
12
|
+
|
13
|
+
@scm = Roger::Release::Scm::Git.new(path: @construct)
|
14
|
+
|
15
|
+
@construct.file "test.html"
|
16
|
+
|
17
|
+
# Setup git
|
18
|
+
`git init`
|
19
|
+
`git add *`
|
20
|
+
`git commit -m "Commit 1"`
|
21
|
+
`git tag v0.1.0`
|
22
|
+
|
23
|
+
@construct.file "test2.html"
|
24
|
+
|
25
|
+
`git add *`
|
26
|
+
`git commit -m "Commit 2"`
|
27
|
+
`git tag v1.0.0`
|
28
|
+
end
|
29
|
+
|
30
|
+
def teardown
|
31
|
+
teardown_construct(@construct)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_implements_scm_interfase
|
35
|
+
assert @scm.respond_to?(:version)
|
36
|
+
assert @scm.respond_to?(:date)
|
37
|
+
assert @scm.respond_to?(:previous)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_version
|
41
|
+
assert_equal "1.0.0", @scm.version
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_previous
|
45
|
+
assert_equal "0.1.0", @scm.previous.version
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_date
|
49
|
+
now = Time.now
|
50
|
+
date = @scm.date
|
51
|
+
assert_equal now.day, date.day
|
52
|
+
assert_equal now.month, date.month
|
53
|
+
assert_equal now.year, date.year
|
54
|
+
assert_equal now.hour, date.hour
|
55
|
+
assert_equal now.min, date.min
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/test/unit/release_test.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# Generators register themself on the CLI module
|
2
2
|
require "test_helper"
|
3
|
-
require "
|
3
|
+
require "roger/testing/mock_project"
|
4
4
|
|
5
5
|
module Roger
|
6
6
|
# Test Roger Release
|
7
7
|
class ReleaseTest < ::Test::Unit::TestCase
|
8
8
|
def setup
|
9
|
-
@project =
|
10
|
-
@
|
9
|
+
@project = Testing::MockProject.new
|
10
|
+
@rogerfile = Roger::Rogerfile.new(@project)
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_run_should_set_project_mode
|
14
14
|
assert_equal @project.mode, nil
|
15
15
|
|
16
16
|
# Running a blank release
|
17
|
-
@
|
17
|
+
@rogerfile.release(blank: true) do |r|
|
18
18
|
r.use proc{|release|
|
19
19
|
assert_equal release.project.mode, :release
|
20
20
|
}
|
@@ -25,13 +25,103 @@ module Roger
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_blank_release_should_have_no_processors_and_finalizers
|
28
|
-
@
|
28
|
+
@rogerfile.release(blank: true)
|
29
29
|
@project.release.run!
|
30
30
|
|
31
31
|
assert @project.release.stack.empty?
|
32
32
|
assert @project.release.finalizers.empty?
|
33
33
|
end
|
34
34
|
|
35
|
+
def test_release_should_add_mockup_processor_as_first_by_default
|
36
|
+
release = @rogerfile.release
|
37
|
+
release.run!
|
38
|
+
|
39
|
+
assert release.stack.length > 0
|
40
|
+
assert_equal Roger::Release::Processors::Mockup, release.stack.first.first.class
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_release_should_add_url_relativizer_by_default
|
44
|
+
release = @rogerfile.release
|
45
|
+
release.run!
|
46
|
+
|
47
|
+
assert release.stack.length > 0
|
48
|
+
assert_equal Roger::Release::Processors::UrlRelativizer, release.stack.last.first.class
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_default_banner
|
52
|
+
release = @rogerfile.release(scm: :fixed)
|
53
|
+
|
54
|
+
# Set fixed version
|
55
|
+
date = Time.now
|
56
|
+
release.scm.version = "1.0.0"
|
57
|
+
release.scm.date = date
|
58
|
+
|
59
|
+
lines = release.banner.split("\n")
|
60
|
+
|
61
|
+
assert_equal "/* ====================== */", lines[0]
|
62
|
+
assert_equal "/* = Version : 1.0.0 = */", lines[1]
|
63
|
+
assert_equal "/* = Date : #{date.strftime('%Y-%m-%d')} = */", lines[2]
|
64
|
+
assert_equal "/* ====================== */", lines[3]
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_banner
|
68
|
+
release = @rogerfile.release(scm: :fixed)
|
69
|
+
|
70
|
+
banner = release.banner do
|
71
|
+
"BANNER"
|
72
|
+
end
|
73
|
+
|
74
|
+
assert_equal "/* BANNER */", banner
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_comment_per_line
|
78
|
+
release = @rogerfile.release
|
79
|
+
|
80
|
+
options = {
|
81
|
+
style: :css,
|
82
|
+
per_line: true
|
83
|
+
}
|
84
|
+
|
85
|
+
assert_equal "/* a */", release.comment("a", options)
|
86
|
+
assert_equal "/* a */\n/* b */", release.comment("a\nb", options)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_comment_html
|
90
|
+
release = @rogerfile.release
|
91
|
+
|
92
|
+
options = {
|
93
|
+
style: :html,
|
94
|
+
per_line: false
|
95
|
+
}
|
96
|
+
|
97
|
+
assert_equal "<!-- a -->", release.comment("a", options)
|
98
|
+
assert_equal "<!-- a\nb -->", release.comment("a\nb", options)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_comment_css
|
102
|
+
release = @rogerfile.release
|
103
|
+
|
104
|
+
options = {
|
105
|
+
style: :css,
|
106
|
+
per_line: false
|
107
|
+
}
|
108
|
+
|
109
|
+
assert_equal "/* a */", release.comment("a", options)
|
110
|
+
assert_equal "/* a\nb */", release.comment("a\nb", options)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_comment_js
|
114
|
+
release = @rogerfile.release
|
115
|
+
|
116
|
+
options = {
|
117
|
+
style: :js,
|
118
|
+
per_line: false
|
119
|
+
}
|
120
|
+
|
121
|
+
assert_equal "/* a */", release.comment("a", options)
|
122
|
+
assert_equal "/* a\nb */", release.comment("a\nb", options)
|
123
|
+
end
|
124
|
+
|
35
125
|
def test_get_callable
|
36
126
|
p = -> {}
|
37
127
|
assert_equal Release.get_callable(p, {}), p
|
data/test/unit/server_test.rb
CHANGED
@@ -5,7 +5,7 @@ module Roger
|
|
5
5
|
# Test Roger Server test
|
6
6
|
class ServerTest < ::Test::Unit::TestCase
|
7
7
|
def setup
|
8
|
-
@project = Project.new(File.dirname(__FILE__) + "/../../project",
|
8
|
+
@project = Project.new(File.dirname(__FILE__) + "/../../project", rogerfile_path: false)
|
9
9
|
@server = Server.new(@project)
|
10
10
|
end
|
11
11
|
|
data/test/unit/template_test.rb
CHANGED
@@ -4,6 +4,17 @@ require "test_helper"
|
|
4
4
|
require "./lib/roger/template.rb"
|
5
5
|
|
6
6
|
module Roger
|
7
|
+
# A simple template helper to use for testing
|
8
|
+
module TemplateHelper
|
9
|
+
def a
|
10
|
+
"a"
|
11
|
+
end
|
12
|
+
|
13
|
+
def from_env(key)
|
14
|
+
env[key]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
7
18
|
# Roger template tests
|
8
19
|
class TemplateTest < ::Test::Unit::TestCase
|
9
20
|
def setup
|
@@ -171,5 +182,27 @@ module Roger
|
|
171
182
|
template = Template.new("<%= env[:test] %>", @config)
|
172
183
|
assert_equal template.render(test: "test"), "test"
|
173
184
|
end
|
185
|
+
|
186
|
+
# Helpers
|
187
|
+
|
188
|
+
def test_register_helper
|
189
|
+
Roger::Template.helper TemplateHelper
|
190
|
+
|
191
|
+
assert Roger::Template.helpers.include?(TemplateHelper)
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_helper_works
|
195
|
+
Roger::Template.helper TemplateHelper
|
196
|
+
|
197
|
+
template = Roger::Template.new("<%= a %>", @config)
|
198
|
+
assert_equal template.render, "a"
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_helper_has_access_to_env
|
202
|
+
Roger::Template.helper TemplateHelper
|
203
|
+
|
204
|
+
template = Roger::Template.new("<%= from_env(:test) %>", @config)
|
205
|
+
assert_equal template.render(test: "test"), "test"
|
206
|
+
end
|
174
207
|
end
|
175
208
|
end
|
data/test/unit/test_test.rb
CHANGED
@@ -16,7 +16,7 @@ module Roger
|
|
16
16
|
@project.construct.file file
|
17
17
|
end
|
18
18
|
|
19
|
-
@
|
19
|
+
@rogerfile = Roger::Rogerfile.new(@project)
|
20
20
|
end
|
21
21
|
|
22
22
|
def teardown
|
@@ -26,7 +26,7 @@ module Roger
|
|
26
26
|
def test_test_run_should_set_project_mode
|
27
27
|
assert_equal @project.mode, nil
|
28
28
|
|
29
|
-
@
|
29
|
+
@rogerfile.test do |t|
|
30
30
|
t.use proc{|test|
|
31
31
|
assert_equal test.project.mode, :test
|
32
32
|
}
|
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.
|
4
|
+
version: 1.4.0
|
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: 2015-
|
13
|
+
date: 2015-07-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: thor
|
@@ -206,12 +206,12 @@ files:
|
|
206
206
|
- doc/images/logo_plain-square.png
|
207
207
|
- doc/images/logo_plain.png
|
208
208
|
- doc/images/logo_plain.svg
|
209
|
-
- doc/
|
209
|
+
- doc/rogerfile.md
|
210
210
|
- doc/templating.md
|
211
211
|
- examples/default_template/.gitignore
|
212
212
|
- examples/default_template/CHANGELOG
|
213
213
|
- examples/default_template/Gemfile
|
214
|
-
- examples/default_template/
|
214
|
+
- examples/default_template/Rogerfile
|
215
215
|
- examples/default_template/html/.empty_directory
|
216
216
|
- examples/default_template/partials/.empty_directory
|
217
217
|
- lib/roger/cli.rb
|
@@ -220,7 +220,6 @@ files:
|
|
220
220
|
- lib/roger/cli/release.rb
|
221
221
|
- lib/roger/cli/serve.rb
|
222
222
|
- lib/roger/cli/test.rb
|
223
|
-
- lib/roger/extractor.rb
|
224
223
|
- lib/roger/generators.rb
|
225
224
|
- lib/roger/generators/generator.rb
|
226
225
|
- lib/roger/generators/new.rb
|
@@ -228,7 +227,6 @@ files:
|
|
228
227
|
- lib/roger/helpers/get_callable.rb
|
229
228
|
- lib/roger/helpers/get_files.rb
|
230
229
|
- lib/roger/helpers/logging.rb
|
231
|
-
- lib/roger/mockupfile.rb
|
232
230
|
- lib/roger/project.rb
|
233
231
|
- lib/roger/rack/roger.rb
|
234
232
|
- lib/roger/rack/sleep.rb
|
@@ -247,8 +245,12 @@ files:
|
|
247
245
|
- lib/roger/release/scm/fixed.rb
|
248
246
|
- lib/roger/release/scm/git.rb
|
249
247
|
- lib/roger/resolver.rb
|
248
|
+
- lib/roger/rogerfile.rb
|
250
249
|
- lib/roger/server.rb
|
251
250
|
- lib/roger/template.rb
|
251
|
+
- lib/roger/template/helpers/capture.rb
|
252
|
+
- lib/roger/template/helpers/partial.rb
|
253
|
+
- lib/roger/template/template_context.rb
|
252
254
|
- lib/roger/test.rb
|
253
255
|
- lib/roger/testing/mock_project.rb
|
254
256
|
- lib/roger/testing/mock_release.rb
|
@@ -258,7 +260,7 @@ files:
|
|
258
260
|
- test/project/.rvmrc
|
259
261
|
- test/project/Gemfile
|
260
262
|
- test/project/Gemfile.lock
|
261
|
-
- test/project/
|
263
|
+
- test/project/Rogerfile
|
262
264
|
- test/project/html/formats/csv.rcsv
|
263
265
|
- test/project/html/formats/erb.html.erb
|
264
266
|
- test/project/html/formats/index.html
|
@@ -298,15 +300,20 @@ files:
|
|
298
300
|
- test/unit/generators_test.rb
|
299
301
|
- test/unit/helpers/get_files_test.rb
|
300
302
|
- test/unit/helpers/logging_test.rb
|
303
|
+
- test/unit/mockupfile_test.rb
|
301
304
|
- test/unit/rack/roger_test.rb
|
302
305
|
- test/unit/release/cleaner_test.rb
|
306
|
+
- test/unit/release/finalizers/dir_test.rb
|
303
307
|
- test/unit/release/finalizers/git_branch_test.rb
|
304
308
|
- test/unit/release/finalizers/rsync_test.rb
|
305
309
|
- test/unit/release/finalizers/zip_test.rb
|
310
|
+
- test/unit/release/injector_test.rb
|
306
311
|
- test/unit/release/processors/mockup_test.rb
|
307
312
|
- test/unit/release/processors/url_relativizer_test.rb
|
308
313
|
- test/unit/release/processors_test.rb
|
314
|
+
- test/unit/release/scm/base_test.rb
|
309
315
|
- test/unit/release/scm/fixed_test.rb
|
316
|
+
- test/unit/release/scm/git_test.rb
|
310
317
|
- test/unit/release_test.rb
|
311
318
|
- test/unit/resolver_test.rb
|
312
319
|
- test/unit/server_test.rb
|
@@ -343,7 +350,7 @@ test_files:
|
|
343
350
|
- test/project/.rvmrc
|
344
351
|
- test/project/Gemfile
|
345
352
|
- test/project/Gemfile.lock
|
346
|
-
- test/project/
|
353
|
+
- test/project/Rogerfile
|
347
354
|
- test/project/html/formats/csv.rcsv
|
348
355
|
- test/project/html/formats/erb.html.erb
|
349
356
|
- test/project/html/formats/index.html
|
@@ -383,15 +390,20 @@ test_files:
|
|
383
390
|
- test/unit/generators_test.rb
|
384
391
|
- test/unit/helpers/get_files_test.rb
|
385
392
|
- test/unit/helpers/logging_test.rb
|
393
|
+
- test/unit/mockupfile_test.rb
|
386
394
|
- test/unit/rack/roger_test.rb
|
387
395
|
- test/unit/release/cleaner_test.rb
|
396
|
+
- test/unit/release/finalizers/dir_test.rb
|
388
397
|
- test/unit/release/finalizers/git_branch_test.rb
|
389
398
|
- test/unit/release/finalizers/rsync_test.rb
|
390
399
|
- test/unit/release/finalizers/zip_test.rb
|
400
|
+
- test/unit/release/injector_test.rb
|
391
401
|
- test/unit/release/processors/mockup_test.rb
|
392
402
|
- test/unit/release/processors/url_relativizer_test.rb
|
393
403
|
- test/unit/release/processors_test.rb
|
404
|
+
- test/unit/release/scm/base_test.rb
|
394
405
|
- test/unit/release/scm/fixed_test.rb
|
406
|
+
- test/unit/release/scm/git_test.rb
|
395
407
|
- test/unit/release_test.rb
|
396
408
|
- test/unit/resolver_test.rb
|
397
409
|
- test/unit/server_test.rb
|
data/lib/roger/extractor.rb
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
require "hpricot"
|
2
|
-
require File.dirname(__FILE__) + "/resolver"
|
3
|
-
|
4
|
-
module Roger
|
5
|
-
# @deprecated Don't use the extractor anymore, use release.use(:mockup, options) processor and
|
6
|
-
# release.use(:url_relativizer, options) processor
|
7
|
-
class Extractor
|
8
|
-
attr_reader :project, :target_path
|
9
|
-
|
10
|
-
# @param [Project] project Project object
|
11
|
-
# @param [String,Pathname] target_path Path to extract to
|
12
|
-
# @param [Hash] options Options hash
|
13
|
-
|
14
|
-
# @option options [Array] :url_attributes The element attributes to parse and relativize
|
15
|
-
# @option options [Array] :url_relativize Wether or not we should relativize
|
16
|
-
# @option options [Array] :env ENV variable to pass to template renderer.
|
17
|
-
def initialize(project, target_path, options = {})
|
18
|
-
@project = project
|
19
|
-
@target_path = Pathname.new(target_path)
|
20
|
-
@resolver = Resolver.new(self.target_path)
|
21
|
-
|
22
|
-
@options = {
|
23
|
-
url_attributes: %w(src href action),
|
24
|
-
url_relativize: true,
|
25
|
-
env: {}
|
26
|
-
}
|
27
|
-
|
28
|
-
@options.update(options) if options
|
29
|
-
|
30
|
-
@options[:env].update("MOCKUP_PROJECT" => project)
|
31
|
-
end
|
32
|
-
|
33
|
-
def run!
|
34
|
-
target_path = self.target_path
|
35
|
-
source_path = project.html_path
|
36
|
-
|
37
|
-
filter = "**/*.html"
|
38
|
-
fail(
|
39
|
-
ArgumentError,
|
40
|
-
"Target #{target_path} already exists, please choose a new directory to extract into"
|
41
|
-
) if target_path.exist?
|
42
|
-
|
43
|
-
mkdir_p(target_path)
|
44
|
-
target_path = target_path.realpath
|
45
|
-
|
46
|
-
# Copy source to target first, we'll overwrite the templates later on.
|
47
|
-
cp_r(source_path.children, target_path)
|
48
|
-
|
49
|
-
Dir.chdir(source_path) do
|
50
|
-
Dir.glob(filter).each do |file_path|
|
51
|
-
self.run_on_file!(file_path, @options[:env])
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def run_on_file!(file_path, env = {})
|
57
|
-
source = extract_source_from_file(file_path, env)
|
58
|
-
File.open(target_path + file_path, "w") { |f| f.write(source) }
|
59
|
-
end
|
60
|
-
|
61
|
-
# Runs the extractor on a single file and return processed source.
|
62
|
-
def extract_source_from_file(file_path, env = {})
|
63
|
-
source = Roger::Template.open(
|
64
|
-
file_path,
|
65
|
-
partials_path: project.partial_path,
|
66
|
-
layouts_path: project.layouts_path
|
67
|
-
).render(env.dup)
|
68
|
-
|
69
|
-
source = relativize_urls(source, file_path) if @options[:url_relativize]
|
70
|
-
|
71
|
-
source
|
72
|
-
end
|
73
|
-
|
74
|
-
protected
|
75
|
-
|
76
|
-
def relativize_urls(source, file_path)
|
77
|
-
doc = Hpricot(source)
|
78
|
-
@options[:url_attributes].each do |attribute|
|
79
|
-
(doc / "*[@#{attribute}]").each do |tag|
|
80
|
-
converted_url = @resolver.url_to_relative_url(tag[attribute], file_path)
|
81
|
-
|
82
|
-
case converted_url
|
83
|
-
when String
|
84
|
-
tag[attribute] = converted_url
|
85
|
-
when nil
|
86
|
-
puts "Could not resolve link #{tag[attribute]} in #{file_path}"
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
doc.to_original_html
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
File without changes
|
File without changes
|