webgen 0.5.8 → 0.5.9

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 (142) hide show
  1. data/COPYING +4 -0
  2. data/ChangeLog +1037 -0
  3. data/Rakefile +5 -6
  4. data/THANKS +1 -0
  5. data/VERSION +1 -1
  6. data/bin/webgen +1 -1
  7. data/data/webgen/passive_sources/images/generated_by_webgen.png +0 -0
  8. data/data/webgen/passive_sources/images/webgen_logo.png +0 -0
  9. data/data/webgen/passive_sources/stylesheets/coderay-default.css +129 -0
  10. data/data/webgen/passive_sources/templates/atom_feed.template +38 -0
  11. data/data/webgen/passive_sources/templates/rss_feed.template +28 -0
  12. data/data/webgen/passive_sources/templates/sitemap.template +21 -0
  13. data/data/webgen/resources.yaml +2 -1
  14. data/data/webgen/website_skeleton/Rakefile +5 -1
  15. data/doc/contentprocessor/builder.page +2 -2
  16. data/doc/contentprocessor/erb.page +5 -2
  17. data/doc/contentprocessor/erubis.page +2 -2
  18. data/doc/contentprocessor/head.page +21 -0
  19. data/doc/contentprocessor/tidy.page +14 -0
  20. data/doc/extensions.page +1 -1
  21. data/doc/faq.page +2 -2
  22. data/doc/manual.page +108 -43
  23. data/doc/reference_configuration.page +83 -5
  24. data/doc/reference_metainfo.page +24 -4
  25. data/doc/reference_website_styles.page +2 -2
  26. data/doc/sourcehandler/feed.page +11 -13
  27. data/doc/sourcehandler/metainfo.page +10 -3
  28. data/doc/sourcehandler/page.page +4 -4
  29. data/doc/sourcehandler/sitemap.page +8 -7
  30. data/doc/tag/coderay.page +6 -2
  31. data/doc/tag/includefile.page +1 -1
  32. data/doc/tag/menu.page +3 -0
  33. data/lib/webgen/cli/apply_command.rb +1 -1
  34. data/lib/webgen/cli/utils.rb +2 -2
  35. data/lib/webgen/common.rb +0 -9
  36. data/lib/webgen/contentprocessor.rb +18 -3
  37. data/lib/webgen/contentprocessor/blocks.rb +67 -36
  38. data/lib/webgen/contentprocessor/builder.rb +5 -2
  39. data/lib/webgen/contentprocessor/erb.rb +4 -2
  40. data/lib/webgen/contentprocessor/erubis.rb +5 -2
  41. data/lib/webgen/contentprocessor/haml.rb +6 -2
  42. data/lib/webgen/contentprocessor/head.rb +64 -0
  43. data/lib/webgen/contentprocessor/maruku.rb +3 -1
  44. data/lib/webgen/contentprocessor/rdiscount.rb +2 -0
  45. data/lib/webgen/contentprocessor/rdoc.rb +2 -0
  46. data/lib/webgen/contentprocessor/redcloth.rb +2 -0
  47. data/lib/webgen/contentprocessor/sass.rb +5 -3
  48. data/lib/webgen/contentprocessor/tags.rb +40 -24
  49. data/lib/webgen/contentprocessor/tidy.rb +38 -0
  50. data/lib/webgen/context.rb +13 -4
  51. data/lib/webgen/context/render.rb +32 -0
  52. data/lib/webgen/context/tags.rb +20 -0
  53. data/lib/webgen/default_config.rb +15 -4
  54. data/lib/webgen/deprecated.rb +38 -4
  55. data/lib/webgen/error.rb +135 -0
  56. data/lib/webgen/node.rb +48 -40
  57. data/lib/webgen/output.rb +5 -3
  58. data/lib/webgen/output/filesystem.rb +4 -4
  59. data/lib/webgen/page.rb +4 -4
  60. data/lib/webgen/path.rb +161 -58
  61. data/lib/webgen/source.rb +9 -6
  62. data/lib/webgen/source/filesystem.rb +1 -1
  63. data/lib/webgen/source/stacked.rb +13 -5
  64. data/lib/webgen/source/tararchive.rb +6 -2
  65. data/lib/webgen/sourcehandler.rb +100 -54
  66. data/lib/webgen/sourcehandler/base.rb +58 -24
  67. data/lib/webgen/sourcehandler/copy.rb +6 -5
  68. data/lib/webgen/sourcehandler/directory.rb +3 -9
  69. data/lib/webgen/sourcehandler/feed.rb +25 -50
  70. data/lib/webgen/sourcehandler/fragment.rb +10 -8
  71. data/lib/webgen/sourcehandler/memory.rb +9 -10
  72. data/lib/webgen/sourcehandler/metainfo.rb +9 -9
  73. data/lib/webgen/sourcehandler/page.rb +6 -5
  74. data/lib/webgen/sourcehandler/sitemap.rb +22 -22
  75. data/lib/webgen/sourcehandler/template.rb +6 -6
  76. data/lib/webgen/sourcehandler/virtual.rb +19 -17
  77. data/lib/webgen/tag/base.rb +27 -27
  78. data/lib/webgen/tag/breadcrumbtrail.rb +3 -3
  79. data/lib/webgen/tag/coderay.rb +19 -8
  80. data/lib/webgen/tag/executecommand.rb +4 -3
  81. data/lib/webgen/tag/langbar.rb +2 -2
  82. data/lib/webgen/tag/link.rb +8 -7
  83. data/lib/webgen/tag/menu.rb +2 -2
  84. data/lib/webgen/tag/metainfo.rb +1 -1
  85. data/lib/webgen/tag/relocatable.rb +17 -21
  86. data/lib/webgen/tag/tikz.rb +7 -10
  87. data/lib/webgen/tree.rb +7 -7
  88. data/lib/webgen/version.rb +1 -1
  89. data/lib/webgen/website.rb +32 -2
  90. data/misc/default.css +8 -2
  91. data/misc/default.template +2 -2
  92. data/misc/logo.svg +313 -0
  93. data/misc/style.page +1 -1
  94. data/test/helper.rb +18 -2
  95. data/test/test_cli.rb +104 -0
  96. data/test/test_common_sitemap.rb +1 -1
  97. data/test/test_contentprocessor.rb +8 -2
  98. data/test/test_contentprocessor_blocks.rb +17 -8
  99. data/test/test_contentprocessor_builder.rb +13 -2
  100. data/test/test_contentprocessor_erb.rb +9 -3
  101. data/test/test_contentprocessor_erubis.rb +9 -3
  102. data/test/test_contentprocessor_fragments.rb +12 -11
  103. data/test/test_contentprocessor_haml.rb +11 -2
  104. data/test/test_contentprocessor_head.rb +44 -0
  105. data/test/test_contentprocessor_maruku.rb +5 -1
  106. data/test/test_contentprocessor_rdiscount.rb +4 -0
  107. data/test/test_contentprocessor_rdoc.rb +4 -0
  108. data/test/test_contentprocessor_redcloth.rb +5 -1
  109. data/test/test_contentprocessor_sass.rb +8 -2
  110. data/test/test_contentprocessor_tags.rb +22 -7
  111. data/test/test_contentprocessor_tidy.rb +34 -0
  112. data/test/test_context.rb +39 -0
  113. data/test/test_error.rb +85 -0
  114. data/test/test_node.rb +57 -21
  115. data/test/test_page.rb +23 -5
  116. data/test/test_path.rb +120 -64
  117. data/test/test_source_filesystem.rb +1 -1
  118. data/test/test_source_stacked.rb +19 -6
  119. data/test/test_sourcehandler_base.rb +63 -50
  120. data/test/test_sourcehandler_copy.rb +6 -6
  121. data/test/test_sourcehandler_directory.rb +8 -12
  122. data/test/test_sourcehandler_feed.rb +15 -7
  123. data/test/test_sourcehandler_fragment.rb +6 -5
  124. data/test/test_sourcehandler_main.rb +39 -0
  125. data/test/test_sourcehandler_memory.rb +4 -4
  126. data/test/test_sourcehandler_metainfo.rb +20 -11
  127. data/test/test_sourcehandler_page.rb +10 -10
  128. data/test/test_sourcehandler_sitemap.rb +24 -5
  129. data/test/test_sourcehandler_template.rb +18 -15
  130. data/test/test_sourcehandler_virtual.rb +9 -5
  131. data/test/test_tag_base.rb +6 -29
  132. data/test/test_tag_coderay.rb +16 -3
  133. data/test/test_tag_executecommand.rb +2 -2
  134. data/test/test_tag_link.rb +5 -4
  135. data/test/test_tag_menu.rb +15 -15
  136. data/test/test_tag_metainfo.rb +1 -0
  137. data/test/test_tag_relocatable.rb +3 -2
  138. data/test/test_tag_tikz.rb +5 -5
  139. data/test/test_tree.rb +8 -8
  140. data/test/test_website.rb +15 -0
  141. metadata +21 -14
  142. data/test/test_common.rb +0 -18
@@ -15,6 +15,9 @@ class TestSourceHandlerMetainfo < Test::Unit::TestCase
15
15
  /default.*:
16
16
  title: new title
17
17
  before: valbef
18
+
19
+ /*/:
20
+ title: test
18
21
  ---
19
22
  /default.css:
20
23
  after: valaft
@@ -28,35 +31,37 @@ EOF
28
31
  @website.blackboard.add_service(:source_paths) do
29
32
  {'/default.css' => path_with_meta_info('/default.css') {StringIO.new('# header')},
30
33
  '/other.page' => path_with_meta_info('/other.page') {StringIO.new('other page')},
34
+ '/hallo/' => path_with_meta_info('/hallo/')
31
35
  }
32
36
  end
33
37
 
34
38
  @obj = Webgen::SourceHandler::Metainfo.new
35
- @root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
36
- @node = @obj.create_node(@root, path_with_meta_info('/metainfo', {}, @obj.class.name) {StringIO.new(CONTENT)})
39
+ @root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
40
+ @node = @obj.create_node(path_with_meta_info('/metainfo', {}, @obj.class.name) {StringIO.new(CONTENT)})
37
41
  end
38
42
 
39
43
  def test_create_node
40
- assert_equal({'/default.*' => {'title' => 'new title', 'before' => 'valbef'}}, @node.node_info[:mi_paths])
44
+ assert_equal({'/default.*' => {'title' => 'new title', 'before' => 'valbef'},
45
+ '/*' => {'title' => 'test'}}, @node.node_info[:mi_paths])
41
46
  assert_equal({'/default.css' => {'after' => 'valaft'},
42
47
  '/other.page' => {'title' => 'Not Other'}}, @node.node_info[:mi_alcn])
43
48
  end
44
49
 
45
50
  def test_empty_metainfo_file
46
- node = @obj.create_node(@root, path_with_meta_info('/test', {}, @obj.class.name) {StringIO.new('')})
51
+ node = @obj.create_node(path_with_meta_info('/test', {}, @obj.class.name) {StringIO.new('')})
47
52
  assert_equal({}, node.node_info[:mi_paths])
48
53
  assert_equal({}, node.node_info[:mi_alcn])
49
54
  end
50
55
 
51
56
  def test_meta_info_changed
52
- other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
57
+ other = TestSH.new.create_node(path_with_meta_info('/default.css'))
53
58
  assert(!@obj.send(:meta_info_changed?, @node, other))
54
59
  assert(@obj.send(:meta_info_changed?, @node, other, :force))
55
60
  assert(!@obj.send(:meta_info_changed?, @node, other, :no_old_data))
56
61
  end
57
62
 
58
63
  def test_mark_all_matched_dirty
59
- other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
64
+ other = TestSH.new.create_node(path_with_meta_info('/default.css'))
60
65
 
61
66
  other.unflag(:dirty_meta_info)
62
67
  @obj.send(:mark_all_matched_dirty, @node)
@@ -73,18 +78,22 @@ EOF
73
78
 
74
79
  def test_before_node_created
75
80
  path = path_with_meta_info('/default.css')
76
- @website.blackboard.dispatch_msg(:before_node_created, @root, path)
81
+ @website.blackboard.dispatch_msg(:before_node_created, path)
77
82
  assert('valbef', path.meta_info['before'])
83
+
84
+ path = path_with_meta_info('/hallo/')
85
+ @website.blackboard.dispatch_msg(:before_node_created, path)
86
+ assert('test', path.meta_info['title'])
78
87
  end
79
88
 
80
89
  def test_after_node_created
81
- other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
90
+ other = TestSH.new.create_node(path_with_meta_info('/default.css'))
82
91
  @website.blackboard.dispatch_msg(:after_node_created, @node)
83
92
  assert('valaft', other['after'])
84
93
  end
85
94
 
86
95
  def test_before_node_deleted
87
- other = TestSH.new.create_node(@root, path_with_meta_info('/default.css'))
96
+ other = TestSH.new.create_node(path_with_meta_info('/default.css'))
88
97
  @website.blackboard.dispatch_msg(:before_node_deleted, @node)
89
98
  assert(other.flagged?(:dirty_meta_info))
90
99
  assert(@obj.nodes.empty?)
@@ -106,12 +115,12 @@ EOF
106
115
  end
107
116
 
108
117
  def test_deletion_of_metainfo
109
- other = TestSH.new.create_node(@root, path_with_meta_info('/other.page'))
118
+ other = TestSH.new.create_node(path_with_meta_info('/other.page'))
110
119
  @website.blackboard.dispatch_msg(:after_node_created, other)
111
120
  assert_equal('Not Other', other['title'])
112
121
 
113
122
  @node.flag(:reinit)
114
- @node = @obj.create_node(@root, path_with_meta_info('/metainfo', {}, @obj.class.name) {StringIO.new("")})
123
+ @node = @obj.create_node(path_with_meta_info('/metainfo', {}, @obj.class.name) {StringIO.new("")})
115
124
  assert(other.flagged?(:dirty_meta_info))
116
125
  end
117
126
 
@@ -14,46 +14,46 @@ class TestSourceHandlerPage < Test::Unit::TestCase
14
14
  @website.blackboard.del_service(:templates_for_node)
15
15
  @website.blackboard.add_service(:templates_for_node) {|node| []}
16
16
  @obj = Webgen::SourceHandler::Page.new
17
- @root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
17
+ @root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
18
18
  @path = path_with_meta_info('/index.page') {StringIO.new('content')}
19
19
  @path.meta_info.update({'lang'=>'eo', 'test'=>'yes', 'sort_info'=>6})
20
20
  @website.blackboard.add_service(:source_paths) {{@path.path => @path}}
21
21
  end
22
22
 
23
23
  def test_create_node
24
- node = @obj.create_node(@root, @path.dup)
24
+ node = @obj.create_node(@path.dup)
25
25
 
26
26
  assert_not_nil(node)
27
- assert_equal('test/index.eo.html', node.path)
27
+ assert_equal('/index.eo.html', node.path)
28
28
  assert_equal(@obj.class.name, node.node_info[:processor])
29
29
  assert_equal('Index', node['title'])
30
30
  assert_equal('yes', node['test'])
31
31
  assert_equal(6, node['sort_info'])
32
32
  assert_equal(Webgen::LanguageManager.language_for_code('epo'), node.lang)
33
33
 
34
- assert_equal(node, @obj.create_node(@root, @path.dup))
34
+ assert_equal(node, @obj.create_node(@path.dup))
35
35
 
36
36
  @root.tree.delete_node(node)
37
37
  path = @path.dup
38
38
  def path.changed?
39
39
  false
40
40
  end
41
- @obj.create_node(@root, path)
41
+ @obj.create_node(path)
42
42
  end
43
43
 
44
44
  def test_content
45
- node = @obj.create_node(@root, @path)
45
+ node = @obj.create_node(@path)
46
46
  assert_equal("content", @obj.content(node))
47
47
  end
48
48
 
49
49
  def test_render_node
50
- node = @obj.create_node(@root, @path)
50
+ node = @obj.create_node(@path)
51
51
  assert_equal("content", @obj.render_node(node))
52
- assert_raise(RuntimeError) { @obj.render_node(node, 'other') }
52
+ assert_raise(Webgen::RenderError) { @obj.render_node(node, 'other') }
53
53
  end
54
54
 
55
55
  def test_meta_info_changed
56
- node = @obj.create_node(@root, @path)
56
+ node = @obj.create_node(@path)
57
57
  @website.blackboard.dispatch_msg(:node_meta_info_changed?, node)
58
58
  assert(!node.meta_info_changed?)
59
59
 
@@ -63,7 +63,7 @@ class TestSourceHandlerPage < Test::Unit::TestCase
63
63
 
64
64
  # Remove path from which node is created, meta info should naturally change
65
65
  @root.tree.delete_node(node)
66
- node = @obj.create_node(@root, @path)
66
+ node = @obj.create_node(@path)
67
67
  @website.blackboard.del_service(:source_paths)
68
68
  @website.blackboard.add_service(:source_paths) { {} }
69
69
  @website.blackboard.dispatch_msg(:node_meta_info_changed?, node)
@@ -13,10 +13,21 @@ class TestSourceHandlerSitemap < Test::Unit::TestCase
13
13
  ---
14
14
  site_url: http://example.com
15
15
  default_change_freq: daily
16
+ EOF
17
+
18
+ SITEMAP_CONTENT_TEMPLATE = <<EOF
19
+ ---
20
+ site_url: http://example.com
21
+ default_change_freq: daily
22
+ --- name:template
23
+ Yeah <%= context.node['title'] %>
16
24
  EOF
17
25
 
18
26
  def setup
19
27
  super
28
+ shm = Webgen::SourceHandler::Main.new
29
+ @website.blackboard.del_listener(:node_meta_info_changed?, shm.method(:meta_info_changed?))
30
+ @website.config['passive_sources'] << ['/', "Webgen::Source::Resource", "webgen-passive-sources"]
20
31
  @nodes = create_sitemap_nodes
21
32
  @nodes.each {|k,v| v['modified_at'] = Time.now}
22
33
  @nodes[:file11_en]['priority'] = 0.9
@@ -26,19 +37,27 @@ EOF
26
37
  end
27
38
 
28
39
  def test_create_node
29
- sitemap = @obj.create_node(@nodes[:root], @path)
40
+ sitemap = @obj.create_node(@path)
30
41
 
31
42
  assert_not_nil(sitemap)
32
43
  assert_equal('/test.xml', sitemap.path)
33
- assert_equal('/test.xml', sitemap.absolute_lcn)
44
+ assert_equal('/test.xml', sitemap.alcn)
34
45
 
35
- assert_raise(RuntimeError) do
36
- @obj.create_node(@nodes[:root], path_with_meta_info('/test.sitemap', {}, @obj.class.name) {StringIO.new('')})
46
+ assert_raise(Webgen::NodeCreationError) do
47
+ @obj.create_node(path_with_meta_info('/test.sitemap', {}, @obj.class.name) {StringIO.new('')})
37
48
  end
38
49
  end
39
50
 
51
+ def test_create_node_with_own_template
52
+ @path = path_with_meta_info('/test.sitemap', {}, @obj.class.name) {StringIO.new(SITEMAP_CONTENT_TEMPLATE)}
53
+ sitemap = @obj.create_node(@path)
54
+ sitemap['title'] = 'test'
55
+ assert_not_nil(sitemap)
56
+ assert_equal("Yeah test\n", sitemap.content)
57
+ end
58
+
40
59
  def test_content
41
- sitemap = @obj.create_node(@nodes[:root], @path)
60
+ sitemap = @obj.create_node(@path)
42
61
  content = sitemap.content
43
62
  assert_match(/<changefreq>daily<\/changefreq>/, content)
44
63
  assert_match(/<changefreq>hourly<\/changefreq>/, content)
@@ -18,25 +18,27 @@ class TestSourceHandlerTemplate < Test::Unit::TestCase
18
18
  end
19
19
 
20
20
  def test_create_node
21
- root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
22
- node = @obj.create_node(root, path_with_meta_info('/default.template') {StringIO.new('')})
21
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/', {'lang' => 'de', :test => :value})
22
+ node = @obj.create_node(path_with_meta_info('/default.template') {StringIO.new('')})
23
23
 
24
24
  assert_not_nil(node)
25
25
  assert_not_nil(node.node_info[:page])
26
- assert_equal('test/default.template', node.path)
26
+ assert_equal('/default.template', node.path)
27
27
  end
28
28
 
29
29
  def test_templates_for_node
30
- root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
31
- default_template = Webgen::Node.new(root, 'default.template', 'default.template')
32
- default_de_template = Webgen::Node.new(root, 'default.de.template', 'default.template', {'lang' => 'de'})
33
- other_template = Webgen::Node.new(root, 'other.template', 'other.template')
34
- stopped_template = Webgen::Node.new(root, 'stopped.html', 'stopped.page', { 'template' => nil})
35
- invalid_template = Webgen::Node.new(root, 'invalid.template', 'invalid.template', {'template' => 'invalidity'})
36
- chained_template = Webgen::Node.new(root, 'chained.template', 'chained.template', {'template' => 'other.template'})
37
- german_file = Webgen::Node.new(root, 'german.html', 'german.page', {'lang' => 'de', 'template' => 'other.template'})
38
- dir = Webgen::Node.new(root, '/dir/', 'dir')
30
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/', {:test => :value})
31
+ default_template = Webgen::Node.new(root, '/default.template', 'default.template')
32
+ default_de_template = Webgen::Node.new(root, '/default.de.template', 'default.template', {'lang' => 'de'})
33
+ other_template = Webgen::Node.new(root, '/other.template', 'other.template')
34
+ stopped_template = Webgen::Node.new(root, '/stopped.html', 'stopped.page', { 'template' => nil})
35
+ invalid_template = Webgen::Node.new(root, '/invalid.template', 'invalid.template', {'template' => 'invalidity'})
36
+ chained_template = Webgen::Node.new(root, '/chained.template', 'chained.template', {'template' => 'other.template'})
37
+ german_file = Webgen::Node.new(root, '/german.html', 'german.page', {'lang' => 'de', 'template' => 'other.template'})
38
+ dir = Webgen::Node.new(root, '/dir/', 'dir/')
39
39
  dir_default_template = Webgen::Node.new(dir, '/dir/default.template', 'default.template')
40
+ dir_dir = Webgen::Node.new(dir, '/dir/dir/', 'dir/')
41
+ dir_dir_file = Webgen::Node.new(dir_dir, '/dir/dir/file.html', 'file.page', {'lang' => 'en'})
40
42
 
41
43
  assert_equal([], @obj.templates_for_node(default_template))
42
44
  assert_equal([], @obj.templates_for_node(stopped_template))
@@ -45,6 +47,7 @@ class TestSourceHandlerTemplate < Test::Unit::TestCase
45
47
  assert_equal([default_template, other_template], @obj.templates_for_node(chained_template))
46
48
  assert_equal([default_de_template, other_template], @obj.templates_for_node(german_file))
47
49
  assert_equal([default_template], @obj.templates_for_node(dir_default_template))
50
+ assert_equal([default_template, dir_default_template], @obj.templates_for_node(dir_dir_file))
48
51
 
49
52
  @website.cache.reset_volatile_cache
50
53
  root.tree.delete_node(default_template)
@@ -52,9 +55,9 @@ class TestSourceHandlerTemplate < Test::Unit::TestCase
52
55
  end
53
56
 
54
57
  def test_default_template
55
- root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
56
- dir = Webgen::Node.new(root, 'dir/', 'dir')
57
- template = Webgen::Node.new(root, 'default.template', 'default.template')
58
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/', {:test => :value})
59
+ dir = Webgen::Node.new(root, '/dir/', 'dir/')
60
+ template = Webgen::Node.new(root, '/default.template', 'default.template')
58
61
 
59
62
  assert_equal(template, @obj.default_template(root, nil))
60
63
  assert_equal(template, @obj.default_template(dir, nil))
@@ -25,16 +25,20 @@ class TestSourceHandlerVirtual < Test::Unit::TestCase
25
25
  - api.html:
26
26
  url: http://www.example.com
27
27
  title: Absolute
28
+
29
+ - other.html:
30
+ url: directory/path.en.html
31
+ title: Nothing
28
32
  EOF
29
33
 
30
34
  def setup
31
35
  super
32
36
  @obj = Webgen::SourceHandler::Virtual.new
33
- @root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
37
+ @root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
34
38
  shm = Webgen::SourceHandler::Main.new # for using service :create_nodes
35
39
  @time = Time.now
36
40
  @path = path_with_meta_info('/virtuals', {'modified_at' => @time}, @obj.class.name) {StringIO.new(CONTENT)}
37
- @nodes = @obj.create_node(@root, @path)
41
+ @nodes = @obj.create_node(@path)
38
42
  @website.blackboard.del_service(:source_paths)
39
43
  @website.blackboard.add_service(:source_paths) {{@path.path => @path}}
40
44
  end
@@ -44,7 +48,7 @@ EOF
44
48
 
45
49
  path_de = @root.tree['/path.de.html']
46
50
  path_en = @root.tree['/directory/path.en.html']
47
- dir = @root.tree['/dir']
51
+ dir = @root.tree['/dir/']
48
52
  assert_not_nil(path_de)
49
53
  assert_not_nil(dir)
50
54
  assert_not_nil(path_en)
@@ -74,7 +78,7 @@ EOF
74
78
 
75
79
  # Reinit node, meta info of path_de should not change, #create_node should only return one node
76
80
  path_de.flag(:reinit)
77
- assert(1, @obj.create_node(@root, @path).length)
81
+ assert(1, @obj.create_node(@path).length)
78
82
  @obj.send(:node_meta_info_changed?, path_de)
79
83
  assert(!path_de.flagged?(:dirty_meta_info))
80
84
 
@@ -86,7 +90,7 @@ EOF
86
90
  # Remove path from which virtual node is created, meta info should naturally change
87
91
  @root.tree.delete_node(path_de)
88
92
  @path.instance_eval { @io = Webgen::Path::SourceIO.new {StringIO.new("path.de.html:\n title: hallo")} }
89
- @obj.create_node(@root, @path)
93
+ @obj.create_node(@path)
90
94
  path_de = @root.tree['/path.de.html']
91
95
  @website.blackboard.del_service(:source_paths)
92
96
  @website.blackboard.add_service(:source_paths) { {} }
@@ -1,7 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
- # -*- encoding: utf-8 -*-
4
-
5
3
  require 'test/unit'
6
4
  require 'helper'
7
5
  require 'stringio'
@@ -35,43 +33,22 @@ class TestTagBase < Test::Unit::TestCase
35
33
  @website.logger = ::Logger.new(output)
36
34
  @website.logger.level = Logger::WARN
37
35
 
38
- output.string = ''
39
- assert_equal({}, @obj.create_tag_params("--\nhal:param1\ntest:[;", Webgen::Tree.new.dummy_root))
40
- output.rewind; assert_match(/Could not parse the tag params/, output.read)
41
-
42
- output.string = ''
43
- set_params(5)
44
- assert_equal('param1', @obj.param('testtagbase.testtag.param1'))
45
- output.rewind; assert_match(/Not all mandatory parameters/, output.read)
46
- output.rewind; assert_match(/Invalid parameter type/, output.read)
36
+ assert_raise(Webgen::RenderError) { @obj.create_tag_params("--\nhal:param1\ntest:[;", Webgen::Tree.new.dummy_root) }
47
37
 
48
- output.string = ''
49
- set_params(nil)
50
- assert_equal('param1', @obj.param('testtagbase.testtag.param1'))
51
- output.rewind; assert_match(/Not all mandatory parameters/, output.read)
52
-
53
- output.string = ''
54
- set_params({})
55
- assert_equal('param1', @obj.param('testtagbase.testtag.param1'))
56
- output.rewind; assert_match(/Not all mandatory parameters/, output.read)
57
-
58
- output.string = ''
59
- set_params('test_value')
60
- assert_equal('test_value', @obj.param('testtagbase.testtag.param3'))
61
- output.rewind; assert_match(/Not all mandatory parameters/, output.read)
38
+ assert_raise(Webgen::RenderError) { set_params(5) }
39
+ assert_raise(Webgen::RenderError) { set_params(nil) }
40
+ assert_raise(Webgen::RenderError) { set_params({}) }
41
+ assert_raise(Webgen::RenderError) { set_params('test_value') }
62
42
 
63
43
  output.string = ''
64
44
  set_params({'param2' => 'test2', 'testtagbase.testtag.param3' => 'test3', 'invalid' => 5})
65
45
  assert_equal('test2', @obj.param('testtagbase.testtag.param2'))
66
46
  assert_equal('test3', @obj.param('testtagbase.testtag.param3'))
67
- output.rewind; assert_no_match(/Not all mandatory parameters/, output.read)
68
47
  output.rewind; assert_match(/Invalid parameter 'invalid'/, output.read)
69
48
 
70
49
  @website.config.data.delete('testtagbase.testtag.param3')
71
50
  @website.config.meta_info.delete('testtagbase.testtag.param3')
72
- output.string = ''
73
- set_params('default_value')
74
- output.rewind; assert_match(/No default mandatory parameter specified for tag/, output.read)
51
+ assert_raise(Webgen::RenderError) { set_params('default_value') }
75
52
  end
76
53
 
77
54
  def test_call
@@ -13,20 +13,33 @@ class TestTagCoderay < Test::Unit::TestCase
13
13
  @obj = Webgen::Tag::Coderay.new
14
14
  end
15
15
 
16
- def call(context, body, lang, process)
16
+ def call(context, body, lang, process, css = 'style')
17
17
  @obj.set_params({'tag.coderay.lang' => lang,
18
- 'tag.coderay.process' => process})
18
+ 'tag.coderay.process' => process,
19
+ 'tag.coderay.css' => css})
19
20
  result = @obj.call('coderay', body, context)
20
21
  @obj.set_params({})
21
22
  result
22
23
  end
23
24
 
24
25
  def test_call
25
- root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/', {'title' => 'Hallo'})
26
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/', {'title' => 'Hallo'})
26
27
  context = Webgen::Context.new(:chain => [root])
27
28
 
28
29
  assert(call(context, 'TestData', 'html', false).include?('TestData'))
29
30
  assert(call(context, '{title:}', :ruby, true).include?('Hallo'))
31
+
32
+ assert(call(context, 'TestData', 'ruby', false, 'other').include?('class="co"'))
33
+ assert(!@website.tree['/stylesheets/coderay-default.css'])
34
+
35
+ @website.blackboard.del_listener(:node_meta_info_changed?, Webgen::SourceHandler::Main.new.method(:meta_info_changed?))
36
+ @website.config['passive_sources'] << ['/', "Webgen::Source::Resource", "webgen-passive-sources"]
37
+ assert(call(context, 'TestData', 'ruby', false, 'class').include?('class="co"'))
38
+ assert(@website.tree['/stylesheets/coderay-default.css'])
39
+ assert_equal('stylesheets/coderay-default.css', context.persistent[:cp_head][:css_file].first)
40
+
41
+ def @obj.require(lib); raise LoadError; end
42
+ assert_raise(Webgen::LoadError) { @obj.call('coderay', '', context) }
30
43
  end
31
44
 
32
45
  end
@@ -31,11 +31,11 @@ class TestTagExecuteCommand < Test::Unit::TestCase
31
31
  assert_equal([test_text, true], call(context, echo_cmd(test_text), true, false))
32
32
  assert_equal(['a&quot;b&quot;', true], call(context, echo_cmd(test_text), true, true))
33
33
  assert_equal(['a&quot;b&quot;', true], call(context, echo_cmd(test_text), true, true))
34
- assert_raise(RuntimeError) { call(context, 'invalid_echo_command', true, true) }
34
+ assert_raise(Webgen::RenderError) { call(context, 'invalid_echo_command', true, true) }
35
35
  end
36
36
 
37
37
  def echo_cmd(data)
38
- (Config::CONFIG['arch'].include?('mswin32') ? "echo #{data}" : "echo '#{data}'")
38
+ (Config::CONFIG['host_os'] =~ /mswin|mingw/ ? "echo #{data}" : "echo '#{data}'")
39
39
  end
40
40
 
41
41
  end
@@ -34,12 +34,12 @@ class TestTagLink < Test::Unit::TestCase
34
34
  # no path set
35
35
  node.unflag(:dirty)
36
36
  @obj.set_params('tag.link.path' => nil)
37
- assert_equal('', call(context))
38
- assert(node.flagged?(:dirty))
37
+ assert_equal('<span></span>', call(context))
38
+ assert(!node.flagged?(:dirty))
39
39
 
40
40
  # invalid paths
41
41
  @obj.set_params('tag.link.path' => ':/asdf=-)')
42
- assert_equal('', call(context))
42
+ assert_raise(Webgen::RenderError) { call(context) }
43
43
 
44
44
  # basic node resolving
45
45
  @obj.set_params('tag.link.path' => 'dir/file.html')
@@ -48,6 +48,7 @@ class TestTagLink < Test::Unit::TestCase
48
48
  assert_equal('<a href="dir/file.html" title="other">Dir/File</a>', call(context))
49
49
  @obj.set_params('tag.link.path' => 'dir/other.html')
50
50
  assert_equal('', call(context))
51
+ assert(node.flagged?(:dirty))
51
52
 
52
53
  # non-existing fragments
53
54
  @obj.set_params('tag.link.path' => 'file.html#hallo')
@@ -63,7 +64,7 @@ class TestTagLink < Test::Unit::TestCase
63
64
  node.node_info[:used_meta_info_nodes] = Set.new
64
65
  @obj.set_params('tag.link.path' => 'dir/file.html')
65
66
  call(context)
66
- assert(Set.new([file.absolute_lcn]), node.node_info[:used_meta_info_nodes])
67
+ assert(Set.new([file.alcn]), node.node_info[:used_meta_info_nodes])
67
68
  end
68
69
 
69
70
  end