webgen 1.0.0.beta1 → 1.0.0.beta2

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 (62) hide show
  1. data/API.rdoc +64 -11
  2. data/ChangeLog +391 -0
  3. data/README.md +2 -2
  4. data/VERSION +1 -1
  5. data/data/webgen/passive_sources/templates/tag.template +1 -1
  6. data/data/webgen/passive_sources/templates/tikz.template +14 -0
  7. data/lib/webgen/bundle/built-in/init.rb +9 -7
  8. data/lib/webgen/bundle_loader.rb +1 -1
  9. data/lib/webgen/cli/show_command.rb +2 -0
  10. data/lib/webgen/cli/show_config_command.rb +0 -1
  11. data/lib/webgen/cli/show_dependencies_command.rb +6 -63
  12. data/lib/webgen/cli/show_tree_command.rb +85 -0
  13. data/lib/webgen/content_processor/erb.rb +1 -1
  14. data/lib/webgen/content_processor/{rdoc.rb → r_doc.rb} +0 -0
  15. data/lib/webgen/content_processor/{redcloth.rb → red_cloth.rb} +0 -0
  16. data/lib/webgen/content_processor/ruby.rb +3 -0
  17. data/lib/webgen/content_processor/sass.rb +10 -6
  18. data/lib/webgen/content_processor/tikz.rb +10 -20
  19. data/lib/webgen/context/html_head.rb +7 -0
  20. data/lib/webgen/item_tracker.rb +42 -15
  21. data/lib/webgen/item_tracker/file.rb +7 -3
  22. data/lib/webgen/item_tracker/missing_node.rb +17 -5
  23. data/lib/webgen/item_tracker/node_content.rb +7 -3
  24. data/lib/webgen/item_tracker/node_meta_info.rb +8 -3
  25. data/lib/webgen/item_tracker/nodes.rb +10 -3
  26. data/lib/webgen/node.rb +4 -29
  27. data/lib/webgen/node_finder.rb +25 -10
  28. data/lib/webgen/path.rb +2 -2
  29. data/lib/webgen/path_handler/base.rb +20 -9
  30. data/lib/webgen/path_handler/feed.rb +29 -22
  31. data/lib/webgen/path_handler/page.rb +1 -3
  32. data/lib/webgen/path_handler/page_utils.rb +114 -33
  33. data/lib/webgen/path_handler/sitemap.rb +13 -6
  34. data/lib/webgen/path_handler/template.rb +0 -70
  35. data/lib/webgen/path_handler/virtual.rb +10 -2
  36. data/lib/webgen/tag.rb +13 -13
  37. data/lib/webgen/tag/tikz.rb +2 -1
  38. data/lib/webgen/test_helper.rb +2 -11
  39. data/lib/webgen/version.rb +1 -1
  40. data/test/webgen/content_processor/test_erb.rb +4 -0
  41. data/test/webgen/content_processor/{test_rdoc.rb → test_r_doc.rb} +1 -1
  42. data/test/webgen/content_processor/{test_redcloth.rb → test_red_cloth.rb} +1 -1
  43. data/test/webgen/content_processor/test_sass.rb +2 -2
  44. data/test/webgen/content_processor/test_tikz.rb +10 -3
  45. data/test/webgen/item_tracker/test_file.rb +5 -5
  46. data/test/webgen/item_tracker/test_missing_node.rb +8 -9
  47. data/test/webgen/item_tracker/test_node_content.rb +5 -6
  48. data/test/webgen/item_tracker/test_node_meta_info.rb +6 -7
  49. data/test/webgen/item_tracker/test_nodes.rb +7 -9
  50. data/test/webgen/path_handler/test_base.rb +4 -5
  51. data/test/webgen/path_handler/test_page.rb +1 -1
  52. data/test/webgen/path_handler/test_page_utils.rb +39 -11
  53. data/test/webgen/path_handler/test_template.rb +5 -45
  54. data/test/webgen/path_handler/test_virtual.rb +21 -0
  55. data/test/webgen/tag/test_link.rb +1 -1
  56. data/test/webgen/tag/test_tikz.rb +2 -2
  57. data/test/webgen/test_context.rb +10 -0
  58. data/test/webgen/test_item_tracker.rb +7 -4
  59. data/test/webgen/test_node.rb +3 -16
  60. data/test/webgen/test_node_finder.rb +10 -6
  61. data/test/webgen/test_tag.rb +4 -4
  62. metadata +218 -216
@@ -16,7 +16,7 @@ module Webgen
16
16
 
17
17
  add_tikz_options!(path, context)
18
18
 
19
- node = context.website.ext.path_handler.create_secondary_nodes(path, body, 'copy', context.ref_node.alcn).first
19
+ node = context.website.ext.path_handler.create_secondary_nodes(path, body, context.ref_node.alcn).first
20
20
 
21
21
  attrs = {'alt' => ''}.merge(context[:config]['tag.tikz.img_attr']).collect do |name, value|
22
22
  "#{name.to_s}=\"#{value}\""
@@ -31,6 +31,7 @@ module Webgen
31
31
  path.meta_info[opt] = context[:config][opt]
32
32
  end
33
33
  path.meta_info['pipeline'] = 'tikz'
34
+ path.meta_info['handler'] = 'copy'
34
35
  end
35
36
  private_class_method :add_tikz_options!
36
37
 
@@ -22,25 +22,16 @@ module Webgen
22
22
 
23
23
  # A special subclass of Webgen::Node that is used in testing when a "renderable" node is needed,
24
24
  # ie. one that has the necessary info set to be processed via Webgen::PathHandler::PageUtils.
25
- class RenderNode < Webgen::Node
26
-
27
- include Webgen::PathHandler::PageUtils
25
+ class RenderNode < Webgen::PathHandler::PageUtils::Node
28
26
 
29
27
  def initialize(page_data, parent, cn, dest_path, meta_info = {})
30
28
  super(parent, cn, dest_path, meta_info)
31
29
  page = Webgen::Page.from_data(page_data)
32
30
  self.node_info[:blocks] = page.blocks
31
+ self.node_info[:path_handler] = self
33
32
  self.meta_info.update(page.meta_info)
34
33
  end
35
34
 
36
- def blocks
37
- super(self)
38
- end
39
-
40
- def render_block(name, context)
41
- super(self, name, context)
42
- end
43
-
44
35
  def template_chain
45
36
  [self]
46
37
  end
@@ -3,6 +3,6 @@
3
3
  module Webgen
4
4
 
5
5
  # The version of webgen.
6
- VERSION = '1.0.0.beta1'
6
+ VERSION = '1.0.0.beta2'
7
7
 
8
8
  end
@@ -14,6 +14,10 @@ class TestErb < MiniTest::Unit::TestCase
14
14
  @context.content = "<%= context[:doit] %>6\n<%= context.ref_node.alcn %>\n<%= context.node.alcn %>\n<%= context.dest_node.alcn %><% context.website %>"
15
15
  assert_equal("hallo6\n/test\n/test\n/test", cp.call(@context).content)
16
16
 
17
+ @website.config['content_processor.erb.trim_mode'] = '%'
18
+ @context.content = "% 3.times do\na\n% end"
19
+ assert_equal("a\na\na\n", cp.call(@context).content)
20
+
17
21
  @context.content = "\n<%= 5* %>"
18
22
  assert_error_on_line(SyntaxError, 2) { cp.call(@context) }
19
23
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  require 'webgen/test_helper'
4
- require 'webgen/content_processor/rdoc'
4
+ require 'webgen/content_processor/r_doc'
5
5
 
6
6
  class TestRDoc < MiniTest::Unit::TestCase
7
7
 
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  require 'webgen/test_helper'
4
- require 'webgen/content_processor/redcloth'
4
+ require 'webgen/content_processor/red_cloth'
5
5
 
6
6
  class TestRedCloth < MiniTest::Unit::TestCase
7
7
 
@@ -22,8 +22,8 @@ class TestSass < MiniTest::Unit::TestCase
22
22
  assert_error_on_line(Webgen::RenderError, 2) { cp.call(@context) }
23
23
 
24
24
  # test @import-ing of sass files
25
- content = "#main\n background-image: relocatable('../dir2/file.test')"
26
- result = "#main {\n background-image: url(\"../../dir2/file.test\"); }\n"
25
+ content = "#main\n background-image: url(relocatable('../dir2/file.test') + \"#iefix\")"
26
+ result = "#main {\n background-image: url(\"../../dir2/file.test#iefix\"); }\n"
27
27
  root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
28
28
  dir = Webgen::Node.new(root, 'dir/', '/dir/')
29
29
  partial = Webgen::Node.new(dir, '_partial.sass', '/dir/_partial.sass')
@@ -9,6 +9,12 @@ class TestContentProcessorTikz < MiniTest::Unit::TestCase
9
9
 
10
10
  def test_static_call
11
11
  setup_context
12
+ @website.ext.content_processor = Webgen::ContentProcessor.new
13
+ @website.ext.content_processor.register('Blocks')
14
+ @website.ext.content_processor.register('Erb')
15
+ template_data = File.read(File.join(Webgen::Utils.data_dir, 'passive_sources', 'templates', 'tikz.template'))
16
+ node = RenderNode.new(template_data, @website.tree.dummy_root, '/template', '/template')
17
+
12
18
  @context.node.expect(:[], nil, ['ignored'])
13
19
 
14
20
  call('\tikz \draw (0,0) -- (0,1);', 'test.png', [], '', '72 72', false)
@@ -24,9 +30,10 @@ class TestContentProcessorTikz < MiniTest::Unit::TestCase
24
30
  @context.content = content
25
31
  @context.dest_node.expect(:dest_path, path)
26
32
  @context.website.config.update('content_processor.tikz.resolution' => res,
27
- 'content_processor.tikz.transparent' => trans,
28
- 'content_processor.tikz.libraries' => libs,
29
- 'content_processor.tikz.opts' => opts)
33
+ 'content_processor.tikz.transparent' => trans,
34
+ 'content_processor.tikz.libraries' => libs,
35
+ 'content_processor.tikz.opts' => opts,
36
+ 'content_processor.tikz.template' => '/template')
30
37
  Webgen::ContentProcessor::Tikz.call(@context)
31
38
  end
32
39
 
@@ -19,13 +19,13 @@ class TestItemTrackerFile < MiniTest::Unit::TestCase
19
19
  assert_equal(File.mtime(__FILE__), @obj.item_data(__FILE__))
20
20
  end
21
21
 
22
- def test_changed?
23
- refute(@obj.changed?(__FILE__, Time.now))
24
- assert(@obj.changed?(__FILE__, Time.parse("1980-01-01")))
22
+ def test_item_changed?
23
+ refute(@obj.item_changed?(__FILE__, Time.now))
24
+ assert(@obj.item_changed?(__FILE__, Time.parse("1980-01-01")))
25
25
  end
26
26
 
27
- def test_node_referenced?
28
- refute(@obj.node_referenced?('anything', 'nothing', '/alcn'))
27
+ def test_referenced_nodes
28
+ assert_equal([], @obj.referenced_nodes('anything', 'nothing'))
29
29
  end
30
30
 
31
31
  end
@@ -35,36 +35,35 @@ class TestItemTrackerMissingNode < MiniTest::Unit::TestCase
35
35
  assert_same(false, @obj.item_data('id', 'lang'))
36
36
  end
37
37
 
38
- def test_changed?
38
+ def test_item_changed?
39
39
  @website.tree.answer = nil
40
40
 
41
41
  # run where missing node item was added
42
- assert(@obj.changed?(['alcn', 'lang'], true))
42
+ assert(@obj.item_changed?(['alcn', 'lang'], true))
43
43
 
44
44
  @website.blackboard.dispatch_msg(:after_all_nodes_written)
45
45
 
46
46
  # run where at least one new node was created
47
47
  @website.blackboard.dispatch_msg(:after_node_created)
48
- assert(@obj.changed?(['alcn', 'lang'], true))
48
+ assert(@obj.item_changed?(['alcn', 'lang'], true))
49
49
 
50
50
  @website.blackboard.dispatch_msg(:after_all_nodes_written)
51
51
  @website.blackboard.dispatch_msg(:after_all_nodes_written)
52
52
 
53
53
  # run where no new nodes were created and therefore "changing" stops
54
- refute(@obj.changed?(['alcn', 'lang'], true))
54
+ refute(@obj.item_changed?(['alcn', 'lang'], true))
55
55
 
56
56
  @website.blackboard.dispatch_msg(:after_all_nodes_written)
57
57
  @website.blackboard.dispatch_msg(:website_generated)
58
58
 
59
59
  # on next invocation of website generation
60
60
  @website.tree.answer = :a42
61
- assert(@obj.changed?(['alcn', 'lang'], true))
62
- refute(@obj.changed?(['alcn', 'lang'], false))
61
+ assert(@obj.item_changed?(['alcn', 'lang'], true))
62
+ refute(@obj.item_changed?(['alcn', 'lang'], false))
63
63
  end
64
64
 
65
- def test_node_referenced?
66
- assert(@obj.node_referenced?(['alcn', 'lang'], true, 'alcn'))
67
- refute(@obj.node_referenced?(['other', 'lang'], true, 'alcn'))
65
+ def test_referenced_nodes
66
+ assert_equal(['alcn'], @obj.referenced_nodes(['alcn', 'lang'], true))
68
67
  end
69
68
 
70
69
  end
@@ -18,7 +18,7 @@ class TestNodeContent < MiniTest::Unit::TestCase
18
18
  assert_nil(@obj.item_data('alcn'))
19
19
  end
20
20
 
21
- def test_changed?
21
+ def test_item_changed?
22
22
  item_tracker = MiniTest::Mock.new
23
23
  item_tracker.expect(:node_changed?, true, [:node])
24
24
  ext = MiniTest::Mock.new
@@ -26,17 +26,16 @@ class TestNodeContent < MiniTest::Unit::TestCase
26
26
  @website.expect(:ext, ext)
27
27
  @website.expect(:tree, {'alcn' => :node})
28
28
 
29
- assert(@obj.changed?('unknown', 'old'))
30
- assert(@obj.changed?('alcn', 'other'))
29
+ assert(@obj.item_changed?('unknown', 'old'))
30
+ assert(@obj.item_changed?('alcn', 'other'))
31
31
 
32
32
  @website.verify
33
33
  item_tracker.verify
34
34
  ext.verify
35
35
  end
36
36
 
37
- def test_node_referenced?
38
- assert(@obj.node_referenced?('alcn', nil, 'alcn'))
39
- refute(@obj.node_referenced?('other', nil, 'alcn'))
37
+ def test_referenced_nodes
38
+ assert_equal(['alcn'], @obj.referenced_nodes('alcn', nil))
40
39
  end
41
40
 
42
41
  end
@@ -27,18 +27,17 @@ class TestNodeMetaInfo < MiniTest::Unit::TestCase
27
27
  @node.verify
28
28
  end
29
29
 
30
- def test_changed?
30
+ def test_item_changed?
31
31
  @node.expect(:nil?, false)
32
- assert(@obj.changed?(['unknown', nil], 'old'))
33
- assert(@obj.changed?(['alcn', nil], {"key" => 'value', 'other' => 'new'}))
34
- assert(@obj.changed?(['alcn', 'key'], 'new'))
32
+ assert(@obj.item_changed?(['unknown', nil], 'old'))
33
+ assert(@obj.item_changed?(['alcn', nil], {"key" => 'value', 'other' => 'new'}))
34
+ assert(@obj.item_changed?(['alcn', 'key'], 'new'))
35
35
  @website.verify
36
36
  @node.verify
37
37
  end
38
38
 
39
- def test_node_referenced?
40
- assert(@obj.node_referenced?(['alcn', nil], 'mi', 'alcn'))
41
- refute(@obj.node_referenced?(['other', nil], 'mi', 'alcn'))
39
+ def test_referenced_nodes
40
+ assert_equal(['alcn'], @obj.referenced_nodes(['alcn', nil], 'mi'))
42
41
  end
43
42
 
44
43
  end
@@ -36,26 +36,24 @@ class TestItemTrackerNodes < MiniTest::Unit::TestCase
36
36
  @obj.item_data(*@args2))
37
37
  end
38
38
 
39
- def test_changed?
39
+ def test_item_changed?
40
40
  setup_default_nodes(@website.tree)
41
41
  @website.ext.item_tracker = MiniTest::Mock.new
42
42
  @website.ext.item_tracker.expect(:item_changed?, false, [:node_meta_info, nil])
43
43
 
44
44
  [@args1, @args2].each do |args|
45
45
  old_data = @obj.item_data(*args)
46
- assert(@obj.changed?(args, []))
47
- refute(@obj.changed?(args, old_data))
46
+ assert(@obj.item_changed?(args, []))
47
+ refute(@obj.item_changed?(args, old_data))
48
48
  end
49
49
  end
50
50
 
51
- def test_node_referenced?
51
+ def test_referenced_nodes
52
52
  setup_default_nodes(@website.tree)
53
53
 
54
- assert(@obj.node_referenced?(@args1, @obj.item_data(*@args1), '/file.en.html'))
55
- refute(@obj.node_referenced?(@args1, @obj.item_data(*@args1), '/dir/file.html'))
56
-
57
- assert(@obj.node_referenced?(@args2, @obj.item_data(*@args2), '/file.en.html'))
58
- refute(@obj.node_referenced?(@args2, @obj.item_data(*@args2), '/other.en.html'))
54
+ assert(["/file.en.html", "/file.de.html", "/other.html", "/other.en.html", "/german.de.html",
55
+ "/dir/", "/dir2/"].map {|f| @website.tree[f]},
56
+ @obj.referenced_nodes(@args1, @obj.item_data(*@args1)))
59
57
  end
60
58
 
61
59
  end
@@ -22,20 +22,19 @@ class TestPathHandlerBase < MiniTest::Unit::TestCase
22
22
  @obj = TestPathHandler.new(@website)
23
23
  end
24
24
 
25
- def test_content
26
- assert_nil(@obj.content(nil))
27
- end
28
-
29
25
  def test_create_node
30
26
  count = 0
31
27
  assert_nil(@obj.create_node(Webgen::Path.new('/test.html', 'draft' => true)))
32
28
 
33
29
  path = Webgen::Path.new('/path.html', 'dest_path' => '<parent><basename>(.<lang>)<ext>',
34
30
  'modified_at' => 'unknown', 'parent_alcn' => '')
35
- node = @obj.create_node(path) {|n| count += 1; assert_kind_of(Webgen::Node, n)}
31
+ node = @obj.create_node(path) {|n| count += 1; assert_kind_of(Webgen::PathHandler::Base::Node, n)}
36
32
  assert_equal(path, node.node_info[:path])
37
33
  assert_kind_of(Time, node.meta_info['modified_at'])
38
34
  assert_equal(1, count)
35
+ assert_nil(node.content)
36
+ def (@obj).content(node); node; end
37
+ assert_equal(node, node.content)
39
38
 
40
39
  second_node = @obj.create_node(path) {|n| count += 1}
41
40
  assert_equal(1, count)
@@ -18,7 +18,7 @@ class TestPathHandlerPage < MiniTest::Unit::TestCase
18
18
  path = Webgen::Path.new('/default.page', 'dest_path' => '<parent><basename><ext>') { StringIO.new('test') }
19
19
  node = @page.create_nodes(path, ['content'])
20
20
  refute_nil(node)
21
- assert_equal(['content'], @page.blocks(node))
21
+ assert_equal(['content'], node.blocks)
22
22
  assert_equal('/default.en.html', node.alcn)
23
23
  end
24
24
 
@@ -25,34 +25,62 @@ class TestPageUtils < MiniTest::Unit::TestCase
25
25
  assert_equal('value', path.meta_info['key'])
26
26
  end
27
27
 
28
+ def test_template_chain
29
+ setup_website('path_handler.default_template' => 'default.template')
30
+ @website.expect(:cache, Webgen::Cache.new)
31
+ @root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
32
+
33
+ default_template = MyHandler::Node.new(@root, 'default.template', '/default.template')
34
+ default_de_template = MyHandler::Node.new(@root, 'default.template', '/default.de.template', {'lang' => 'de'})
35
+ other_template = MyHandler::Node.new(@root, 'other.template', '/other.template')
36
+ stopped_template = MyHandler::Node.new(@root, 'stopped.html', '/stopped.page', { 'template' => nil})
37
+ invalid_template = MyHandler::Node.new(@root, 'invalid.template', '/invalid.template', {'template' => 'invalidity'})
38
+ chained_template = MyHandler::Node.new(@root, 'chained.template', '/chained.template', {'template' => 'other.template'})
39
+ german_file = MyHandler::Node.new(@root, 'german.page', '/german.html', {'lang' => 'de', 'template' => 'other.template'})
40
+ dir = Webgen::Node.new(@root, 'dir/', '/dir/')
41
+ dir_default_template = MyHandler::Node.new(dir, 'default.template', '/dir/default.template')
42
+ dir_dir = Webgen::Node.new(dir, 'dir/', '/dir/dir/')
43
+ dir_dir_file = MyHandler::Node.new(dir_dir, 'file.page', '/dir/dir/file.html', {'lang' => 'en'})
44
+
45
+ assert_equal([], default_template.template_chain)
46
+ assert_equal([], stopped_template.template_chain)
47
+ assert_equal([default_template], other_template.template_chain)
48
+ assert_equal([default_template], invalid_template.template_chain)
49
+ assert_equal([default_template, other_template], chained_template.template_chain)
50
+ assert_equal([default_de_template, other_template], german_file.template_chain)
51
+ assert_equal([default_template], dir_default_template.template_chain)
52
+ assert_equal([default_template, dir_default_template], dir_dir_file.template_chain)
53
+
54
+ @website.cache.reset_volatile_cache
55
+ @root.tree.delete_node(default_template)
56
+ assert_equal([], other_template.template_chain)
57
+ end
58
+
28
59
  def test_render_block
29
60
  setup_context
30
- node = @context.node
31
- node.expect(:blocks, {'content' => 'mycontent'})
32
- @context.node.expect(:meta_info, {})
33
61
  @website.ext.content_processor = Webgen::ContentProcessor.new
34
- @website.ext.item_tracker = MiniTest::Mock.new
35
- @website.ext.item_tracker.expect(:add, nil, [node, :node_content, node.alcn])
62
+ node = MyHandler::Node.new(@website.tree.dummy_root, '/', '/')
63
+ node.node_info[:blocks] = {'content' => 'mycontent'}
36
64
 
37
65
  # invalid block name
38
- assert_raises(Webgen::RenderError) { @handler.render_block(node, 'unknown', @context) }
66
+ assert_raises(Webgen::RenderError) { node.render_block('unknown', @context) }
39
67
 
40
68
  # nothing to render because pipeline is empty
41
- @handler.render_block(node, 'content', @context)
69
+ node.render_block('content', @context)
42
70
  assert_equal('mycontent', @context.content)
43
71
 
44
72
  # invalid content processor
45
- assert_raises(Webgen::Error) { @handler.render_block(node, 'content', @context, ['test']) }
73
+ assert_raises(Webgen::Error) { node.render_block('content', @context, ['test']) }
46
74
 
47
75
  node.meta_info['blocks'] = {'content' => {'pipeline' => ['test']}}
48
- assert_raises(Webgen::Error) { @handler.render_block(node, 'content', @context) }
76
+ assert_raises(Webgen::Error) { node.render_block('content', @context) }
49
77
 
50
78
  # with content processor
51
79
  @website.ext.content_processor.register('test') {|ctx| ctx.content = 'test' + ctx.content; ctx}
52
- @handler.render_block(node, 'content', @context)
80
+ node.render_block('content', @context)
53
81
  assert_equal('testmycontent', @context.content)
54
82
 
55
- @handler.render_block(node, 'content', @context, ['test', 'test'])
83
+ node.render_block('content', @context, ['test', 'test'])
56
84
  assert_equal('testtestmycontent', @context.content)
57
85
  end
58
86
 
@@ -9,56 +9,16 @@ class TestPathHandlerTemplate < MiniTest::Unit::TestCase
9
9
 
10
10
  include Webgen::TestHelper
11
11
 
12
- def setup
13
- setup_website('path_handler.template.default_template' => 'default.template')
14
- @website.expect(:cache, Webgen::Cache.new)
15
-
12
+ def test_create_nodes
13
+ setup_website
14
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
16
15
  @template = Webgen::PathHandler::Template.new(@website)
17
- @root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
18
- end
19
16
 
20
- def test_create_nodes
21
17
  path = Webgen::Path.new('/default.template', 'dest_path' => '<parent><basename><ext>') { StringIO.new('test') }
22
18
  node = @template.create_nodes(path, ['content'])
23
19
  refute_nil(node)
24
- assert_equal(['content'], @template.blocks(node))
25
- end
26
-
27
- def test_template_chain
28
- default_template = Webgen::Node.new(@root, 'default.template', '/default.template')
29
- default_de_template = Webgen::Node.new(@root, 'default.template', '/default.de.template', {'lang' => 'de'})
30
- other_template = Webgen::Node.new(@root, 'other.template', '/other.template')
31
- stopped_template = Webgen::Node.new(@root, 'stopped.html', '/stopped.page', { 'template' => nil})
32
- invalid_template = Webgen::Node.new(@root, 'invalid.template', '/invalid.template', {'template' => 'invalidity'})
33
- chained_template = Webgen::Node.new(@root, 'chained.template', '/chained.template', {'template' => 'other.template'})
34
- german_file = Webgen::Node.new(@root, 'german.page', '/german.html', {'lang' => 'de', 'template' => 'other.template'})
35
- dir = Webgen::Node.new(@root, 'dir/', '/dir/')
36
- dir_default_template = Webgen::Node.new(dir, 'default.template', '/dir/default.template')
37
- dir_dir = Webgen::Node.new(dir, 'dir/', '/dir/dir/')
38
- dir_dir_file = Webgen::Node.new(dir_dir, 'file.page', '/dir/dir/file.html', {'lang' => 'en'})
39
-
40
- assert_equal([], @template.template_chain(default_template))
41
- assert_equal([], @template.template_chain(stopped_template))
42
- assert_equal([default_template], @template.template_chain(other_template))
43
- assert_equal([default_template], @template.template_chain(invalid_template))
44
- assert_equal([default_template, other_template], @template.template_chain(chained_template))
45
- assert_equal([default_de_template, other_template], @template.template_chain(german_file))
46
- assert_equal([default_template], @template.template_chain(dir_default_template))
47
- assert_equal([default_template, dir_default_template], @template.template_chain(dir_dir_file))
48
-
49
- @website.cache.reset_volatile_cache
50
- @root.tree.delete_node(default_template)
51
- assert_equal([], @template.template_chain(other_template))
52
- end
53
-
54
- def test_default_template
55
- dir = Webgen::Node.new(@root, 'dir/', '/dir/')
56
- template = Webgen::Node.new(@root, 'default.template', '/default.template')
57
-
58
- assert_equal(template, @template.default_template(@root, nil))
59
- assert_equal(template, @template.default_template(dir, nil))
60
- @website.tree.delete_node(template)
61
- assert_nil(@template.default_template(@root, nil))
20
+ assert_equal(['content'], node.blocks)
21
+ assert(node['no_output'])
62
22
  end
63
23
 
64
24
  end