webgen 0.5.8 → 0.5.9

Sign up to get free protection for your applications and to get access to all the features.
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