webgen 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. data/ChangeLog +3662 -0
  2. data/Rakefile +8 -1
  3. data/VERSION +1 -1
  4. data/data/webgen/website_styles/1024px/src/default.template +1 -1
  5. data/data/webgen/website_styles/andreas00/src/default.template +1 -1
  6. data/data/webgen/website_styles/andreas01/src/default.template +2 -1
  7. data/data/webgen/website_styles/andreas03/src/default.template +1 -1
  8. data/data/webgen/website_styles/andreas04/src/default.template +1 -1
  9. data/data/webgen/website_styles/andreas05/src/default.template +1 -1
  10. data/data/webgen/website_styles/andreas06/src/default.template +1 -1
  11. data/data/webgen/website_styles/andreas07/src/default.template +1 -1
  12. data/data/webgen/website_styles/andreas08/src/default.template +1 -1
  13. data/data/webgen/website_styles/andreas09/src/default.template +1 -1
  14. data/data/webgen/website_styles/simple/src/default.template +1 -1
  15. data/doc/contentprocessor/fragments.page +25 -0
  16. data/doc/extensions.page +1 -1
  17. data/doc/manual.page +33 -15
  18. data/doc/reference_configuration.page +339 -62
  19. data/doc/reference_metainfo.page +11 -2
  20. data/doc/sourcehandler/feed.page +19 -4
  21. data/doc/sourcehandler/page.page +0 -16
  22. data/doc/tag/langbar.page +8 -1
  23. data/doc/tag/link.page +44 -0
  24. data/doc/tag/tikz.page +158 -0
  25. data/lib/webgen/cli.rb +4 -4
  26. data/lib/webgen/common/sitemap.rb +2 -3
  27. data/lib/webgen/configuration.rb +3 -1
  28. data/lib/webgen/contentprocessor.rb +1 -0
  29. data/lib/webgen/contentprocessor/blocks.rb +0 -2
  30. data/lib/webgen/contentprocessor/context.rb +0 -3
  31. data/lib/webgen/contentprocessor/erubis.rb +0 -2
  32. data/lib/webgen/contentprocessor/fragments.rb +23 -0
  33. data/lib/webgen/default_config.rb +15 -2
  34. data/lib/webgen/languages.rb +9 -0
  35. data/lib/webgen/logger.rb +18 -1
  36. data/lib/webgen/node.rb +50 -25
  37. data/lib/webgen/page.rb +26 -16
  38. data/lib/webgen/path.rb +20 -10
  39. data/lib/webgen/sourcehandler.rb +85 -69
  40. data/lib/webgen/sourcehandler/base.rb +38 -15
  41. data/lib/webgen/sourcehandler/copy.rb +2 -2
  42. data/lib/webgen/sourcehandler/directory.rb +16 -13
  43. data/lib/webgen/sourcehandler/feed.rb +6 -12
  44. data/lib/webgen/sourcehandler/fragment.rb +6 -11
  45. data/lib/webgen/sourcehandler/memory.rb +41 -0
  46. data/lib/webgen/sourcehandler/metainfo.rb +21 -21
  47. data/lib/webgen/sourcehandler/page.rb +7 -27
  48. data/lib/webgen/sourcehandler/sitemap.rb +0 -2
  49. data/lib/webgen/sourcehandler/template.rb +0 -4
  50. data/lib/webgen/sourcehandler/virtual.rb +18 -18
  51. data/lib/webgen/tag.rb +2 -0
  52. data/lib/webgen/tag/breadcrumbtrail.rb +1 -4
  53. data/lib/webgen/tag/coderay.rb +0 -3
  54. data/lib/webgen/tag/date.rb +0 -2
  55. data/lib/webgen/tag/executecommand.rb +1 -2
  56. data/lib/webgen/tag/includefile.rb +1 -3
  57. data/lib/webgen/tag/langbar.rb +2 -5
  58. data/lib/webgen/tag/link.rb +23 -0
  59. data/lib/webgen/tag/menu.rb +1 -4
  60. data/lib/webgen/tag/metainfo.rb +0 -2
  61. data/lib/webgen/tag/relocatable.rb +2 -3
  62. data/lib/webgen/tag/sitemap.rb +0 -3
  63. data/lib/webgen/tag/tikz.rb +117 -0
  64. data/lib/webgen/tree.rb +11 -6
  65. data/lib/webgen/version.rb +1 -1
  66. data/lib/webgen/website.rb +2 -1
  67. data/test/test_cli.rb +14 -0
  68. data/test/test_common_sitemap.rb +4 -4
  69. data/test/test_contentprocessor_context.rb +1 -1
  70. data/test/test_contentprocessor_fragments.rb +40 -0
  71. data/test/test_contentprocessor_redcloth.rb +1 -0
  72. data/test/test_contentprocessor_tags.rb +1 -1
  73. data/test/test_languages.rb +12 -0
  74. data/test/test_logger.rb +19 -0
  75. data/test/test_node.rb +35 -15
  76. data/test/test_output_filesystem.rb +1 -1
  77. data/test/test_page.rb +15 -6
  78. data/test/test_path.rb +37 -5
  79. data/test/test_source_filesystem.rb +1 -1
  80. data/test/test_source_stacked.rb +1 -1
  81. data/test/test_sourcehandler_base.rb +30 -1
  82. data/test/test_sourcehandler_copy.rb +1 -1
  83. data/test/test_sourcehandler_directory.rb +16 -1
  84. data/test/test_sourcehandler_feed.rb +9 -8
  85. data/test/test_sourcehandler_fragment.rb +1 -1
  86. data/test/test_sourcehandler_memory.rb +42 -0
  87. data/test/test_sourcehandler_metainfo.rb +23 -21
  88. data/test/test_sourcehandler_page.rb +5 -12
  89. data/test/test_sourcehandler_template.rb +1 -1
  90. data/test/test_sourcehandler_virtual.rb +2 -2
  91. data/test/test_tag_base.rb +0 -1
  92. data/test/test_tag_breadcrumbtrail.rb +4 -4
  93. data/test/test_tag_includefile.rb +3 -3
  94. data/test/test_tag_langbar.rb +12 -7
  95. data/test/test_tag_link.rb +61 -0
  96. data/test/test_tag_menu.rb +7 -7
  97. data/test/test_tag_metainfo.rb +1 -1
  98. data/test/test_tag_relocatable.rb +1 -1
  99. data/test/test_tag_tikz.rb +66 -0
  100. data/test/test_tree.rb +8 -9
  101. metadata +15 -2
@@ -0,0 +1,40 @@
1
+ require 'test/unit'
2
+ require 'test/helper'
3
+ require 'webgen/page'
4
+ require 'webgen/tree'
5
+ require 'webgen/contentprocessor'
6
+
7
+ class TestContentProcessorFragments < Test::Unit::TestCase
8
+
9
+ include Test::WebsiteHelper
10
+
11
+ def test_process
12
+ Webgen::SourceHandler::Main.new
13
+ @website.blackboard.del_service(:source_paths)
14
+ @website.blackboard.add_service(:source_paths) { Hash.new(path_with_meta_info('/')) }
15
+
16
+ obj = Webgen::ContentProcessor::Fragments.new
17
+ root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
18
+ root.node_info[:src] = '/'
19
+ processors = { 'fragments' => obj }
20
+
21
+ context = Webgen::ContentProcessor::Context.new(:chain => [root], :processors => processors)
22
+ context.content = '<h1 id="test">Test</h1><h1>Test2</h1>'
23
+ obj.call(context)
24
+ assert(root.tree['/#test'])
25
+ assert_equal(3, root.tree.node_access[:alcn].length)
26
+ root.tree.delete_node('/#test')
27
+
28
+ context[:block] = Webgen::Block.new('content', '', {})
29
+ obj.call(context)
30
+ assert(root.tree['/#test'])
31
+ assert_equal(3, root.tree.node_access[:alcn].length)
32
+ root.tree.delete_node('/#test')
33
+
34
+ context[:block] = Webgen::Block.new('other', '', {})
35
+ obj.call(context)
36
+ assert(!root.tree['/#test'])
37
+ assert_equal(2, root.tree.node_access[:alcn].length)
38
+ end
39
+
40
+ end
@@ -1,4 +1,5 @@
1
1
  require 'test/unit'
2
+ require 'webgen/websiteaccess'
2
3
  require 'webgen/contentprocessor'
3
4
 
4
5
  class TestContentProcessorRedCloth < Test::Unit::TestCase
@@ -1,7 +1,7 @@
1
1
  require 'test/unit'
2
2
  require 'helper'
3
3
  require 'webgen/tree'
4
- require 'webgen/contentprocessor/tags'
4
+ require 'webgen/contentprocessor'
5
5
 
6
6
  class TestContentProcessorTags < Test::Unit::TestCase
7
7
 
@@ -50,4 +50,16 @@ class TestLanguages < Test::Unit::TestCase
50
50
  assert_equal(-1, ace <=> eng)
51
51
  end
52
52
 
53
+ def test_hashing
54
+ de = Webgen::LanguageManager.language_for_code('ger')
55
+ en = Webgen::LanguageManager.language_for_code('en')
56
+ h = {'de' => de, en => en}
57
+ assert_equal(de, h[de])
58
+ assert_equal(de, h['de'])
59
+ assert_equal(en, h[en])
60
+ assert_not_equal(en, h['en']) # bc 'en'.eql?(en) is false
61
+ assert_equal(Webgen::LanguageManager.language_for_code('en'),
62
+ Webgen::LanguageManager.language_for_code(en))
63
+ end
64
+
53
65
  end
@@ -70,4 +70,23 @@ class TestLogger < Test::Unit::TestCase
70
70
  assert_equal("ERROR -- hallo\n", l.log_output)
71
71
  end
72
72
 
73
+ def test_run_marks
74
+ l = Webgen::Logger.new(io = StringIO.new, true)
75
+ l.mark_new_cycle
76
+ l.error { 'hallo' }
77
+ assert_equal("", l.log_output)
78
+
79
+ l = Webgen::Logger.new(io = StringIO.new, false)
80
+ l.error { 'hallo' }
81
+ l.mark_new_cycle
82
+ l.error { 'other' }
83
+ l.mark_new_cycle
84
+ assert_equal("ERROR -- hallo\n INFO -- Log messages for run 1 are following\n" +
85
+ "ERROR -- other\n INFO -- Log messages for run 2 are following\n", l.log_output)
86
+
87
+ l = Webgen::Logger.new(io = StringIO.new, false)
88
+ l.mark_new_cycle
89
+ assert_equal("", l.log_output)
90
+ end
91
+
73
92
  end
@@ -31,7 +31,7 @@ class TestNode < Test::Unit::TestCase
31
31
  }
32
32
  end
33
33
 
34
- def test_initialize
34
+ def test_initialize_and_reinit
35
35
  check_proc = proc do |node, parent, path, cn, lcn, alcn, lang, mi|
36
36
  assert_equal(parent, node.parent)
37
37
  assert_equal(path, node.path)
@@ -39,8 +39,9 @@ class TestNode < Test::Unit::TestCase
39
39
  assert_equal(lcn, node.lcn)
40
40
  assert_equal(alcn, node.absolute_lcn)
41
41
  assert_equal(lang, node.lang)
42
- assert(node.dirty)
43
- assert(node.created)
42
+ assert_kind_of(Webgen::Language, node.lang) if node.lang
43
+ assert(node.flagged(:dirty))
44
+ assert(node.flagged(:created))
44
45
  assert_equal(mi, node.meta_info)
45
46
  assert_equal({:used_nodes => Set.new, :used_meta_info_nodes => Set.new}, node.node_info)
46
47
  mi.each {|k,v| assert_equal(v, node[k])}
@@ -55,9 +56,13 @@ class TestNode < Test::Unit::TestCase
55
56
 
56
57
  ['http://webgen.rubyforge.org', 'c:\\test'].each_with_index do |abspath, index|
57
58
  cn = 'test' + index.to_s + '.html'
58
- child = Webgen::Node.new(node, abspath, cn)
59
- check_proc.call(child, node, abspath, cn, cn, '/test/' + cn, nil, {})
59
+ c = Webgen::Node.new(node, abspath, cn)
60
+ check_proc.call(c, node, abspath, cn, cn, '/test/' + cn, nil, {})
60
61
  end
62
+
63
+ child.reinit('somename.en.html', {'lang' => 'de', 'title' => 'test'})
64
+ check_proc.call(child, node, 'somename.en.html', 'somename.page', 'somename.de.page',
65
+ '/test/somename.de.page', 'de', {'title' => 'test'})
61
66
  end
62
67
 
63
68
  def test_type_checkers
@@ -77,6 +82,22 @@ class TestNode < Test::Unit::TestCase
77
82
  assert_equal(:value, node[:other])
78
83
  end
79
84
 
85
+ def test_flags
86
+ node = Webgen::Node.new(@tree.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
87
+ assert(node.flagged(:created))
88
+ assert(node.flagged(:dirty))
89
+ node.unflag(:dirty)
90
+ assert(!node.flagged(:dirty))
91
+ node.flag(:a, :b, :c)
92
+ assert(node.flagged(:a))
93
+ assert(node.flagged(:b))
94
+ assert(node.flagged(:c))
95
+ node.unflag(:a, :b, :c)
96
+ assert(!node.flagged(:a))
97
+ assert(!node.flagged(:b))
98
+ assert(!node.flagged(:c))
99
+ end
100
+
80
101
  def test_in_lang
81
102
  nodes = create_default_nodes
82
103
 
@@ -143,16 +164,16 @@ class TestNode < Test::Unit::TestCase
143
164
 
144
165
  def test_changed
145
166
  node = Webgen::Node.new(@tree.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
146
- node.dirty = node.created = false
167
+ node.unflag(:dirty, :created)
147
168
 
148
169
  calls = 0
149
- @website.blackboard.add_listener(:node_changed?) {|n| assert(node, n); node.dirty = true; calls += 1}
170
+ @website.blackboard.add_listener(:node_changed?) {|n| assert(node, n); node.flag(:dirty); calls += 1}
150
171
  node.changed?
151
172
  assert_equal(1, calls)
152
173
  node.changed?
153
174
  assert_equal(1, calls)
154
175
 
155
- node.dirty = false
176
+ node.unflag(:dirty)
156
177
  node.node_info[:used_nodes] << node.absolute_lcn
157
178
  node.node_info[:used_nodes] << 'unknown alcn'
158
179
  node.node_info[:used_nodes] << @tree.dummy_root.absolute_lcn
@@ -161,8 +182,8 @@ class TestNode < Test::Unit::TestCase
161
182
 
162
183
  # Test circular depdendence
163
184
  other_node = Webgen::Node.new(@tree.dummy_root, '/other', 'test.l', {'lang' => 'de', :test => :value})
164
- other_node.dirty = node.created = false
165
- node.dirty = false
185
+ other_node.flag(:dirty, :created)
186
+ node.flag(:dirty)
166
187
  other_node.node_info[:used_nodes] = [node.absolute_lcn]
167
188
  node.node_info[:used_nodes] = [other_node.absolute_lcn]
168
189
  node.changed?
@@ -170,21 +191,20 @@ class TestNode < Test::Unit::TestCase
170
191
 
171
192
  def test_meta_info_changed
172
193
  node = Webgen::Node.new(@tree.dummy_root, '/', '/')
173
- node.dirty = node.created = false
194
+ node.unflag(:dirty, :created)
174
195
 
175
196
  calls = 0
176
- @website.blackboard.add_listener(:node_meta_info_changed?) {|n| assert(node, n); node.dirty_meta_info = true; calls += 1}
197
+ @website.blackboard.add_listener(:node_meta_info_changed?) {|n| assert(node, n); node.flag(:dirty_meta_info); calls += 1}
177
198
  assert(node.meta_info_changed?)
178
199
  assert_equal(1, calls)
179
200
  assert(node.meta_info_changed?)
180
201
  assert_equal(1, calls)
181
202
 
182
- node.dirty_meta_info = false
203
+ node.unflag(:dirty_meta_info)
183
204
  node.node_info[:used_meta_info_nodes] << node.absolute_lcn
184
205
  node.node_info[:used_meta_info_nodes] << 'unknown alcn'
185
- node.node_info[:used_meta_info_nodes] << @tree.dummy_root.absolute_lcn
186
206
  assert(node.meta_info_changed?)
187
- assert_equal(2, calls)
207
+ assert_equal(1, calls)
188
208
  end
189
209
 
190
210
  def test_method_missing
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
  require 'helper'
3
- require 'webgen/output/filesystem'
3
+ require 'webgen/output'
4
4
  require 'tmpdir'
5
5
  require 'fileutils'
6
6
 
@@ -97,14 +97,14 @@ class TestPage < Test::Unit::TestCase
97
97
  --- name:block
98
98
  content doing -
99
99
  with?: with some things
100
- --- other:options test1:true test2:false test3:542
100
+ --- other:options test1:true test2:false test3:542 pipeline:
101
101
  meta_info: {}
102
102
  blocks:
103
103
  - name: block
104
104
  content: "content doing -\\nwith?: with some things"
105
105
  - name: block2
106
106
  content: ''
107
- options: {other: options, test1: true, test2: false, test3: 542}
107
+ options: {other: options, test1: true, test2: false, test3: 542, pipeline: ~}
108
108
 
109
109
  # block with seemingly block start line it
110
110
  - in: |
@@ -118,7 +118,7 @@ class TestPage < Test::Unit::TestCase
118
118
  content: "content\\n----------- some block start???\\nthings"
119
119
  EOF
120
120
 
121
- INVALID=<<EOF
121
+ INVALID_MI=<<EOF
122
122
  # invalid meta info: none specified
123
123
  - "---\\n---"
124
124
 
@@ -136,7 +136,9 @@ EOF
136
136
  : * [ }
137
137
  ---
138
138
  asdf kadsfakl
139
+ EOF
139
140
 
141
+ INVALID_BLOCKS=<<EOF
140
142
  # two blocks with same name
141
143
  - |
142
144
  aasdf
@@ -155,16 +157,23 @@ EOF
155
157
  EOF
156
158
 
157
159
  def test_invalid_pagefiles
158
- testdata = YAML::load(INVALID)
160
+ testdata = YAML::load(INVALID_MI)
161
+ testdata.each_with_index do |data, index|
162
+ assert_raise(Webgen::WebgenPageFormatError, "test mi item #{index}") { Webgen::Page.from_data(data) }
163
+ assert_raise(Webgen::WebgenPageFormatError, "test mi item #{index}") { Webgen::Page.meta_info_from_data(data) }
164
+ end
165
+ testdata = YAML::load(INVALID_BLOCKS)
159
166
  testdata.each_with_index do |data, index|
160
- assert_raise(Webgen::WebgenPageFormatError, "test item #{index}") { Webgen::Page.from_data(data) }
167
+ assert_raise(Webgen::WebgenPageFormatError, "test blocks item #{index}") { Webgen::Page.from_data(data) }
161
168
  end
162
169
  end
163
170
 
164
171
  def test_valid_pagefiles
165
172
  YAML::load(VALID).each_with_index do |data, oindex|
173
+ mi = Webgen::Page.meta_info_from_data(data['in'])
174
+ assert_equal(data['meta_info'], mi, "test item #{oindex} - meta info directly")
166
175
  d = Webgen::Page.from_data(data['in'])
167
- assert_equal(data['meta_info'], d.meta_info, "test item #{oindex} - meta info")
176
+ assert_equal(data['meta_info'], d.meta_info, "test item #{oindex} - meta info all")
168
177
  assert_equal(data['blocks'].length*2, d.blocks.length)
169
178
  data['blocks'].each_with_index do |b, index|
170
179
  index += 1
@@ -7,6 +7,7 @@ class TestPath < Test::Unit::TestCase
7
7
  def test_initialize
8
8
  check_proc = proc do |o, path, dir, bn, lang, ext, cn, oi, title|
9
9
  assert_equal(path, o.path)
10
+ assert_equal(path, o.source_path)
10
11
  assert_equal(dir, o.directory)
11
12
  assert_equal(bn, o.cnbase)
12
13
  assert_equal(lang, o.meta_info['lang'])
@@ -38,17 +39,23 @@ class TestPath < Test::Unit::TestCase
38
39
  '/', '/', '/', nil, '', '/', nil, '/')
39
40
  check_proc.call(Webgen::Path.new('/dir/'),
40
41
  '/dir/', '/', 'dir', nil, '', 'dir', nil, 'Dir')
42
+
43
+ path = Webgen::Path.new('/test/', '/other.path')
44
+ assert_equal('/other.path', path.source_path)
45
+ assert_equal('/test/', path.path)
41
46
  end
42
47
 
43
48
  def test_mount_at
44
49
  p = Webgen::Path.new('test.de.page')
45
50
  p = p.mount_at('/somedir')
46
51
  assert_equal('/somedir/test.de.page', p.path)
52
+ assert_equal('/somedir/test.de.page', p.source_path)
47
53
  assert_equal('/somedir/', p.directory)
48
54
 
49
55
  p = Webgen::Path.new('/')
50
56
  p = p.mount_at('/somedir')
51
57
  assert_equal('/somedir/', p.path)
58
+ assert_equal('/somedir/', p.source_path)
52
59
  assert_equal('/', p.directory)
53
60
  assert_equal('somedir', p.cn)
54
61
  assert_equal('Somedir', p.meta_info['title'])
@@ -56,6 +63,7 @@ class TestPath < Test::Unit::TestCase
56
63
  p = Webgen::Path.new('/source/test.rb')
57
64
  p = p.mount_at('/', '/source/')
58
65
  assert_equal('/test.rb', p.path)
66
+ assert_equal('/test.rb', p.source_path)
59
67
  assert_equal('/', p.directory)
60
68
  assert_equal('test.rb', p.cn)
61
69
  assert_equal('Test', p.meta_info['title'])
@@ -63,9 +71,18 @@ class TestPath < Test::Unit::TestCase
63
71
  p = Webgen::Path.new('/source/')
64
72
  p = p.mount_at('/', '/source')
65
73
  assert_equal('/', p.path)
74
+ assert_equal('/', p.source_path)
66
75
  assert_equal('/', p.directory)
67
76
  assert_equal('/', p.cn)
68
77
  assert_equal('/', p.meta_info['title'])
78
+
79
+ p = Webgen::Path.new('/test.rb', '/other.rb')
80
+ p = p.mount_at('/source/')
81
+ assert_equal('/source/test.rb', p.path)
82
+ assert_equal('/other.rb', p.source_path)
83
+ assert_equal('/source/', p.directory)
84
+ assert_equal('test.rb', p.cn)
85
+ assert_equal('Test', p.meta_info['title'])
69
86
  end
70
87
 
71
88
  def test_dup
@@ -110,11 +127,26 @@ class TestPath < Test::Unit::TestCase
110
127
  end
111
128
 
112
129
  def test_matching
113
- path = Webgen::Path.new('/dir/to/file.de.page')
114
- assert(path =~ '**/*')
115
- assert(path =~ '**/file.de.PAGE')
116
- assert(path =~ '/dir/*/file.*.page')
117
- assert(path !~ '**/*.test')
130
+ path = '/dir/to/file.de.page'
131
+ assert(Webgen::Path.match(path, '**/*'))
132
+ assert(Webgen::Path.match(path, '**/file.de.PAGE'))
133
+ assert(Webgen::Path.match(path, '/dir/*/file.*.page'))
134
+ assert(!Webgen::Path.match(path, '**/*.test'))
135
+
136
+ path = '/dir/'
137
+ assert(Webgen::Path.match(path, '/dir/'))
138
+ assert(Webgen::Path.match(path, '/dir'))
139
+
140
+ path = '/dir'
141
+ assert(Webgen::Path.match(path, '/dir/'))
142
+ assert(Webgen::Path.match(path, '/dir'))
143
+
144
+ path = '/'
145
+ assert(Webgen::Path.match(path, '/'))
146
+ assert(!Webgen::Path.match(path, ''))
147
+
148
+ path = ''
149
+ assert(!Webgen::Path.match(path, '/'))
118
150
  end
119
151
 
120
152
  def test_introspection
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
  require 'helper'
3
- require 'webgen/source/filesystem'
3
+ require 'webgen/source'
4
4
 
5
5
  class TestSourceFileSystemPath < Test::Unit::TestCase
6
6
 
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
  require 'helper'
3
- require 'webgen/source/stacked'
3
+ require 'webgen/source'
4
4
 
5
5
  class TestSourceFileSystemStacked < Test::Unit::TestCase
6
6
 
@@ -3,11 +3,13 @@ require 'helper'
3
3
  require 'webgen/tree'
4
4
  require 'webgen/node'
5
5
  require 'webgen/path'
6
- require 'webgen/sourcehandler/base'
6
+ require 'webgen/sourcehandler'
7
7
  require 'time'
8
8
 
9
9
  class TestSourceHandlerBase < Test::Unit::TestCase
10
10
 
11
+ class TestSH; include Webgen::SourceHandler::Base; end
12
+
11
13
  include Test::WebsiteHelper
12
14
 
13
15
  def setup
@@ -16,6 +18,33 @@ class TestSourceHandlerBase < Test::Unit::TestCase
16
18
  @obj.extend(Webgen::SourceHandler::Base)
17
19
  end
18
20
 
21
+ def test_create_node
22
+ tree = Webgen::Tree.new
23
+ path = path_with_meta_info('/path.html')
24
+ count = 0
25
+
26
+ path.instance_eval { @source_path = '/path'}
27
+ node = @obj.create_node(tree.dummy_root, path) {|n| count +=1 }
28
+ assert_equal('/path', node.node_info[:src])
29
+ assert_equal('Object', node.node_info[:processor])
30
+ assert_kind_of(Time, node['modified_at'])
31
+ assert_equal(1, count)
32
+
33
+ other_node = @obj.create_node(tree.dummy_root, path) {|n| count +=1 }
34
+ assert_equal(node, other_node)
35
+ assert_equal(1, count)
36
+
37
+ node.flag(:reinit)
38
+ other_node = @obj.create_node(tree.dummy_root, path) {|n| count +=1 }
39
+ assert_equal(node, other_node)
40
+ assert_equal(2, count)
41
+
42
+ path.instance_eval { @source_path = '/other' }
43
+ other_node = @obj.create_node(tree.dummy_root, path) {|n| count +=1 }
44
+ assert_equal(node, other_node)
45
+ assert_equal(2, count)
46
+ end
47
+
19
48
  def test_node_exists
20
49
  @tree = Webgen::Tree.new
21
50
  node = Webgen::Node.new(@tree.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
@@ -1,6 +1,6 @@
1
1
  require 'test/unit'
2
2
  require 'helper'
3
- require 'webgen/sourcehandler/copy'
3
+ require 'webgen/sourcehandler'
4
4
  require 'stringio'
5
5
 
6
6
  class TestSourceHandlerCopy < Test::Unit::TestCase