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
@@ -62,7 +62,7 @@ class TestSourceFileSystem < Test::Unit::TestCase
62
62
  end
63
63
 
64
64
  def test_handling_of_invalid_link
65
- return if Config::CONFIG['arch'].include?('mswin32')
65
+ return if Config::CONFIG['host_os'] =~ /mswin|mingw/
66
66
  dir = File.join(Dir.tmpdir, 'webgen-link-test')
67
67
  FileUtils.mkdir_p(dir)
68
68
  FileUtils.touch(File.join(dir, 'test'))
@@ -4,7 +4,7 @@ require 'test/unit'
4
4
  require 'helper'
5
5
  require 'webgen/source'
6
6
 
7
- class TestSourceFileSystemStacked < Test::Unit::TestCase
7
+ class TestSourceStacked < Test::Unit::TestCase
8
8
 
9
9
  class TestSource
10
10
  def initialize(paths); @paths = paths; end
@@ -14,23 +14,36 @@ class TestSourceFileSystemStacked < Test::Unit::TestCase
14
14
  def test_initialize
15
15
  source = Webgen::Source::Stacked.new
16
16
  assert_equal([], source.stack)
17
- source = Webgen::Source::Stacked.new('/dir' => 6)
17
+ assert_equal(false, source.cache_paths)
18
+ source = Webgen::Source::Stacked.new({'/dir' => 6}, true)
18
19
  assert_equal([['/dir', 6]], source.stack)
20
+ assert_equal(true, source.cache_paths)
19
21
  end
20
22
 
21
23
  def test_add
22
24
  source = Webgen::Source::Stacked.new
23
- assert_raise(RuntimeError) { source.add(['dir', 6])}
24
- source.add('/temp' => :source)
25
- assert_equal([['/temp', :source]], source.stack)
25
+ assert_raise(RuntimeError) { source.add(['dir', 6]) }
26
+
27
+ test_source = TestSource.new([Webgen::Path.new('/temp')])
28
+ source.add('/temp/' => test_source)
29
+ assert_equal([['/temp/', test_source]], source.stack)
30
+
31
+ source.cache_paths = true
32
+ source.add('/dir/' => test_source)
33
+ source.paths
34
+ assert_raise(RuntimeError) { source.add('/dir1/' => test_source) }
26
35
  end
27
36
 
28
37
  def test_paths
29
38
  source = Webgen::Source::Stacked.new
30
39
  source.add('/' => TestSource.new([Webgen::Path.new('/hallo/dir'), Webgen::Path.new('/other')]))
31
- source.add('/hallo' => TestSource.new([Webgen::Path.new('/dir'), Webgen::Path.new('/other')]))
40
+ source.add('/hallo/' => TestSource.new([Webgen::Path.new('/dir'), Webgen::Path.new('/other')]))
32
41
  assert_equal(Set.new([Webgen::Path.new('/hallo/dir'), Webgen::Path.new('/other'),
33
42
  Webgen::Path.new('/hallo/other')]), source.paths)
43
+
44
+ source.cache_paths = true
45
+ set = source.paths
46
+ assert_equal(set.object_id, source.paths.object_id)
34
47
  end
35
48
 
36
49
  end
@@ -21,89 +21,95 @@ class TestSourceHandlerBase < Test::Unit::TestCase
21
21
  end
22
22
 
23
23
  def test_create_node
24
- tree = Webgen::Tree.new
25
24
  path = path_with_meta_info('/path.html')
26
25
  count = 0
27
26
 
28
27
  path.instance_eval { @source_path = '/path'}
29
- node = @obj.create_node(tree.dummy_root, path) {|n| count +=1 }
28
+ node = @obj.create_node(path, :parent => @website.tree.dummy_root) {|n| count +=1 }
30
29
  assert_equal('/path', node.node_info[:src])
31
30
  assert_equal('Object', node.node_info[:processor])
32
31
  assert_kind_of(Time, node['modified_at'])
33
32
  assert_equal(1, count)
34
33
 
35
- other_node = @obj.create_node(tree.dummy_root, path) {|n| count +=1 }
34
+ other_node = @obj.create_node(path, :parent => @website.tree.dummy_root) {|n| count +=1 }
36
35
  assert_equal(node, other_node)
37
36
  assert_equal(1, count)
38
37
 
39
38
  node.flag(:reinit)
40
- other_node = @obj.create_node(tree.dummy_root, path) {|n| count +=1 }
39
+ other_node = @obj.create_node(path, :parent => @website.tree.dummy_root) {|n| count +=1 }
41
40
  assert_equal(node, other_node)
42
41
  assert_equal(2, count)
43
42
 
44
43
  path.instance_eval { @source_path = '/other' }
45
- other_node = @obj.create_node(tree.dummy_root, path) {|n| count +=1 }
44
+ other_node = @obj.create_node(path, :parent => @website.tree.dummy_root) {|n| count +=1 }
46
45
  assert_equal(node, other_node)
47
46
  assert_equal(2, count)
48
47
  end
49
48
 
50
49
  def test_node_exists
51
- @tree = Webgen::Tree.new
52
- node = Webgen::Node.new(@tree.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
53
- child_de = Webgen::Node.new(node, 'test/somename.html', 'somename.page', {'lang' => 'de'})
54
- frag_de = Webgen::Node.new(child_de, '#data1', '#othertest')
55
-
56
- assert_equal(child_de, @obj.node_exists?(node, path_with_meta_info('somename.de.page')))
57
- assert_equal(child_de, @obj.node_exists?(node, path_with_meta_info('other.page'), @obj.output_path(node, path_with_meta_info('somename.html'))))
58
- assert_equal(false, @obj.node_exists?(node, path_with_meta_info('somename.en.page', {'no_output' => true}),
59
- @obj.output_path(node, path_with_meta_info('somename.html'))))
60
- assert_equal(frag_de, @obj.node_exists?(child_de, path_with_meta_info('#othertest')))
61
- assert_equal(nil, @obj.node_exists?(node, path_with_meta_info('unknown')))
50
+ node = Webgen::Node.new(@website.tree.dummy_root, '/', '/', {'lang' => 'de', :test => :value})
51
+ child_de = Webgen::Node.new(node, '/somename.html', 'somename.html', {'lang' => 'de'})
52
+ frag_de = Webgen::Node.new(child_de, '/somename.html#data1', '#othertest')
53
+
54
+ assert_equal(child_de, @obj.node_exists?(path_with_meta_info('/somename.de.html')))
55
+ assert_equal(child_de, @obj.node_exists?(path_with_meta_info('/other.page'), @obj.output_path(node, path_with_meta_info('/somename.html'))))
56
+ assert_equal(false, @obj.node_exists?(path_with_meta_info('/somename.en.html', {'no_output' => true}),
57
+ @obj.output_path(node, path_with_meta_info('/somename.html'))))
58
+ assert_equal(frag_de, @obj.node_exists?(path_with_meta_info('/somename.de.html#othertest')))
59
+ assert_equal(nil, @obj.node_exists?(path_with_meta_info('/unknown')))
62
60
  end
63
61
 
64
62
  def test_output_path
65
- node = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
66
- assert_raise(RuntimeError) { @obj.output_path(node, path_with_meta_info('test.page', 'output_path' => 'non'))}
63
+ node = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
64
+ assert_raise(Webgen::NodeCreationError) { @obj.output_path(node, path_with_meta_info('/test.page', 'output_path' => 'non'))}
67
65
  end
68
66
 
69
67
  def test_standard_output_path
70
- @tree = Webgen::Tree.new
71
- node = Webgen::Node.new(@tree.dummy_root, 'test/', 'test', {'lang' => 'de', :test => :value})
72
-
73
- path = path_with_meta_info('path.html')
74
- assert_equal('test/path.html', @obj.output_path(node, path))
75
- path = path_with_meta_info('path.en.html')
76
- assert_equal('test/path.html', @obj.output_path(node, path))
77
- path = path_with_meta_info('path.eo.html')
78
- assert_equal('test/path.eo.html', @obj.output_path(node, path))
79
- path = path_with_meta_info('dir/')
80
- assert_equal('test/dir/', @obj.output_path(node, path))
81
-
82
- other = Webgen::Node.new(node, 'test/path.html', 'other.page')
83
- path = path_with_meta_info('path.html')
84
- assert_equal('test/path.html', @obj.output_path(node, path))
85
- path = path_with_meta_info('path.en.html')
86
- assert_equal('test/path.en.html', @obj.output_path(node, path))
87
-
88
- path = path_with_meta_info('#frag')
89
- assert_equal('test/path.html#frag', @obj.output_path(other, path))
90
- frag = Webgen::Node.new(other, 'test/path.html#frag', '#frag')
91
- path = path_with_meta_info('#frag1')
92
- assert_equal('test/path.html#frag1', @obj.output_path(frag, path))
68
+ node = Webgen::Node.new(@website.tree.dummy_root, '/', '/', {'lang' => 'de', :test => :value})
93
69
 
94
- path = path_with_meta_info('/')
95
- assert_equal('/', @obj.output_path(@tree.dummy_root, path))
96
- path = path_with_meta_info('/', 'output_path_style' => [:parent, 'hallo', 56])
97
- assert_equal('hallo/', @obj.output_path(@tree.dummy_root, path))
70
+ path = path_with_meta_info('/path.html')
71
+ assert_equal('/path.html', @obj.output_path(node, path))
72
+ path = path_with_meta_info('/path.en.html')
73
+ assert_equal('/path.html', @obj.output_path(node, path))
74
+ path = path_with_meta_info('/path.eo.html')
75
+ assert_equal('/path.eo.html', @obj.output_path(node, path))
76
+ path = path_with_meta_info('/dir/')
77
+ assert_equal('/dir/', @obj.output_path(node, path))
78
+
79
+ other = Webgen::Node.new(node, '/path.html', 'other.page')
80
+ path = path_with_meta_info('/path.html')
81
+ assert_equal('/path.html', @obj.output_path(node, path))
82
+ path = path_with_meta_info('/path.en.html')
83
+ assert_equal('/path.en.html', @obj.output_path(node, path))
84
+
85
+ path = path_with_meta_info('/path.html#frag')
86
+ assert_equal('/path.html#frag', @obj.output_path(other, path))
87
+ frag = Webgen::Node.new(other, '/path.html#frag', '#frag')
88
+ path = path_with_meta_info('/path.html#frag1')
89
+ assert_equal('/path.html#frag1', @obj.output_path(frag, path))
98
90
 
99
- assert_raise(RuntimeError) do
100
- path = path_with_meta_info('path.html', 'output_path_style' => [:parent, :year, '/', :month, '/', :cnbase, :ext])
91
+ path = path_with_meta_info('/')
92
+ assert_equal('/', @obj.output_path(@website.tree.dummy_root, path))
93
+ path = path_with_meta_info('/test/', 'output_path_style' => [:parent, 'hallo', 56])
94
+ assert_equal('hallo/', @obj.output_path(@website.tree.dummy_root, path))
95
+
96
+ path = path_with_meta_info('/index.en.html')
97
+ assert_equal('/index.html', @obj.output_path(node, path))
98
+ index_en = Webgen::Node.new(node, '/index.html', 'index.page', {'lang' => 'en'})
99
+ assert_equal('/index.html', @obj.output_path(node, path))
100
+ path = path_with_meta_info('/index.en.html', 'output_path_style' => [:parent, 'hallo.html'])
101
+ assert_equal('/hallo.html', @obj.output_path(node, path))
102
+ path = path_with_meta_info('/other.de.html', 'output_path_style' => [:parent, 'index', ['.', :lang], :ext])
103
+ assert_equal('/index.de.html', @obj.output_path(node, path))
104
+
105
+ assert_raise(Webgen::NodeCreationError) do
106
+ path = path_with_meta_info('/path.html', 'output_path_style' => [:parent, :year, '/', :month, '/', :basename, :ext])
101
107
  @obj.output_path(node, path)
102
108
  end
103
109
  time = Time.parse('2008-09-04 08:15')
104
- path = path_with_meta_info('path.html', 'output_path_style' => [:parent, :year, '/', :month, '/', :day, '-', :cnbase, :ext],
110
+ path = path_with_meta_info('/path.html', 'output_path_style' => [:parent, :year, '/', :month, '/', :day, '-', :basename, :ext],
105
111
  'created_at' => time)
106
- assert_equal('test/2008/09/04-path.html', @obj.output_path(node, path))
112
+ assert_equal('/2008/09/04-path.html', @obj.output_path(node, path))
107
113
  end
108
114
 
109
115
  def test_content
@@ -117,7 +123,14 @@ class TestSourceHandlerBase < Test::Unit::TestCase
117
123
  assert_equal('value1', path.meta_info['key'])
118
124
 
119
125
  path = path_with_meta_info('/other.page') { StringIO.new("---\:dfk")}
120
- assert_raise(RuntimeError) { @obj.page_from_path(path) }
126
+ assert_raise(Webgen::NodeCreationError) { @obj.page_from_path(path) }
127
+ end
128
+
129
+ def test_parent_node
130
+ assert_equal(@website.tree.dummy_root, @obj.parent_node(path_with_meta_info('/')))
131
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
132
+ assert_equal(root, @obj.parent_node(path_with_meta_info('/test/')))
133
+ assert_raise(Webgen::NodeCreationError) { @obj.parent_node(path_with_meta_info('/hallo/other.page')) }
121
134
  end
122
135
 
123
136
  end
@@ -17,21 +17,21 @@ class TestSourceHandlerCopy < Test::Unit::TestCase
17
17
  super
18
18
  @website.config['contentprocessor.map']['test'] = 'TestSourceHandlerCopy::TestCP'
19
19
  @obj = Webgen::SourceHandler::Copy.new
20
- @root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
21
- @without = @obj.create_node(@root, path_with_meta_info('/default.css') {StringIO.new('# header')})
22
- @with = @obj.create_node(@root, path_with_meta_info('/other.test.css') {StringIO.new('# header')})
20
+ @root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
21
+ @without = @obj.create_node(path_with_meta_info('/default.css') {StringIO.new('# header')})
22
+ @with = @obj.create_node(path_with_meta_info('/other.test.css') {StringIO.new('# header')})
23
23
  end
24
24
 
25
25
  def test_create_node
26
26
  assert_not_nil(@without)
27
27
  assert_equal(nil, @without.node_info[:preprocessor])
28
- assert_equal('test/default.css', @without.path)
28
+ assert_equal('/default.css', @without.path)
29
29
 
30
30
  assert_not_nil(@with)
31
31
  assert_equal('test', @with.node_info[:preprocessor])
32
- assert_equal('test/other.css', @with.path)
32
+ assert_equal('/other.css', @with.path)
33
33
 
34
- node = @obj.create_node(@root, path_with_meta_info('/other.unknown.css') {StringIO.new('# header')})
34
+ node = @obj.create_node(path_with_meta_info('/other.unknown.css') {StringIO.new('# header')})
35
35
  assert_equal(nil, node.node_info[:preprocessor])
36
36
  end
37
37
 
@@ -11,32 +11,28 @@ class TestSourceHandlerDirectory < Test::Unit::TestCase
11
11
 
12
12
  def test_create_node
13
13
  @obj = Webgen::SourceHandler::Directory.new
14
- root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
15
- node = @obj.create_node(root, path_with_meta_info('/dir/', {:key => :value}) {StringIO.new('')})
14
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
15
+ node = @obj.create_node(path_with_meta_info('/dir/', {:key => :value}) {StringIO.new('')})
16
16
  assert_not_nil(node)
17
17
  assert_equal(:value, node[:key])
18
18
 
19
19
  node.flag(:reinit)
20
- assert_equal(node, @obj.create_node(root, path_with_meta_info('/dir/', {:key => :other}) {StringIO.new('')}))
20
+ assert_equal(node, @obj.create_node(path_with_meta_info('/dir/', {:key => :other}) {StringIO.new('')}))
21
21
  assert_equal(:other, node[:key])
22
22
  end
23
23
 
24
24
  def test_create_directories
25
25
  @obj = Webgen::SourceHandler::Directory.new
26
26
  shm = Webgen::SourceHandler::Main.new # for using service :create_nodes
27
- root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
28
- dir = @obj.create_node(root, path_with_meta_info('/dir/'))
27
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
28
+ dir = @obj.create_node(path_with_meta_info('/dir/'))
29
29
 
30
- assert_equal(dir, @obj.create_directories(root, '/dir/', path_with_meta_info('/test')))
31
- assert_equal(dir, @obj.create_directories(root, 'dir/', path_with_meta_info('/test')))
32
- assert_equal(dir, @obj.create_directories(root, 'dir', path_with_meta_info('/test')))
30
+ assert_equal(dir, @obj.create_directories(root, '/dir/', path_with_meta_info('/')))
31
+ assert_equal(dir, @obj.create_directories(root, 'dir/', path_with_meta_info('/')))
32
+ assert_equal(dir, @obj.create_directories(root, 'dir', path_with_meta_info('/')))
33
33
 
34
34
  which = @obj.create_directories(root, 'dir/under/which', path_with_meta_info('/test'))
35
35
  assert_equal(which, @obj.create_directories(root, 'dir/under/which', path_with_meta_info('/test')))
36
36
  end
37
37
 
38
- def test_content
39
- assert_equal('', Webgen::SourceHandler::Directory.new.content(nil))
40
- end
41
-
42
38
  end
@@ -20,8 +20,11 @@ hallo
20
20
  EOF
21
21
  def setup
22
22
  super
23
+ shm = Webgen::SourceHandler::Main.new
24
+ @website.blackboard.del_listener(:node_meta_info_changed?, shm.method(:meta_info_changed?))
25
+ @website.config['passive_sources'] << ['/', "Webgen::Source::Resource", "webgen-passive-sources"]
23
26
  @nodes = {
24
- :root => root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/', {'index_path' => 'index.html'}),
27
+ :root => root = Webgen::Node.new(@website.tree.dummy_root, '/', '/', {'index_path' => 'index.html'}),
25
28
  :file1_en => Webgen::Node.new(root, '/file1.en.html', 'file1.html', {'lang' => 'en', 'in_menu' => true, 'modified_at' => Time.now}),
26
29
  :index_en => Webgen::Node.new(root, '/index.en.html', 'index.html', {'lang' => 'en', 'modified_at' => Time.now - 1, 'author' => 'test'}),
27
30
  }
@@ -31,7 +34,7 @@ EOF
31
34
  end
32
35
 
33
36
  def test_create_node
34
- atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
37
+ atom_node, rss_node = @obj.create_node(@path)
35
38
 
36
39
  assert_not_nil(atom_node)
37
40
  assert_not_nil(rss_node)
@@ -39,24 +42,28 @@ EOF
39
42
  assert_equal('atom', atom_node.node_info[:feed_type])
40
43
  assert_equal('rss', rss_node.node_info[:feed_type])
41
44
 
42
- assert_equal([atom_node, rss_node], @obj.create_node(@nodes[:root], @path))
45
+ assert_equal([atom_node, rss_node], @obj.create_node(@path))
46
+
47
+ assert_raise(Webgen::NodeCreationError) do
48
+ @obj.create_node(path_with_meta_info('/test.feed', {}, @obj.class.name) {StringIO.new("---\nsite_url: test\n---\n")})
49
+ end
43
50
  end
44
51
 
45
52
  def test_content
46
- atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
47
- assert_equal('hallo', rss_node.content)
53
+ atom_node, rss_node = @obj.create_node(@path)
54
+ assert_equal("hallo\n", rss_node.content)
48
55
  assert(atom_node.content =~ /Thomas Leitner/)
49
56
  assert(atom_node.content =~ /RealContent/)
50
57
  end
51
58
 
52
59
  def test_feed_entries
53
- atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
60
+ atom_node, rss_node = @obj.create_node(@path)
54
61
  assert_equal([@nodes[:index_en]], atom_node.feed_entries)
55
62
  assert_equal([@nodes[:index_en]], rss_node.feed_entries)
56
63
  end
57
64
 
58
65
  def test_node_changed
59
- atom_node, rss_node = @obj.create_node(@nodes[:root], @path)
66
+ atom_node, rss_node = @obj.create_node(@path)
60
67
  assert(atom_node.changed?)
61
68
 
62
69
  atom_node.content # populate cache
@@ -68,6 +75,7 @@ EOF
68
75
  atom_node.unflag(:dirty)
69
76
  @nodes[:file1_en].unflag(:dirty)
70
77
  @nodes[:index_en].unflag(:dirty)
78
+ @website.tree['/templates/atom_feed.template'].unflag(:dirty)
71
79
  assert(!atom_node.changed?)
72
80
 
73
81
  atom_node['entries'] = 'file.*.html'
@@ -44,19 +44,20 @@ EOF
44
44
 
45
45
  def test_create_fragment_nodes
46
46
  @obj = Webgen::SourceHandler::Fragment.new
47
- root = Webgen::Node.new(Webgen::Tree.new.dummy_root, 'test/', 'test')
48
- path = path_with_meta_info('hallo.html') {StringIO.new('')}
49
- node = @obj.create_node(root, path)
47
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
48
+ path = path_with_meta_info('/hallo.html') {StringIO.new('')}
49
+ node = @obj.create_node(path)
50
50
  @website.blackboard.add_service(:create_nodes, method(:create_nodes_service))
51
51
 
52
52
  sections = @obj.parse_html_headers(YAML::load(TEST_CONTENT).first['data'])
53
53
  @obj.create_fragment_nodes(sections, node, path, 'true')
54
+ assert_not_nil(root.tree['/hallo.html#test'])
54
55
  assert_equal(node, node.resolve('#test').parent)
55
56
  assert_equal(node.resolve('#test'), node.resolve('#other').parent)
56
57
  end
57
58
 
58
- def create_nodes_service(tree, alcn, path, sh)
59
- [yield(tree[alcn], path_with_meta_info(path.path))]
59
+ def create_nodes_service(path, sh)
60
+ [yield(path_with_meta_info(path.path))]
60
61
  end
61
62
 
62
63
  def check_sections(sections, valid)
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'test/unit'
4
+ require 'webgen/website'
5
+ require 'tmpdir'
6
+ require 'fileutils'
7
+
8
+ class TestSourceHandlerMain < Test::Unit::TestCase
9
+
10
+ def test_output_deletion
11
+ dir = nil
12
+ setup_task = lambda do
13
+ dir = File.join(Dir.tmpdir, 'webgen-' + Process.pid.to_s)
14
+ FileUtils.rm_rf(dir)
15
+ FileUtils.mkdir_p(dir)
16
+ FileUtils.mkdir_p(File.join(dir, 'src'))
17
+ FileUtils.touch(File.join(dir, 'src', 'test.jpg'))
18
+ end
19
+
20
+ setup_task.call
21
+ ws = Webgen::Website.new(dir, nil) {|c| c['output.do_deletion'] = false }
22
+ assert_equal(:success, ws.render)
23
+ assert(File.exists?(File.join(dir, 'out', 'test.jpg')))
24
+ FileUtils.rm_rf(File.join(dir, 'src', 'test.jpg'))
25
+ assert_equal(:success, ws.render)
26
+ assert(File.exists?(File.join(dir, 'out', 'test.jpg')))
27
+
28
+ setup_task.call
29
+ ws = Webgen::Website.new(dir, nil) {|c| c['output.do_deletion'] = true }
30
+ assert_equal(:success, ws.render)
31
+ assert(File.exists?(File.join(dir, 'out', 'test.jpg')))
32
+ FileUtils.rm_rf(File.join(dir, 'src', 'test.jpg'))
33
+ assert_equal(:success, ws.render)
34
+ assert(!File.exists?(File.join(dir, 'out', 'test.jpg')))
35
+ ensure
36
+ FileUtils.rm_rf(dir)
37
+ end
38
+
39
+ end
@@ -11,18 +11,18 @@ class TestSourceHandlerMemory < Test::Unit::TestCase
11
11
 
12
12
  def test_all
13
13
  obj = Webgen::SourceHandler::Memory.new
14
- root = Webgen::Node.new(Webgen::Tree.new.dummy_root, '/', '/')
14
+ root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
15
15
  shm = Webgen::SourceHandler::Main.new # for using service :create_nodes
16
16
  root.unflag(:dirty)
17
17
  root.unflag(:created)
18
18
 
19
- node = obj.create_node(root, path_with_meta_info('/test.png'), '/', 'data')
19
+ node = obj.create_node(path_with_meta_info('/test.png'), '/', 'data')
20
20
  assert_equal('/', node.node_info[:memory_source_alcn])
21
21
  assert_equal('data', obj.content(node))
22
22
  assert(!node.flagged?(:reinit))
23
23
  root.tree.delete_node(node)
24
24
 
25
- node = obj.create_node(root, path_with_meta_info('/test.png'), '/') {|n| assert_equal(node, n); 'data'}
25
+ node = obj.create_node(path_with_meta_info('/test.png'), '/') {|n| assert_equal(node, n); 'data'}
26
26
  assert_equal('/', node.node_info[:memory_source_alcn])
27
27
  assert_equal('data', obj.content(node))
28
28
  assert(!node.flagged?(:reinit))
@@ -33,7 +33,7 @@ class TestSourceHandlerMemory < Test::Unit::TestCase
33
33
  root.unflag(:dirty)
34
34
  root.tree.delete_node(node)
35
35
 
36
- node = obj.create_node(root, path_with_meta_info('/test.png'), '/', 'data')
36
+ node = obj.create_node(path_with_meta_info('/test.png'), '/', 'data')
37
37
  assert_equal('/', node.node_info[:memory_source_alcn])
38
38
  obj.instance_eval { @data = nil }
39
39
  assert_nil(obj.content(node))