webgen 1.0.0.beta3 → 1.0.0

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 (148) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +23 -1
  3. data/Rakefile +16 -77
  4. data/VERSION +1 -1
  5. data/bin/webgen +0 -0
  6. data/data/webgen/basic_website_template/ext/init.rb +3 -1
  7. data/data/webgen/basic_website_template/src/.gitignore +0 -0
  8. data/data/webgen/basic_website_template/webgen.config +1 -1
  9. data/data/webgen/bundle_template_files/info.yaml.erb +14 -2
  10. data/data/webgen/passive_sources/default.metainfo +10 -0
  11. data/data/webgen/passive_sources/templates/api.template +16 -2
  12. data/data/webgen/passive_sources/templates/feed.template +5 -5
  13. data/data/webgen/passive_sources/templates/sitemap.template +1 -1
  14. data/data/webgen/passive_sources/templates/tag.template +8 -4
  15. data/lib/webgen/blackboard.rb +21 -5
  16. data/lib/webgen/bundle/built-in-show-changes/info.yaml +17 -0
  17. data/lib/webgen/bundle/built-in-show-changes/init.rb +4 -5
  18. data/lib/webgen/bundle/built-in/info.yaml +1064 -0
  19. data/lib/webgen/bundle/built-in/init.rb +103 -136
  20. data/lib/webgen/bundle_loader.rb +82 -9
  21. data/lib/webgen/cli.rb +12 -8
  22. data/lib/webgen/cli/commands/create.rb +27 -0
  23. data/lib/webgen/cli/{create_bundle_command.rb → commands/create_bundle.rb} +2 -2
  24. data/lib/webgen/cli/{create_command.rb → commands/create_website.rb} +2 -2
  25. data/lib/webgen/cli/commands/generate.rb +66 -0
  26. data/lib/webgen/cli/{install_bundle_command.rb → commands/install.rb} +1 -1
  27. data/lib/webgen/cli/{show_command.rb → commands/show.rb} +6 -4
  28. data/lib/webgen/cli/{list_bundle_command.rb → commands/show_bundles.rb} +12 -15
  29. data/lib/webgen/cli/{show_config_command.rb → commands/show_config.rb} +34 -6
  30. data/lib/webgen/cli/{show_dependencies_command.rb → commands/show_dependencies.rb} +0 -0
  31. data/lib/webgen/cli/{show_extensions_command.rb → commands/show_extensions.rb} +1 -13
  32. data/lib/webgen/cli/{show_tree_command.rb → commands/show_tree.rb} +3 -0
  33. data/lib/webgen/cli/utils.rb +1 -1
  34. data/lib/webgen/configuration.rb +9 -11
  35. data/lib/webgen/content_processor/html_head.rb +3 -4
  36. data/lib/webgen/content_processor/rainpress.rb +21 -0
  37. data/lib/webgen/content_processor/sass.rb +8 -8
  38. data/lib/webgen/content_processor/tikz.rb +59 -16
  39. data/lib/webgen/item_tracker.rb +33 -12
  40. data/lib/webgen/item_tracker/missing_node.rb +5 -5
  41. data/lib/webgen/item_tracker/template_chain.rb +52 -0
  42. data/lib/webgen/misc/dummy_index.rb +78 -0
  43. data/lib/webgen/node.rb +1 -1
  44. data/lib/webgen/node_finder.rb +86 -141
  45. data/lib/webgen/page.rb +5 -5
  46. data/lib/webgen/path.rb +4 -1
  47. data/lib/webgen/path_handler.rb +25 -21
  48. data/lib/webgen/path_handler/api.rb +36 -3
  49. data/lib/webgen/path_handler/base.rb +20 -4
  50. data/lib/webgen/path_handler/feed.rb +6 -2
  51. data/lib/webgen/path_handler/meta_info.rb +4 -2
  52. data/lib/webgen/path_handler/page.rb +5 -7
  53. data/lib/webgen/path_handler/sitemap.rb +6 -1
  54. data/lib/webgen/path_handler/virtual.rb +6 -8
  55. data/lib/webgen/source/file_system.rb +2 -2
  56. data/lib/webgen/tag.rb +22 -18
  57. data/lib/webgen/tag/menu.rb +5 -5
  58. data/lib/webgen/test_helper.rb +18 -18
  59. data/lib/webgen/utils/external_command.rb +1 -1
  60. data/lib/webgen/utils/tag_parser.rb +1 -1
  61. data/lib/webgen/vendor/rainpress.rb +168 -0
  62. data/lib/webgen/version.rb +1 -1
  63. data/lib/webgen/website.rb +10 -10
  64. data/man/man1/webgen.1 +54 -23
  65. data/test/test_documentation.rb +27 -4
  66. data/test/webgen/cli/test_logger.rb +1 -1
  67. data/test/webgen/content_processor/test_blocks.rb +1 -1
  68. data/test/webgen/content_processor/test_builder.rb +3 -2
  69. data/test/webgen/content_processor/test_erb.rb +1 -1
  70. data/test/webgen/content_processor/test_erubis.rb +2 -2
  71. data/test/webgen/content_processor/test_fragments.rb +1 -1
  72. data/test/webgen/content_processor/test_haml.rb +2 -2
  73. data/test/webgen/content_processor/test_html_head.rb +5 -1
  74. data/test/webgen/content_processor/test_kramdown.rb +2 -2
  75. data/test/webgen/content_processor/test_maruku.rb +2 -2
  76. data/test/webgen/content_processor/test_r_discount.rb +2 -2
  77. data/test/webgen/content_processor/test_r_doc.rb +1 -1
  78. data/test/webgen/content_processor/test_rainpress.rb +19 -0
  79. data/test/webgen/content_processor/test_red_cloth.rb +2 -2
  80. data/test/webgen/content_processor/test_ruby.rb +1 -1
  81. data/test/webgen/content_processor/test_sass.rb +8 -6
  82. data/test/webgen/content_processor/test_scss.rb +3 -3
  83. data/test/webgen/content_processor/test_tags.rb +1 -1
  84. data/test/webgen/content_processor/test_tidy.rb +9 -1
  85. data/test/webgen/content_processor/test_tikz.rb +6 -3
  86. data/test/webgen/content_processor/test_xmllint.rb +9 -2
  87. data/test/webgen/destination/test_file_system.rb +4 -4
  88. data/test/webgen/item_tracker/test_file.rb +1 -1
  89. data/test/webgen/item_tracker/test_missing_node.rb +1 -1
  90. data/test/webgen/item_tracker/test_node_content.rb +1 -1
  91. data/test/webgen/item_tracker/test_node_meta_info.rb +1 -1
  92. data/test/webgen/item_tracker/test_nodes.rb +2 -4
  93. data/test/webgen/item_tracker/test_template_chain.rb +36 -0
  94. data/test/webgen/misc/test_dummy_index.rb +83 -0
  95. data/test/webgen/path_handler/test_api.rb +6 -46
  96. data/test/webgen/path_handler/test_base.rb +3 -2
  97. data/test/webgen/path_handler/test_copy.rb +1 -1
  98. data/test/webgen/path_handler/test_feed.rb +3 -4
  99. data/test/webgen/path_handler/test_meta_info.rb +1 -1
  100. data/test/webgen/path_handler/test_page.rb +1 -1
  101. data/test/webgen/path_handler/test_page_utils.rb +1 -1
  102. data/test/webgen/path_handler/test_sitemap.rb +3 -5
  103. data/test/webgen/path_handler/test_template.rb +1 -1
  104. data/test/webgen/path_handler/test_virtual.rb +1 -3
  105. data/test/webgen/source/test_file_system.rb +9 -4
  106. data/test/webgen/source/test_stacked.rb +1 -1
  107. data/test/webgen/source/test_tar_archive.rb +2 -2
  108. data/test/webgen/tag/test_breadcrumb_trail.rb +1 -1
  109. data/test/webgen/tag/test_coderay.rb +3 -2
  110. data/test/webgen/tag/test_date.rb +1 -1
  111. data/test/webgen/tag/test_execute_command.rb +1 -1
  112. data/test/webgen/tag/test_include_file.rb +1 -1
  113. data/test/webgen/tag/test_langbar.rb +1 -1
  114. data/test/webgen/tag/test_link.rb +1 -1
  115. data/test/webgen/tag/test_menu.rb +12 -30
  116. data/test/webgen/tag/test_meta_info.rb +1 -1
  117. data/test/webgen/tag/test_relocatable.rb +1 -1
  118. data/test/webgen/tag/test_tikz.rb +3 -2
  119. data/test/webgen/task/test_create_website.rb +2 -2
  120. data/test/webgen/test_blackboard.rb +11 -3
  121. data/test/webgen/test_bundle_loader.rb +26 -9
  122. data/test/webgen/test_cache.rb +1 -1
  123. data/test/webgen/test_cli.rb +2 -2
  124. data/test/webgen/test_configuration.rb +8 -9
  125. data/test/webgen/test_content_processor.rb +1 -1
  126. data/test/webgen/test_context.rb +1 -1
  127. data/test/webgen/test_core_ext.rb +1 -1
  128. data/test/webgen/test_destination.rb +1 -1
  129. data/test/webgen/test_error.rb +5 -5
  130. data/test/webgen/test_extension_manager.rb +1 -1
  131. data/test/webgen/test_item_tracker.rb +26 -5
  132. data/test/webgen/test_languages.rb +1 -1
  133. data/test/webgen/test_logger.rb +1 -1
  134. data/test/webgen/test_node.rb +1 -1
  135. data/test/webgen/test_node_finder.rb +2 -2
  136. data/test/webgen/test_page.rb +5 -5
  137. data/test/webgen/test_path.rb +8 -8
  138. data/test/webgen/test_rake_task.rb +1 -1
  139. data/test/webgen/test_source.rb +1 -1
  140. data/test/webgen/test_tag.rb +16 -24
  141. data/test/webgen/test_task.rb +1 -1
  142. data/test/webgen/test_tree.rb +1 -1
  143. data/test/webgen/test_utils.rb +1 -1
  144. data/test/webgen/test_website.rb +1 -1
  145. data/test/webgen/utils/test_tag_parser.rb +1 -1
  146. metadata +85 -105
  147. data/lib/webgen/cli/bundle_command.rb +0 -30
  148. data/lib/webgen/cli/generate_command.rb +0 -25
@@ -3,7 +3,7 @@
3
3
  require 'webgen/test_helper'
4
4
  require 'webgen/content_processor/ruby'
5
5
 
6
- class TestBuilder < MiniTest::Unit::TestCase
6
+ class TestBuilder < Minitest::Test
7
7
 
8
8
  include Webgen::TestHelper
9
9
 
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  require 'webgen/test_helper'
4
- require 'webgen/content_processor/sass'
5
4
  require 'webgen/path'
6
5
 
7
- class TestSass < MiniTest::Unit::TestCase
6
+ class TestSass < Minitest::Test
8
7
 
9
8
  include Webgen::TestHelper
10
9
 
11
10
  def test_static_call
11
+ require 'webgen/content_processor/sass' rescue skip('Library sass not installed')
12
12
  setup_context
13
13
  @website.ext.sass_load_paths = []
14
14
  @website.config['content_processor.sass.options'] = {}
@@ -22,14 +22,16 @@ class TestSass < MiniTest::Unit::TestCase
22
22
  assert_error_on_line(Webgen::RenderError, 2) { cp.call(@context) }
23
23
 
24
24
  # test @import-ing of sass files
25
- content = "#main\n background-image: url(relocatable('../dir2/file.test') + \"#iefix\")"
26
- result = "#main {\n background-image: url(\"../../dir2/file.test#iefix\"); }\n"
25
+ content = "@import 'dir/other'\n#main\n background-image: url(relocatable('../dir2/file.test') + \"#iefix\")"
26
+ result = "#id {\n color: white; }\n\n#main {\n background-image: url(\"../../dir2/file.test#iefix\"); }\n"
27
27
  root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
28
28
  dir = Webgen::Node.new(root, 'dir/', '/dir/')
29
29
  partial = Webgen::Node.new(dir, '_partial.sass', '/dir/_partial.sass')
30
30
  partial.node_info[:path] = Webgen::Path.new('test') { StringIO.new(content) }
31
31
  dirdir = Webgen::Node.new(dir, 'dir/', '/dir/dir/')
32
32
  sass = Webgen::Node.new(dirdir, 'file.sass', '/dir/dir/file.sass')
33
+ partial2 = Webgen::Node.new(dirdir, '_other.scss', '/dir/dir/_other.scss')
34
+ partial2.node_info[:path] = Webgen::Path.new('test') { StringIO.new('#id { color:white; }') }
33
35
  dir2 = Webgen::Node.new(root, 'dir2/', '/dir2/')
34
36
  file = Webgen::Node.new(dir2, 'file.test', '/dir2/file.test')
35
37
 
@@ -37,12 +39,12 @@ class TestSass < MiniTest::Unit::TestCase
37
39
  @context.content = "@import 'unknown'"
38
40
  assert_error_on_line(Webgen::RenderError, 1) { cp.call(@context) }
39
41
 
40
- @context.content = "@import 'dir/partial' \n@import 'dir/_partial' \n@import 'dir/partial.sass'"
42
+ @context.content = "@import '../partial' \n@import '../_partial' \n@import '../partial.sass'"
41
43
  assert_equal("#{result}\n#{result}\n#{result}", cp.call(@context).content)
42
44
  end
43
45
 
44
46
  def teardown
45
- FileUtils.rm_rf(@website.directory)
47
+ FileUtils.rm_rf(@website.directory) if @website
46
48
  end
47
49
 
48
50
  end
@@ -1,13 +1,13 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  require 'webgen/test_helper'
4
- require 'webgen/content_processor/scss'
5
4
 
6
- class TestScss < MiniTest::Unit::TestCase
5
+ class TestScss < Minitest::Test
7
6
 
8
7
  include Webgen::TestHelper
9
8
 
10
9
  def test_static_call
10
+ require 'webgen/content_processor/scss' rescue skip('Library sass not installed')
11
11
  setup_context
12
12
  @website.config['content_processor.sass.options'] = {}
13
13
  @website.ext.sass_load_paths = []
@@ -21,7 +21,7 @@ class TestScss < MiniTest::Unit::TestCase
21
21
  end
22
22
 
23
23
  def teardown
24
- FileUtils.rm_rf(@website.directory)
24
+ FileUtils.rm_rf(@website.directory) if @website
25
25
  end
26
26
 
27
27
  end
@@ -4,7 +4,7 @@ require 'webgen/test_helper'
4
4
  require 'webgen/content_processor/tags'
5
5
  require 'webgen/utils/tag_parser'
6
6
 
7
- class TestContentProcessorTags < MiniTest::Unit::TestCase
7
+ class TestContentProcessorTags < Minitest::Test
8
8
 
9
9
  include Webgen::TestHelper
10
10
 
@@ -3,15 +3,23 @@
3
3
  require 'webgen/test_helper'
4
4
  require 'webgen/content_processor/tidy'
5
5
 
6
- class TestTidy < MiniTest::Unit::TestCase
6
+ class TestTidy < Minitest::Test
7
7
 
8
8
  include Webgen::TestHelper
9
9
 
10
10
  def test_static_call
11
+ require 'webgen/content_processor/tidy' rescue skip($!.message)
12
+
11
13
  setup_context
12
14
  @website.config['content_processor.tidy.options'] = ''
13
15
  cp = Webgen::ContentProcessor::Tidy
14
16
 
17
+ begin
18
+ cp.call(@context)
19
+ rescue Webgen::CommandNotFoundError
20
+ skip("Binary tidy not found")
21
+ end
22
+
15
23
  begin
16
24
  tmp, ENV['PATH'] = ENV['PATH'], '/sbin'
17
25
  assert_raises(Webgen::CommandNotFoundError) { cp.call(@context) }
@@ -1,13 +1,15 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
+ require 'timeout'
3
4
  require 'webgen/test_helper'
4
- require 'webgen/content_processor/tikz'
5
5
 
6
- class TestContentProcessorTikz < MiniTest::Unit::TestCase
6
+ class TestContentProcessorTikz < Minitest::Test
7
7
 
8
8
  include Webgen::TestHelper
9
9
 
10
10
  def test_static_call
11
+ require 'webgen/content_processor/tikz' rescue skip($!.message)
12
+
11
13
  setup_context
12
14
  @website.ext.content_processor = Webgen::ContentProcessor.new
13
15
  @website.ext.content_processor.register('Blocks')
@@ -18,6 +20,7 @@ class TestContentProcessorTikz < MiniTest::Unit::TestCase
18
20
  @context.node.define_singleton_method(:[]) {|ignored| nil}
19
21
 
20
22
  call('\tikz \draw (0,0) -- (0,1);', 'test.png', [], '', '72 72', false)
23
+ Timeout.timeout(0.2) { call('\tikz \draw (0,0) -- (0,1);', 'test.png', [], '', '72 72', false) } # test cache
21
24
  refute_nil(@context.content)
22
25
 
23
26
  assert_raises(Webgen::RenderError) { call('\tikz \asdfasdfasf', 'test.png', [], '', '72 72', false) }
@@ -38,7 +41,7 @@ class TestContentProcessorTikz < MiniTest::Unit::TestCase
38
41
  end
39
42
 
40
43
  def teardown
41
- FileUtils.rm_rf(@website.directory)
44
+ FileUtils.rm_rf(@website.directory) if @website
42
45
  end
43
46
 
44
47
  end
@@ -1,17 +1,24 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  require 'webgen/test_helper'
4
- require 'webgen/content_processor/xmllint'
5
4
 
6
- class TestXmllint < MiniTest::Unit::TestCase
5
+ class TestXmllint < Minitest::Test
7
6
 
8
7
  include Webgen::TestHelper
9
8
 
10
9
  def test_static_call
10
+ require 'webgen/content_processor/xmllint' rescue skip($!.message)
11
+
11
12
  setup_context
12
13
  @website.config['content_processor.xmllint.options'] = ''
13
14
  cp = Webgen::ContentProcessor::Xmllint
14
15
 
16
+ begin
17
+ cp.call(@context)
18
+ rescue Webgen::CommandNotFoundError
19
+ skip("Binary xmllint not found")
20
+ end
21
+
15
22
  begin
16
23
  tmp, ENV['PATH'] = ENV['PATH'], '/sbin'
17
24
  assert_raises(Webgen::CommandNotFoundError) { cp.call(@context) }
@@ -4,7 +4,7 @@ require 'webgen/test_helper'
4
4
  require 'webgen/destination/file_system'
5
5
  require 'webgen/path'
6
6
 
7
- class TestDestinationFileSystem < MiniTest::Unit::TestCase
7
+ class TestDestinationFileSystem < Minitest::Test
8
8
 
9
9
  def setup
10
10
  @dir = dir = Dir.mktmpdir('test-webgen')
@@ -20,7 +20,7 @@ class TestDestinationFileSystem < MiniTest::Unit::TestCase
20
20
  dest = Webgen::Destination::FileSystem.new(@website, 'test')
21
21
  assert_equal(File.join(@dir, 'test'), dest.root)
22
22
  dest = Webgen::Destination::FileSystem.new(@website, '/tmp/hallo')
23
- assert_equal('/tmp/hallo', dest.root)
23
+ assert_equal(File.absolute_path('/tmp/hallo', @website.directory), dest.root)
24
24
  dest = Webgen::Destination::FileSystem.new(@website, '../hallo')
25
25
  assert_equal(File.expand_path(File.join(@dir, '../hallo')), dest.root)
26
26
  end
@@ -40,8 +40,8 @@ class TestDestinationFileSystem < MiniTest::Unit::TestCase
40
40
 
41
41
  dest.write('/dir/hallo', Webgen::Path.new('fu') { StringIO.new("contentö")})
42
42
  assert(dest.exists?('/dir/hallo'))
43
- assert_equal('contentö', dest.read('/dir/hallo', 'r'))
44
- assert_equal('contentö', File.read(File.join(dest.root, 'dir/hallo')))
43
+ assert_equal('contentö', dest.read('/dir/hallo', 'r:UTF-8'))
44
+ assert_equal('contentö', File.read(File.join(dest.root, 'dir/hallo'), :mode => 'r:UTF-8'))
45
45
 
46
46
  dest.delete('/dir')
47
47
  refute(dest.exists?('/dir'))
@@ -4,7 +4,7 @@ require 'minitest/autorun'
4
4
  require 'time'
5
5
  require 'webgen/item_tracker/file'
6
6
 
7
- class TestItemTrackerFile < MiniTest::Unit::TestCase
7
+ class TestItemTrackerFile < Minitest::Test
8
8
 
9
9
  def setup
10
10
  @website = MiniTest::Mock.new
@@ -4,7 +4,7 @@ require 'minitest/autorun'
4
4
  require 'webgen/item_tracker/missing_node'
5
5
  require 'webgen/blackboard'
6
6
 
7
- class TestItemTrackerMissingNode < MiniTest::Unit::TestCase
7
+ class TestItemTrackerMissingNode < Minitest::Test
8
8
 
9
9
  class StubTree
10
10
 
@@ -3,7 +3,7 @@
3
3
  require 'minitest/autorun'
4
4
  require 'webgen/item_tracker/node_content'
5
5
 
6
- class TestNodeContent < MiniTest::Unit::TestCase
6
+ class TestNodeContent < Minitest::Test
7
7
 
8
8
  def setup
9
9
  @website = Object.new
@@ -3,7 +3,7 @@
3
3
  require 'minitest/autorun'
4
4
  require 'webgen/item_tracker/node_meta_info'
5
5
 
6
- class TestNodeMetaInfo < MiniTest::Unit::TestCase
6
+ class TestNodeMetaInfo < Minitest::Test
7
7
 
8
8
  def setup
9
9
  @website = Object.new
@@ -4,7 +4,7 @@ require 'webgen/test_helper'
4
4
  require 'webgen/item_tracker/nodes'
5
5
  require 'webgen/node_finder'
6
6
 
7
- class TestItemTrackerNodes < MiniTest::Unit::TestCase
7
+ class TestItemTrackerNodes < Minitest::Test
8
8
 
9
9
  include Webgen::TestHelper
10
10
 
@@ -31,8 +31,7 @@ class TestItemTrackerNodes < MiniTest::Unit::TestCase
31
31
  assert_equal(["/file.en.html", "/file.de.html"],
32
32
  @obj.item_data(*@args1))
33
33
 
34
- assert_equal(["/file.en.html",
35
- ["/file.de.html", ["/file.de.html#frag"]]],
34
+ assert_equal(["/file.en.html", "/file.de.html"],
36
35
  @obj.item_data(*@args2))
37
36
  end
38
37
 
@@ -43,7 +42,6 @@ class TestItemTrackerNodes < MiniTest::Unit::TestCase
43
42
  @website.ext.item_tracker.expect(:item_changed?, false, [:node_meta_info, @website.tree['/file.en.html']])
44
43
  @website.ext.item_tracker.expect(:item_changed?, false, [:node_meta_info, @website.tree['/file.de.html']])
45
44
  end
46
- @website.ext.item_tracker.expect(:item_changed?, false, [:node_meta_info, @website.tree['/file.de.html#frag']])
47
45
 
48
46
  [@args1, @args2].each do |args|
49
47
  old_data = @obj.item_data(*args)
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'minitest/autorun'
4
+ require 'time'
5
+ require 'webgen/item_tracker/template_chain'
6
+
7
+ class TestItemTrackerTemplateChain < Minitest::Test
8
+
9
+ def setup
10
+ @website = Object.new
11
+ @node = node = Object.new
12
+ @node.define_singleton_method(:alcn) { 'alcn' }
13
+ @node.define_singleton_method(:template_chain) { [node] }
14
+ @website.define_singleton_method(:tree) { {'alcn' => node} }
15
+ @obj = Webgen::ItemTracker::TemplateChain.new(@website)
16
+ end
17
+
18
+ def test_item_id
19
+ assert_equal('alcn', @obj.item_id(@node))
20
+ end
21
+
22
+ def test_item_data
23
+ assert_equal(['alcn'], @obj.item_data('alcn'))
24
+ end
25
+
26
+ def test_item_changed?
27
+ assert(@obj.item_changed?('unknown', 'old'))
28
+ assert(@obj.item_changed?('alcn', ['old']))
29
+ refute(@obj.item_changed?('alcn', ['alcn']))
30
+ end
31
+
32
+ def test_referenced_nodes
33
+ assert_equal(['alcn'], @obj.referenced_nodes('alcn', 'data'))
34
+ end
35
+
36
+ end
@@ -0,0 +1,83 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'fileutils'
4
+ require 'tmpdir'
5
+ require 'webgen/test_helper'
6
+ require 'webgen/misc/dummy_index'
7
+
8
+ class TestMiscDummyIndex < Minitest::Test
9
+
10
+ class DummyDestination
11
+
12
+ attr_accessor :paths
13
+
14
+ def initialize(paths = {})
15
+ @paths = paths
16
+ end
17
+
18
+ def exists?(path)
19
+ @paths.has_key?(path)
20
+ end
21
+
22
+ def write(path, content)
23
+ @paths[path] = content
24
+ end
25
+
26
+ end
27
+
28
+ include Webgen::TestHelper
29
+
30
+ def setup
31
+ setup_website('misc.dummy_index.enabled' => true, 'misc.dummy_index.directory_indexes' => ['index.html'])
32
+ setup_default_nodes(@website.tree)
33
+ @website.ext.destination = DummyDestination.new('/' => nil, '/dir/' => nil, '/dir/dir/' => nil, '/dir2/' => nil)
34
+
35
+ @website.tree['/dir/'].meta_info['proxy_path'] = '../other.html'
36
+ @website.tree['/dir/dir/'].meta_info['proxy_path'] = 'my_other.html'
37
+ @website.tree['/dir2/'].meta_info['proxy_path'] = 'index.html'
38
+ @dummy_index = Webgen::Misc::DummyIndex.new(@website)
39
+ end
40
+
41
+ def test_initialize
42
+ @website.blackboard.dispatch_msg(:website_generated)
43
+ refute(@website.ext.destination.paths['/dir/index.html'])
44
+
45
+ @website.config['misc.dummy_index.enabled'] = false
46
+ @website.blackboard.dispatch_msg(:website_initialized)
47
+ @website.blackboard.dispatch_msg(:website_generated)
48
+ refute(@website.ext.destination.paths['/dir/index.html'])
49
+
50
+ @website.config['misc.dummy_index.enabled'] = true
51
+ @website.config['misc.dummy_index.directory_indexes'] = []
52
+ @website.blackboard.dispatch_msg(:website_initialized)
53
+ @website.blackboard.dispatch_msg(:website_generated)
54
+ refute(@website.ext.destination.paths['/dir/index.html'])
55
+
56
+ @website.config['misc.dummy_index.directory_indexes'] = ['index.html']
57
+ @website.blackboard.dispatch_msg(:website_initialized)
58
+ @website.blackboard.dispatch_msg(:website_generated)
59
+ assert(@website.ext.destination.paths['/dir/index.html'])
60
+ end
61
+
62
+ def test_create_dummy_indexes
63
+ paths = @website.ext.destination.paths
64
+
65
+ # without cache
66
+ @dummy_index.send(:create_dummy_indexes)
67
+ assert_match(/url=\.\.\/other.html"/, paths['/dir/index.html'])
68
+ assert_match(/url=my_other.html"/, paths['/dir/dir/index.html'])
69
+ refute(paths['/dir2/index.html'])
70
+
71
+ # with cache and destination paths exist
72
+ @logio.string = ''
73
+ @dummy_index.send(:create_dummy_indexes)
74
+ assert_log_match(/\A\z/)
75
+
76
+ # with cache, one destination path does not exist
77
+ paths.delete('/dir/index.html')
78
+ @dummy_index.send(:create_dummy_indexes)
79
+ assert(paths['/dir/index.html'])
80
+ assert_log_match(/\A.*\Z/)
81
+ end
82
+
83
+ end
@@ -3,7 +3,7 @@
3
3
  require 'webgen/test_helper'
4
4
  require 'webgen/path_handler/api'
5
5
 
6
- class TestPathHandlerApi < MiniTest::Unit::TestCase
6
+ class TestPathHandlerApi < Minitest::Test
7
7
 
8
8
  include Webgen::TestHelper
9
9
 
@@ -14,11 +14,12 @@ class TestPathHandlerApi < MiniTest::Unit::TestCase
14
14
 
15
15
  root = Webgen::Node.new(@website.tree.dummy_root, '/', '/')
16
16
 
17
+ @page_file = File.dirname(__FILE__) + "/../../../API.rdoc"
17
18
  @path = Webgen::Path.new('/test.api', 'dest_path' => '<parent><basename><ext>',
18
19
  'api_name' => 'my_api',
19
20
  'dir_name' => 'my_dir',
20
- 'prefix_for_link_defs' => true,
21
- 'rdoc_options' => ['-t', 'Title', __FILE__])
21
+ 'prefix_link_defs' => true,
22
+ 'rdoc_options' => ['-t', 'Title', __FILE__, @page_file])
22
23
  end
23
24
 
24
25
  def teardown
@@ -39,6 +40,7 @@ class TestPathHandlerApi < MiniTest::Unit::TestCase
39
40
  assert(@website.tree['/my_dir/TestPathHandlerApi.en.html#method-i-setup'])
40
41
  assert_equal(['/my_dir/TestPathHandlerApi.en.html#method-i-setup', 'TestPathHandlerApi#setup'],
41
42
  @website.ext.link_definitions['my_api:TestPathHandlerApi#setup'])
43
+ assert(@website.tree['/my_dir/API_rdoc.en.html'])
42
44
 
43
45
  cache_dir = @website.tmpdir(File.join('path_handler.api', 'my_api'))
44
46
  assert(File.directory?(cache_dir))
@@ -47,7 +49,7 @@ class TestPathHandlerApi < MiniTest::Unit::TestCase
47
49
  def test_rdoc_options
48
50
  data_methods = [:verbosity, :dry_run, :update_output_dir,
49
51
  :force_output, :files]
50
- result = [0, false, true, false, [__FILE__]]
52
+ result = [0, false, true, false, [__FILE__, @page_file]]
51
53
 
52
54
  options = @api.send(:rdoc_options, @path['rdoc_options'])
53
55
  assert_equal(result, data_methods.map {|m| options.send(m)})
@@ -66,46 +68,4 @@ class TestPathHandlerApi < MiniTest::Unit::TestCase
66
68
  assert_equal(result, data)
67
69
  end
68
70
 
69
- =begin
70
- def create_nodes
71
- @path['version'] = 'atom'
72
- atom_node = @feed.create_nodes(@path.dup, @path_blocks)
73
- @path['version'] = 'rss'
74
- rss_node = @feed.create_nodes(@path.dup, @path_blocks)
75
- [atom_node, rss_node]
76
- end
77
-
78
- def test_create_node
79
- atom_node, rss_node = create_nodes
80
-
81
- refute_nil(atom_node)
82
- refute_nil(rss_node)
83
- refute_nil(atom_node.node_info[:blocks])
84
- assert_equal('atom', atom_node['version'])
85
- assert_equal('rss', rss_node['version'])
86
-
87
- assert_raises(Webgen::NodeCreationError) do
88
- path = Webgen::Path.new('/test_feed_2') { StringIO.new("---\nunknow: yes") }
89
- @feed.create_nodes(path, 'unused')
90
- end
91
- end
92
-
93
- def test_content
94
- @website.ext.content_processor = Webgen::ContentProcessor.new
95
- @website.ext.content_processor.register('Erb')
96
- @website.ext.content_processor.register('Blocks')
97
-
98
- atom_node, rss_node = create_nodes
99
- assert_equal("hallo\n", @feed.content(rss_node))
100
- assert(@feed.content(atom_node) =~ /Thomas Leitner/)
101
- assert(@feed.content(atom_node) =~ /RealContent/)
102
- end
103
-
104
- def test_feed_entries
105
- atom_node, rss_node = create_nodes
106
- assert_equal([@index_en, @file_en], atom_node.feed_entries)
107
- assert_equal([@index_en, @file_en], rss_node.feed_entries)
108
- end
109
- =end
110
-
111
71
  end