roger 1.6.4 → 1.7.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -3
  3. data/CHANGELOG.md +12 -0
  4. data/Gemfile +4 -3
  5. data/Rakefile +1 -0
  6. data/doc/cli.md +12 -1
  7. data/doc/templating.md +9 -0
  8. data/lib/roger/cli/serve.rb +12 -8
  9. data/lib/roger/cli.rb +78 -5
  10. data/lib/roger/helpers/registration.rb +33 -0
  11. data/lib/roger/project.rb +14 -8
  12. data/lib/roger/rack/roger.rb +1 -1
  13. data/lib/roger/release/finalizers/dir.rb +10 -7
  14. data/lib/roger/release/finalizers/git_branch.rb +18 -32
  15. data/lib/roger/release/finalizers/rsync.rb +24 -23
  16. data/lib/roger/release/finalizers/zip.rb +16 -16
  17. data/lib/roger/release/finalizers.rb +3 -19
  18. data/lib/roger/release/processors/mockup.rb +17 -28
  19. data/lib/roger/release/processors/url_relativizer.rb +11 -13
  20. data/lib/roger/release/processors.rb +50 -22
  21. data/lib/roger/release/scm/git.rb +15 -15
  22. data/lib/roger/release.rb +12 -37
  23. data/lib/roger/renderer.rb +16 -8
  24. data/lib/roger/server.rb +59 -3
  25. data/lib/roger/template/helpers/partial.rb +6 -1
  26. data/lib/roger/version.rb +1 -1
  27. data/roger.gemspec +1 -1
  28. data/test/helpers/generators.rb +25 -0
  29. data/test/project/layouts/bracket.html.erb +1 -0
  30. data/test/project/partials/test/locals.html.erb +1 -0
  31. data/test/project/partials/test/max_depth.html.erb +1 -1
  32. data/test/project/partials/test/parent_template.html.erb +1 -0
  33. data/test/unit/cli/cli_base_test.rb +67 -0
  34. data/test/unit/cli/cli_generate_test.rb +0 -20
  35. data/test/unit/cli/cli_serve_test.rb +19 -4
  36. data/test/unit/generators_test.rb +5 -28
  37. data/test/unit/rack/roger_test.rb +19 -3
  38. data/test/unit/release/finalizers/rsync_test.rb +11 -9
  39. data/test/unit/release/processors/mockup_test.rb +12 -0
  40. data/test/unit/release_test.rb +27 -4
  41. data/test/unit/renderer/renderer_base_test.rb +24 -0
  42. data/test/unit/renderer/renderer_layout_test.rb +26 -2
  43. data/test/unit/renderer/renderer_partial_test.rb +12 -2
  44. data/test/unit/server_test.rb +32 -0
  45. data/test/unit/test_helper.rb +2 -7
  46. metadata +13 -4
@@ -1,9 +1,32 @@
1
1
  require "test_helper"
2
2
  require "./lib/roger/cli"
3
3
 
4
+ module Roger
5
+ # Just a noop command class for testing
6
+ class CliNoop < Cli::Command
7
+ end
8
+
9
+ # Open existing Cli::Base to add Noop method.
10
+ class Cli::Base < Thor
11
+ register(
12
+ CliNoop,
13
+ "noop",
14
+ "noop",
15
+ "noop"
16
+ )
17
+ tasks["noop"].options = Cli::Serve.class_options
18
+ end
19
+ end
20
+
4
21
  module Roger
5
22
  # Test for roger base commands
6
23
  class CliBaseTest < ::Test::Unit::TestCase
24
+ include TestCli
25
+
26
+ def teardown
27
+ Cli::Base.project = nil
28
+ end
29
+
7
30
  def test_has_test_command
8
31
  assert_includes Cli::Base.tasks.keys, "test"
9
32
  end
@@ -23,5 +46,49 @@ module Roger
23
46
  def test_has_version_command
24
47
  assert_includes Cli::Base.tasks.keys, "version"
25
48
  end
49
+
50
+ # Option passing
51
+
52
+ def test_pass_options_to_project
53
+ run_command(%w(noop --path=henk))
54
+ assert_equal "henk", Cli::Base.project.options[:path]
55
+ end
56
+
57
+ def test_pass_roger_options_to_project
58
+ run_command(%w(noop --some_option=henk))
59
+ assert_equal "henk", Cli::Base.project.options[:some_option]
60
+ end
61
+
62
+ def test_pass_multiple_roger_options_to_project
63
+ run_command(%w(noop --option1=henk --option2=henk))
64
+ assert_equal "henk", Cli::Base.project.options[:option1]
65
+ assert_equal "henk", Cli::Base.project.options[:option2]
66
+ end
67
+
68
+ def test_pass_roger_options_without_equal_to_project
69
+ run_command(%w(noop --option1 henk --option2 pino))
70
+ assert_equal "henk", Cli::Base.project.options[:option1]
71
+ assert_equal "pino", Cli::Base.project.options[:option2]
72
+ end
73
+
74
+ def test_pass_roger_nested_options_to_project
75
+ run_command(%w(noop --level0:level1=henk))
76
+ assert_equal "henk", Cli::Base.project.options[:level0][:level1]
77
+ end
78
+
79
+ def test_pass_boolean_roger_options_to_project
80
+ run_command(%w(noop --istrue))
81
+ assert_equal true, Cli::Base.project.options[:istrue]
82
+ end
83
+
84
+ def test_pass_boolean_literal_true_roger_options_to_project
85
+ run_command(%w(noop --istrue=true))
86
+ assert_equal true, Cli::Base.project.options[:istrue]
87
+ end
88
+
89
+ def test_pass_boolean_literal_false_roger_options_to_project
90
+ run_command(%w(noop --isfalse=false))
91
+ assert_equal false, Cli::Base.project.options[:isfalse]
92
+ end
26
93
  end
27
94
  end
@@ -3,26 +3,6 @@ require "./lib/roger/cli"
3
3
 
4
4
  require File.dirname(__FILE__) + "/../../helpers/cli"
5
5
 
6
- # CustomGenerators namespace
7
- module CustomGens
8
- # The Generators namespace
9
- module Generators
10
- # Mock generator
11
- class MockedGenerator < Roger::Generators::Base
12
- desc "@mocked description"
13
- argument :path, type: :string, required: false, desc: "Path to generate mockup into"
14
- argument :another_arg, type: :string, required: false, desc: "Mocked or what?!"
15
-
16
- def test
17
- # Somewhat ugly way of checking
18
- fail NotImplementedError
19
- end
20
- end
21
-
22
- Roger::Generators.register :mocked, MockedGenerator
23
- end
24
- end
25
-
26
6
  module Roger
27
7
  # These tests ar for the roger generate command
28
8
  class CliGenerateTest < ::Test::Unit::TestCase
@@ -5,11 +5,26 @@ require File.dirname(__FILE__) + "/../../helpers/cli"
5
5
 
6
6
  module Roger
7
7
  module Cli
8
- # Overwrite Roger::Cli::Serve#start method as we don't want
9
- # to actually start the server
8
+ # Monkeypatching the server command for testing
10
9
  class Serve
11
- def start
12
- # Let's not start it.
10
+ # Stop start from being called
11
+ remove_invocation :start
12
+
13
+ # Wrap start so we can immediately stop it
14
+ def real_start
15
+ # Let's stop immediately so we can inspect output.
16
+ start do |server|
17
+ case server
18
+ when Puma::Launcher
19
+ # Most unfortunately we have to do it using an exception because
20
+ # Puma will yield before actually starting the server resulting in failures
21
+ fail "Stop"
22
+ else
23
+ server.stop
24
+ end
25
+ end
26
+ rescue # rubocop:disable all
27
+ # Nothing to do.
13
28
  end
14
29
  end
15
30
  end
@@ -2,30 +2,7 @@
2
2
  require "test_helper"
3
3
  require "./lib/roger/generators.rb"
4
4
 
5
- module CustomGens
6
- module Generators
7
- # Simple Mock generator
8
- class MockedGenerator < Roger::Generators::Base
9
- desc "@mocked description"
10
- argument :path, type: :string, required: false, desc: "Path to generate project into"
11
- argument :another_arg, type: :string, required: false, desc: "Mocked or what?!"
12
-
13
- def test
14
- # Somewhat ugly way of checking
15
- fail NotImplementedError
16
- end
17
- end
18
-
19
- # Simple Mocku generator that has a project
20
- class MockedWithProjectGenerator < Roger::Generators::Base
21
- desc "Returns a project"
22
- def test
23
- # Somewhat ugly way of checking
24
- fail StandardError if @project
25
- end
26
- end
27
- end
28
- end
5
+ require File.dirname(__FILE__) + "/../helpers/generators"
29
6
 
30
7
  module Roger
31
8
  # Test Roger Generators
@@ -39,7 +16,7 @@ module Roger
39
16
  end
40
17
 
41
18
  def test_working_project
42
- Roger::Generators.register CustomGens::Generators::MockedWithProjectGenerator
19
+ Roger::Generators.register ::Generators::MockedWithProjectGenerator
43
20
  generators = Cli::Generate.new
44
21
 
45
22
  assert_raise StandardError do
@@ -48,14 +25,14 @@ module Roger
48
25
  end
49
26
 
50
27
  def test_register_generator
51
- Roger::Generators.register CustomGens::Generators::MockedGenerator
28
+ Roger::Generators.register ::Generators::MockedGenerator
52
29
  assert_includes Cli::Generate.tasks, "mocked"
53
30
  assert_equal Cli::Generate.tasks["mocked"].description, "@mocked description"
54
31
  assert_equal Cli::Generate.tasks["mocked"].usage, "mocked PATH ANOTHER_ARG"
55
32
  end
56
33
 
57
34
  def test_register_generator_with_custom_name
58
- Roger::Generators.register :mockery, CustomGens::Generators::MockedGenerator
35
+ Roger::Generators.register :mockery, ::Generators::MockedGenerator
59
36
  assert_includes Cli::Generate.tasks, "mockery"
60
37
  end
61
38
 
@@ -78,7 +55,7 @@ module Roger
78
55
  end
79
56
 
80
57
  def test_invoke_mocked_generator
81
- Roger::Generators.register CustomGens::Generators::MockedGenerator
58
+ Roger::Generators.register ::Generators::MockedGenerator
82
59
 
83
60
  generators = Cli::Generate.new
84
61
  assert_raise NotImplementedError do
@@ -1,21 +1,37 @@
1
1
  require "test_helper"
2
- require File.dirname(__FILE__) + "../../../../lib/roger/rack/roger"
3
2
 
4
3
  module Roger
5
4
  module Rack
6
5
  # Test Roger Rack
7
6
  class ServerTest < ::Test::Unit::TestCase
8
7
  def setup
9
- @project = Project.new(File.dirname(__FILE__) + "/../../project", rogerfile_path: false)
8
+ @project = Testing::MockProject.new
10
9
  @app = ::Roger::Rack::Roger.new(@project)
11
10
  end
12
11
 
12
+ def teardown
13
+ @project.destroy
14
+ end
15
+
13
16
  def test_middleware_renders_template
17
+ @project.construct.file "html/erb.html.erb", "ERB format"
14
18
  request = ::Rack::MockRequest.new(@app)
15
- response = request.get("/formats/erb")
19
+ response = request.get("/erb")
16
20
 
17
21
  assert response.body.include?("ERB format")
18
22
  end
23
+
24
+ def test_renderer_options_are_passed
25
+ @project.options[:renderer][:layout] = "bracket"
26
+
27
+ @project.construct.file "layouts/bracket.html.erb", "[<%= yield %>]"
28
+ @project.construct.file "html/test.html.erb", "<%= 'test' %>"
29
+
30
+ request = ::Rack::MockRequest.new(@app)
31
+ response = request.get("/test")
32
+
33
+ assert_equal "[test]", response.body
34
+ end
19
35
  end
20
36
  end
21
37
  end
@@ -27,25 +27,27 @@ module Roger
27
27
  end
28
28
 
29
29
  def test_basic_functionality
30
- finalizer = Roger::Release::Finalizers::Rsync.new(
30
+ finalizer = Roger::Release::Finalizers::Rsync.new
31
+
32
+ finalizer.call(
33
+ @release,
31
34
  remote_path: @target_path.to_s,
32
35
  ask: false
33
36
  )
34
37
 
35
- finalizer.call(@release)
36
-
37
38
  assert File.exist?(@target_path + "index.html"), @release.target_path.inspect
38
39
  end
39
40
 
40
41
  def test_rsync_command_works
41
- finalizer = Roger::Release::Finalizers::Rsync.new(
42
- rsync: "rsync-0123456789", # Let's hope nobody actually has this command
43
- remote_path: @target_path.to_s,
44
- ask: false
45
- )
42
+ finalizer = Roger::Release::Finalizers::Rsync.new
46
43
 
47
44
  assert_raise(RuntimeError) do
48
- finalizer.call(@release)
45
+ finalizer.call(
46
+ @release,
47
+ rsync: "rsync-0123456789", # Let's hope nobody actually has this command
48
+ remote_path: @target_path.to_s,
49
+ ask: false
50
+ )
49
51
  end
50
52
  end
51
53
  end
@@ -43,6 +43,18 @@ module Roger
43
43
  @mockup.call(@release)
44
44
  end
45
45
  end
46
+
47
+ def test_renderer_options_are_passed
48
+ @release.project.options[:renderer][:layout] = "bracket"
49
+ @release.project.construct.file "layouts/bracket.html.erb", "[<%= yield %>]"
50
+ @release.project.construct.directory "build" do |dir|
51
+ dir.file "test.html.erb", "<%= 'test' %>"
52
+ end
53
+
54
+ @mockup.call(@release)
55
+
56
+ assert_equal "[test]", File.read(@release.build_path + "test.html")
57
+ end
46
58
  end
47
59
 
48
60
  # Test the target_path function of Mockup
@@ -33,14 +33,13 @@ module Roger
33
33
  @project.release.run!
34
34
 
35
35
  assert @project.release.stack.empty?
36
- assert @project.release.finalizers.empty?
37
36
  end
38
37
 
39
38
  def test_release_should_add_mockup_processor_as_first_by_default
40
39
  release = @rogerfile.release
41
40
  release.run!
42
41
 
43
- assert release.stack.length > 0
42
+ assert !release.stack.empty?
44
43
  assert_equal Roger::Release::Processors::Mockup, release.stack.first.first.class
45
44
  end
46
45
 
@@ -48,8 +47,16 @@ module Roger
48
47
  release = @rogerfile.release
49
48
  release.run!
50
49
 
51
- assert release.stack.length > 0
52
- assert_equal Roger::Release::Processors::UrlRelativizer, release.stack.last.first.class
50
+ assert !release.stack.empty?
51
+ assert_equal Roger::Release::Processors::UrlRelativizer, release.stack[-2].first.class
52
+ end
53
+
54
+ def test_release_should_add_dir_finalizer_by_default
55
+ release = @rogerfile.release
56
+ release.run!
57
+
58
+ assert !release.stack.empty?
59
+ assert_equal Roger::Release::Finalizers::Dir, release.stack.last.first.class
53
60
  end
54
61
 
55
62
  # =============================
@@ -80,6 +87,22 @@ module Roger
80
87
  assert_equal build_path + "test.txt", build_path.children.first
81
88
  end
82
89
 
90
+ def test_release_should_use_html_path_as_default_source
91
+ # Create a file in the web dir
92
+ @project.construct.file "web/index.html"
93
+ @project.html_path = @project.path + "web"
94
+
95
+ # Blank release, just the copying
96
+ @rogerfile.release(blank: true, cleanup_build: false)
97
+
98
+ @project.release.run!
99
+
100
+ build_path = @project.release.build_path
101
+ assert build_path.exist?
102
+ assert_equal 1, build_path.children.size
103
+ assert_equal build_path + "index.html", build_path.children.first
104
+ end
105
+
83
106
  # ============================
84
107
  # = Banner and comment tests =
85
108
  # ============================
@@ -36,6 +36,12 @@ module Roger
36
36
  assert_equal "file", result
37
37
  end
38
38
 
39
+ def test_render_file_relative_fails_from_top_level
40
+ assert_raise ArgumentError do
41
+ @renderer.render_file("file.html.erb")
42
+ end
43
+ end
44
+
39
45
  def test_render_file_prevent_recursive
40
46
  assert_raise(ArgumentError) do
41
47
  @renderer.render(@base + "html/renderer/recursive.html.erb")
@@ -55,6 +61,24 @@ module Roger
55
61
  assert_equal "<h1>h1</h1>\n", result
56
62
  end
57
63
 
64
+ def test_current_remplate
65
+ path = @base + "html/dir1/test.html.erb"
66
+ result = @renderer.render(
67
+ path,
68
+ source: "<%= renderer.current_template.source_path %>"
69
+ )
70
+ assert_equal((@base + "html/dir1/test.html.erb").to_s, result)
71
+ end
72
+
73
+ def test_parent_template
74
+ path = @base + "html/dir1/test.html.erb"
75
+ result = @renderer.render(
76
+ path,
77
+ source: "<%= partial 'test/parent_template' %>"
78
+ )
79
+ assert_equal((@base + "html/dir1/test.html.erb").to_s, result)
80
+ end
81
+
58
82
  def test_render_md_erb
59
83
  result = @renderer.render("test.md.erb", source: "<%= '# h1' %>")
60
84
  assert_equal "<h1>h1</h1>\n", result
@@ -33,8 +33,32 @@ module Roger
33
33
  assert_equal "TEMPLATEB-PARTIAL-A", render_erb_template(template)
34
34
  end
35
35
 
36
- def render_erb_template(template)
37
- @renderer.render(@base + "html/layouts/test.html.erb", source: template)
36
+ def test_missing_layout
37
+ template = "---\nlayout: \"not-there\"\n---\nTEMPLATE"
38
+
39
+ assert_raise ArgumentError do
40
+ render_erb_template(template)
41
+ end
42
+ end
43
+
44
+ def test_default_layout
45
+ template = "TEMPLATE"
46
+ assert_equal "[TEMPLATE]", render_erb_template(template, layout: "bracket")
47
+ end
48
+
49
+ def test_default_layout_is_overriden_by_frontmatter
50
+ template = "---\nlayout: \"yield\"\n---\nTEMPLATE"
51
+ assert_equal "TEMPLATE", render_erb_template(template, layout: "bracket")
52
+ end
53
+
54
+ def test_default_layout_can_by_disabled_in_frontmatter
55
+ template = "---\nlayout: \n---\nTEMPLATE"
56
+ assert_equal "TEMPLATE", render_erb_template(template, layout: "bracket")
57
+ end
58
+
59
+ def render_erb_template(template, options = {})
60
+ options = {}.update(options).update(source: template)
61
+ @renderer.render(@base + "html/layouts/test.html.erb", options)
38
62
  end
39
63
  end
40
64
  end
@@ -51,6 +51,16 @@ module Roger
51
51
  assert_equal result, "{ key: value }"
52
52
  end
53
53
 
54
+ def test_partial_pass_locals
55
+ result = render_erb_template "<%= partial 'test/locals', variable: 'variable' %>"
56
+ assert_equal result, "variable"
57
+ end
58
+
59
+ def test_partial_pass_options
60
+ result = render_erb_template "<%= partial 'test/locals', locals: {variable: 'variable'} %>"
61
+ assert_equal result, "variable"
62
+ end
63
+
54
64
  def test_partial_with_block
55
65
  result = render_erb_template "<% partial 'test/yield' do %>CONTENT<% end %>"
56
66
  assert_equal result, "B-CONTENT-A"
@@ -82,12 +92,12 @@ module Roger
82
92
  end
83
93
 
84
94
  def test_partial_ten_max_depth_recursion
85
- r = render_erb_template "<%= partial 'test/max_depth', locals: {depth: 0, max_depth: 10} %>"
95
+ r = render_erb_template "<%= partial 'test/max_depth', {depth: 0, max_depth: 10} %>"
86
96
 
87
97
  assert_match(/Hammertime/, r)
88
98
 
89
99
  assert_raise(ArgumentError) do
90
- render_erb_template "<%= partial 'test/max_depth', locals: {depth: 0, max_depth: 11} %>"
100
+ render_erb_template "<%= partial 'test/max_depth', {depth: 0, max_depth: 11} %>"
91
101
  end
92
102
  end
93
103
 
@@ -7,6 +7,38 @@ module Roger
7
7
  def setup
8
8
  @project = Project.new(File.dirname(__FILE__) + "/../../project", rogerfile_path: false)
9
9
  @server = Server.new(@project)
10
+ @host = "127.0.0.1"
11
+ end
12
+
13
+ def test_port_free
14
+ port = 5192
15
+
16
+ # Port is free
17
+ assert @server.send(:port_free?, @host, port)
18
+
19
+ s = TCPServer.new(@host, port)
20
+
21
+ # Port is not free
22
+ assert !@server.send(:port_free?, @host, port)
23
+ ensure
24
+ s.close
25
+ end
26
+
27
+ def test_free_port_for_host_above
28
+ port = 9000
29
+
30
+ # Make sure something is running on port
31
+ begin
32
+ s = TCPServer.new(@host, port)
33
+ rescue SocketError, Errno::EADDRINUSE # rubocop:disable all
34
+ # Something already must be running on port
35
+ end
36
+
37
+ next_port = @server.send(:free_port_for_host_above, @host, port)
38
+ assert next_port > port
39
+
40
+ ensure
41
+ s.close
10
42
  end
11
43
 
12
44
  # Test to see if env["roger.project"] is set
@@ -1,10 +1,5 @@
1
- if ENV["CODECLIMATE_REPO_TOKEN"]
2
- require "codeclimate-test-reporter"
3
- CodeClimate::TestReporter.start
4
- else
5
- require "simplecov"
6
- SimpleCov.start
7
- end
1
+ require "simplecov"
2
+ SimpleCov.start
8
3
 
9
4
  require "test/unit"
10
5
  require "mocha/test_unit"
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.6.4
4
+ version: 1.7.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: 2016-10-14 00:00:00.000000000 Z
13
+ date: 2016-11-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: thor
@@ -158,14 +158,14 @@ dependencies:
158
158
  requirements:
159
159
  - - "~>"
160
160
  - !ruby/object:Gem::Version
161
- version: 2.10.0
161
+ version: 3.6.0
162
162
  type: :development
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
165
165
  requirements:
166
166
  - - "~>"
167
167
  - !ruby/object:Gem::Version
168
- version: 2.10.0
168
+ version: 3.6.0
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: rubocop
171
171
  requirement: !ruby/object:Gem::Requirement
@@ -227,6 +227,7 @@ files:
227
227
  - lib/roger/helpers/get_callable.rb
228
228
  - lib/roger/helpers/get_files.rb
229
229
  - lib/roger/helpers/logging.rb
230
+ - lib/roger/helpers/registration.rb
230
231
  - lib/roger/project.rb
231
232
  - lib/roger/rack/roger.rb
232
233
  - lib/roger/rack/sleep.rb
@@ -260,6 +261,7 @@ files:
260
261
  - lib/roger/version.rb
261
262
  - roger.gemspec
262
263
  - test/helpers/cli.rb
264
+ - test/helpers/generators.rb
263
265
  - test/project/.rvmrc
264
266
  - test/project/Gemfile
265
267
  - test/project/Gemfile.lock
@@ -286,6 +288,7 @@ files:
286
288
  - test/project/html/renderer/recursive.html.erb
287
289
  - test/project/html/static/non-relative.html.erb
288
290
  - test/project/html/static/relative.html.erb
291
+ - test/project/layouts/bracket.html.erb
289
292
  - test/project/layouts/partial.html.erb
290
293
  - test/project/layouts/partial_with_block.html.erb
291
294
  - test/project/layouts/test.html.erb
@@ -303,8 +306,10 @@ files:
303
306
  - test/project/partials/test/erb.html.erb
304
307
  - test/project/partials/test/front_matter.html.erb
305
308
  - test/project/partials/test/json.json.erb
309
+ - test/project/partials/test/locals.html.erb
306
310
  - test/project/partials/test/markdown.md
307
311
  - test/project/partials/test/max_depth.html.erb
312
+ - test/project/partials/test/parent_template.html.erb
308
313
  - test/project/partials/test/recursive.html.erb
309
314
  - test/project/partials/test/simple.html.erb
310
315
  - test/project/partials/test/yield.html.erb
@@ -369,6 +374,7 @@ specification_version: 4
369
374
  summary: Roger is a set of tools to create self-containing HTML mockups.
370
375
  test_files:
371
376
  - test/helpers/cli.rb
377
+ - test/helpers/generators.rb
372
378
  - test/project/.rvmrc
373
379
  - test/project/Gemfile
374
380
  - test/project/Gemfile.lock
@@ -395,6 +401,7 @@ test_files:
395
401
  - test/project/html/renderer/recursive.html.erb
396
402
  - test/project/html/static/non-relative.html.erb
397
403
  - test/project/html/static/relative.html.erb
404
+ - test/project/layouts/bracket.html.erb
398
405
  - test/project/layouts/partial.html.erb
399
406
  - test/project/layouts/partial_with_block.html.erb
400
407
  - test/project/layouts/test.html.erb
@@ -412,8 +419,10 @@ test_files:
412
419
  - test/project/partials/test/erb.html.erb
413
420
  - test/project/partials/test/front_matter.html.erb
414
421
  - test/project/partials/test/json.json.erb
422
+ - test/project/partials/test/locals.html.erb
415
423
  - test/project/partials/test/markdown.md
416
424
  - test/project/partials/test/max_depth.html.erb
425
+ - test/project/partials/test/parent_template.html.erb
417
426
  - test/project/partials/test/recursive.html.erb
418
427
  - test/project/partials/test/simple.html.erb
419
428
  - test/project/partials/test/yield.html.erb