nanoc3 3.1.9 → 3.2.0a1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data/LICENSE +1 -1
  2. data/NEWS.md +0 -50
  3. data/README.md +3 -15
  4. data/bin/nanoc3 +2 -0
  5. data/lib/nanoc3/base/checksummer.rb +40 -0
  6. data/lib/nanoc3/base/code_snippet.rb +30 -12
  7. data/lib/nanoc3/base/compiled_content_cache.rb +86 -0
  8. data/lib/nanoc3/base/compiler.rb +134 -95
  9. data/lib/nanoc3/base/compiler_dsl.rb +12 -11
  10. data/lib/nanoc3/base/core_ext/string.rb +2 -2
  11. data/lib/nanoc3/base/data_source.rb +17 -16
  12. data/lib/nanoc3/base/dependency_tracker.rb +102 -121
  13. data/lib/nanoc3/base/directed_graph.rb +65 -3
  14. data/lib/nanoc3/base/errors.rb +20 -16
  15. data/lib/nanoc3/base/item.rb +58 -50
  16. data/lib/nanoc3/base/item_rep.rb +177 -150
  17. data/lib/nanoc3/base/layout.rb +51 -18
  18. data/lib/nanoc3/base/notification_center.rb +8 -8
  19. data/lib/nanoc3/base/plugin_registry.rb +9 -9
  20. data/lib/nanoc3/base/rule.rb +18 -9
  21. data/lib/nanoc3/base/rule_context.rb +5 -5
  22. data/lib/nanoc3/base/site.rb +135 -47
  23. data/lib/nanoc3/base.rb +21 -19
  24. data/lib/nanoc3/cli/base.rb +51 -74
  25. data/lib/nanoc3/cli/commands/autocompile.rb +3 -0
  26. data/lib/nanoc3/cli/commands/compile.rb +35 -74
  27. data/lib/nanoc3/cli/commands/create_site.rb +17 -5
  28. data/lib/nanoc3/cli/commands/debug.rb +11 -4
  29. data/lib/nanoc3/cli/commands/view.rb +0 -1
  30. data/lib/nanoc3/cli/commands/watch.rb +148 -0
  31. data/lib/nanoc3/cli/commands.rb +1 -0
  32. data/lib/nanoc3/cli/logger.rb +15 -21
  33. data/lib/nanoc3/data_sources/deprecated/twitter.rb +0 -1
  34. data/lib/nanoc3/data_sources/filesystem.rb +11 -40
  35. data/lib/nanoc3/data_sources/filesystem_unified.rb +22 -22
  36. data/lib/nanoc3/extra/auto_compiler.rb +1 -1
  37. data/lib/nanoc3/extra/chick.rb +8 -8
  38. data/lib/nanoc3/extra/deployers/rsync.rb +2 -3
  39. data/lib/nanoc3/extra/validators/links.rb +32 -51
  40. data/lib/nanoc3/extra/validators/w3c.rb +2 -2
  41. data/lib/nanoc3/extra/vcs.rb +1 -1
  42. data/lib/nanoc3/filters/colorize_syntax.rb +15 -19
  43. data/lib/nanoc3/filters/erb.rb +1 -5
  44. data/lib/nanoc3/filters/erubis.rb +1 -5
  45. data/lib/nanoc3/filters/haml.rb +1 -2
  46. data/lib/nanoc3/filters/less.rb +2 -51
  47. data/lib/nanoc3/filters/mustache.rb +21 -0
  48. data/lib/nanoc3/filters/rdiscount.rb +1 -2
  49. data/lib/nanoc3/filters/relativize_paths.rb +3 -2
  50. data/lib/nanoc3/filters/sass.rb +50 -56
  51. data/lib/nanoc3/filters.rb +2 -0
  52. data/lib/nanoc3/helpers/blogging.rb +22 -29
  53. data/lib/nanoc3/helpers/breadcrumbs.rb +1 -1
  54. data/lib/nanoc3/helpers/capturing.rb +1 -1
  55. data/lib/nanoc3/helpers/filtering.rb +1 -1
  56. data/lib/nanoc3/helpers/link_to.rb +10 -21
  57. data/lib/nanoc3/helpers/rendering.rb +5 -24
  58. data/lib/nanoc3/helpers/tagging.rb +6 -6
  59. data/lib/nanoc3/helpers/text.rb +2 -2
  60. data/lib/nanoc3.rb +1 -1
  61. metadata +35 -93
  62. data/.gemtest +0 -0
  63. data/doc/yardoc_templates/default/layout/html/footer.erb +0 -10
  64. data/nanoc3.gemspec +0 -41
  65. data/tasks/clean.rake +0 -11
  66. data/tasks/doc.rake +0 -14
  67. data/tasks/gem.rake +0 -13
  68. data/tasks/test.rake +0 -38
  69. data/test/base/core_ext/array_spec.rb +0 -23
  70. data/test/base/core_ext/hash_spec.rb +0 -41
  71. data/test/base/core_ext/string_spec.rb +0 -27
  72. data/test/base/test_code_snippet.rb +0 -33
  73. data/test/base/test_compiler.rb +0 -410
  74. data/test/base/test_compiler_dsl.rb +0 -121
  75. data/test/base/test_context.rb +0 -33
  76. data/test/base/test_data_source.rb +0 -48
  77. data/test/base/test_dependency_tracker.rb +0 -510
  78. data/test/base/test_directed_graph.rb +0 -91
  79. data/test/base/test_filter.rb +0 -85
  80. data/test/base/test_item.rb +0 -141
  81. data/test/base/test_item_rep.rb +0 -953
  82. data/test/base/test_layout.rb +0 -44
  83. data/test/base/test_notification_center.rb +0 -36
  84. data/test/base/test_plugin.rb +0 -32
  85. data/test/base/test_rule.rb +0 -21
  86. data/test/base/test_rule_context.rb +0 -63
  87. data/test/base/test_site.rb +0 -366
  88. data/test/cli/commands/test_compile.rb +0 -12
  89. data/test/cli/commands/test_create_item.rb +0 -12
  90. data/test/cli/commands/test_create_layout.rb +0 -28
  91. data/test/cli/commands/test_create_site.rb +0 -24
  92. data/test/cli/commands/test_help.rb +0 -12
  93. data/test/cli/commands/test_info.rb +0 -12
  94. data/test/cli/commands/test_update.rb +0 -12
  95. data/test/cli/test_logger.rb +0 -12
  96. data/test/data_sources/test_filesystem.rb +0 -420
  97. data/test/data_sources/test_filesystem_unified.rb +0 -538
  98. data/test/data_sources/test_filesystem_verbose.rb +0 -359
  99. data/test/extra/core_ext/test_enumerable.rb +0 -32
  100. data/test/extra/core_ext/test_time.rb +0 -17
  101. data/test/extra/deployers/test_rsync.rb +0 -234
  102. data/test/extra/test_auto_compiler.rb +0 -482
  103. data/test/extra/test_file_proxy.rb +0 -21
  104. data/test/extra/test_vcs.rb +0 -24
  105. data/test/extra/validators/test_links.rb +0 -53
  106. data/test/extra/validators/test_w3c.rb +0 -49
  107. data/test/filters/test_bluecloth.rb +0 -20
  108. data/test/filters/test_coderay.rb +0 -46
  109. data/test/filters/test_colorize_syntax.rb +0 -84
  110. data/test/filters/test_erb.rb +0 -72
  111. data/test/filters/test_erubis.rb +0 -72
  112. data/test/filters/test_haml.rb +0 -98
  113. data/test/filters/test_kramdown.rb +0 -20
  114. data/test/filters/test_less.rb +0 -118
  115. data/test/filters/test_markaby.rb +0 -26
  116. data/test/filters/test_maruku.rb +0 -20
  117. data/test/filters/test_rainpress.rb +0 -31
  118. data/test/filters/test_rdiscount.rb +0 -33
  119. data/test/filters/test_rdoc.rb +0 -18
  120. data/test/filters/test_redcloth.rb +0 -20
  121. data/test/filters/test_relativize_paths.rb +0 -231
  122. data/test/filters/test_rubypants.rb +0 -20
  123. data/test/filters/test_sass.rb +0 -235
  124. data/test/gem_loader.rb +0 -11
  125. data/test/helper.rb +0 -99
  126. data/test/helpers/test_blogging.rb +0 -808
  127. data/test/helpers/test_breadcrumbs.rb +0 -83
  128. data/test/helpers/test_capturing.rb +0 -42
  129. data/test/helpers/test_filtering.rb +0 -108
  130. data/test/helpers/test_html_escape.rb +0 -18
  131. data/test/helpers/test_link_to.rb +0 -251
  132. data/test/helpers/test_rendering.rb +0 -109
  133. data/test/helpers/test_tagging.rb +0 -89
  134. data/test/helpers/test_text.rb +0 -26
  135. data/test/helpers/test_xml_sitemap.rb +0 -69
  136. data/test/tasks/test_clean.rb +0 -71
@@ -1,44 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::LayoutTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_initialize
10
- # Make sure attributes are cleaned
11
- layout = Nanoc3::Layout.new("content", { 'foo' => 'bar' }, '/foo/')
12
- assert_equal({ :foo => 'bar' }, layout.attributes)
13
-
14
- # Make sure identifier is cleaned
15
- layout = Nanoc3::Layout.new("content", { 'foo' => 'bar' }, 'foo')
16
- assert_equal('/foo/', layout.identifier)
17
- end
18
-
19
- def test_frozen_identifier
20
- layout = Nanoc3::Layout.new("foo", {}, '/foo')
21
-
22
- error = assert_raises(RuntimeError) do
23
- layout.identifier.chop!
24
- end
25
- assert_equal "can't modify frozen string", error.message
26
- end
27
-
28
- def test_lookup_with_known_attribute
29
- # Create layout
30
- layout = Nanoc3::Layout.new("content", { 'foo' => 'bar' }, '/foo/')
31
-
32
- # Check attributes
33
- assert_equal('bar', layout[:foo])
34
- end
35
-
36
- def test_lookup_with_unknown_attribute
37
- # Create layout
38
- layout = Nanoc3::Layout.new("content", { 'foo' => 'bar' }, '/foo/')
39
-
40
- # Check attributes
41
- assert_equal(nil, layout[:filter])
42
- end
43
-
44
- end
@@ -1,36 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::NotificationCenterTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_post
10
- # Set up notification
11
- Nanoc3::NotificationCenter.on :ping_received, :test do
12
- @ping_received = true
13
- end
14
-
15
- # Post
16
- @ping_received = false
17
- Nanoc3::NotificationCenter.post :ping_received
18
- assert(@ping_received)
19
- end
20
-
21
- def test_remove
22
- # Set up notification
23
- Nanoc3::NotificationCenter.on :ping_received, :test do
24
- @ping_received = true
25
- end
26
-
27
- # Remove observer
28
- Nanoc3::NotificationCenter.remove :ping_received, :test
29
-
30
- # Post
31
- @ping_received = false
32
- Nanoc3::NotificationCenter.post :ping_received
33
- assert(!@ping_received)
34
- end
35
-
36
- end
@@ -1,32 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::PluginTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- class SampleFilter < Nanoc3::Filter
10
- identifier :_plugin_test_sample_filter
11
- end
12
-
13
- def test_named
14
- # Find existant filter
15
- filter = Nanoc3::Filter.named(:erb)
16
- assert(!filter.nil?)
17
-
18
- # Find non-existant filter
19
- filter = Nanoc3::Filter.named(:lksdaffhdlkashlgkskahf)
20
- assert(filter.nil?)
21
- end
22
-
23
- def test_register
24
- SampleFilter.send(:identifier, :_plugin_test_sample_filter)
25
-
26
- registry = Nanoc3::PluginRegistry.instance
27
- filter = registry.find(Nanoc3::Filter, :_plugin_test_sample_filter)
28
-
29
- refute_nil filter
30
- end
31
-
32
- end
@@ -1,21 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::RuleTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_initialize
10
- # TODO implement
11
- end
12
-
13
- def test_applicable_to
14
- # TODO implement
15
- end
16
-
17
- def test_apply_to
18
- # TODO implement
19
- end
20
-
21
- end
@@ -1,63 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::RuleContextTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_objects
10
- # Mock everything
11
- config = mock
12
- items = mock
13
- layouts = mock
14
- site = mock
15
- site.stubs(:config).returns(config)
16
- site.stubs(:items).returns(items)
17
- site.stubs(:layouts).returns(layouts)
18
- item = mock
19
- item.stubs(:site).returns(site)
20
- rep = mock
21
- rep.stubs(:item).returns(item)
22
-
23
- # Create context
24
- @rule_context = Nanoc3::RuleContext.new(rep)
25
-
26
- # Check
27
- assert_equal rep, @rule_context.rep
28
- assert_equal item, @rule_context.item
29
- assert_equal site, @rule_context.site
30
- assert_equal config, @rule_context.config
31
- assert_equal layouts, @rule_context.layouts
32
- assert_equal items, @rule_context.items
33
- end
34
-
35
- def test_actions
36
- # Mock everything
37
- config = mock
38
- items = mock
39
- layouts = mock
40
- site = mock
41
- site.stubs(:config).returns(config)
42
- site.stubs(:items).returns(items)
43
- site.stubs(:layouts).returns(layouts)
44
- item = mock
45
- item.stubs(:site).returns(site)
46
-
47
- # Mock rep
48
- rep = mock
49
- rep.stubs(:item).returns(item)
50
- rep.expects(:filter).with(:foo, { :bar => 'baz' })
51
- rep.expects(:layout).with('foo')
52
- rep.expects(:snapshot).with('awesome')
53
-
54
- # Create context
55
- @rule_context = Nanoc3::RuleContext.new(rep)
56
-
57
- # Check
58
- rep.filter :foo, :bar => 'baz'
59
- rep.layout 'foo'
60
- rep.snapshot 'awesome'
61
- end
62
-
63
- end
@@ -1,366 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::SiteTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_initialize_with_dir_without_config_yaml
10
- assert_raises(Errno::ENOENT) do
11
- site = Nanoc3::Site.new('.')
12
- end
13
- end
14
-
15
- def test_initialize_with_dir_with_config_yaml
16
- File.open('config.yaml', 'w') { |io| io.write('output_dir: public_html') }
17
- site = Nanoc3::Site.new('.')
18
- assert_equal 'public_html', site.config[:output_dir]
19
- end
20
-
21
- def test_initialize_with_config_hash
22
- site = Nanoc3::Site.new(:foo => 'bar')
23
- assert_equal 'bar', site.config[:foo]
24
- end
25
-
26
- def test_initialize_with_incomplete_data_source_config
27
- site = Nanoc3::Site.new(:data_sources => [ { :type => 'foo', :items_root => '/bar/' } ])
28
- assert_equal('foo', site.config[:data_sources][0][:type])
29
- assert_equal('/bar/', site.config[:data_sources][0][:items_root])
30
- assert_equal('/', site.config[:data_sources][0][:layouts_root])
31
- assert_equal({}, site.config[:data_sources][0][:config])
32
- end
33
-
34
- def test_load_rules_with_existing_rules_file
35
- # Mock DSL
36
- dsl = mock
37
- dsl.expects(:compile).with('*')
38
-
39
- # Create site
40
- site = Nanoc3::Site.new({})
41
- site.expects(:dsl).returns(dsl)
42
-
43
- # Create rules file
44
- File.open('Rules', 'w') do |io|
45
- io.write <<-EOF
46
- compile '*' do
47
- # ... do nothing ...
48
- end
49
- EOF
50
- end
51
-
52
- # Load rules
53
- site.send :load_rules
54
- end
55
-
56
- def test_load_rules_with_broken_rules_file
57
- # Mock DSL
58
- dsl = mock
59
- dsl.expects(:some_function_that_doesn_really_exist)
60
- dsl.expects(:weird_param_number_one)
61
- dsl.expects(:mysterious_param_number_two)
62
-
63
- # Create site
64
- site = Nanoc3::Site.new({})
65
- site.expects(:dsl).returns(dsl)
66
-
67
- # Create rules file
68
- File.open('Rules', 'w') do |io|
69
- io.write <<-EOF
70
- some_function_that_doesn_really_exist(
71
- weird_param_number_one,
72
- mysterious_param_number_two
73
- )
74
- EOF
75
- end
76
-
77
- # Load rules
78
- site.send :load_rules
79
- end
80
-
81
- def test_load_data_sources_first
82
- # Create site
83
- Nanoc3::CLI::Base.new.run([ 'create_site', 'bar' ])
84
-
85
- FileUtils.cd('bar') do
86
- # Create data source code
87
- File.open('lib/some_data_source.rb', 'w') do |io|
88
- io.write "class FooDataSource < Nanoc3::DataSource\n"
89
- io.write " identifier :site_test_foo\n"
90
- io.write " def items ; [ Nanoc3::Item.new('content', {}, '/foo/') ] ; end\n"
91
- io.write "end\n"
92
- end
93
-
94
- # Update configuration
95
- File.open('config.yaml', 'w') do |io|
96
- io.write "data_sources:\n"
97
- io.write " - type: site_test_foo"
98
- end
99
-
100
- # Create site
101
- site = Nanoc3::Site.new('.')
102
- site.load_data
103
-
104
- # Check
105
- assert_equal 1, site.data_sources.size
106
- assert_equal '/foo/', site.items[0].identifier
107
- end
108
- end
109
-
110
- def test_disallow_routes_not_starting_with_slash
111
- # Create site
112
- Nanoc3::CLI::Base.new.run([ 'create_site', 'bar' ])
113
-
114
- FileUtils.cd('bar') do
115
- # Create routes
116
- File.open('Rules', 'w') do |io|
117
- io.write "compile '*' do\n"
118
- io.write " layout 'default'\n"
119
- io.write "end\n"
120
- io.write "\n"
121
- io.write "route '*' do\n"
122
- io.write " 'index.html'\n"
123
- io.write "end\n"
124
- io.write "\n"
125
- io.write "layout '*', :erb\n"
126
- end
127
-
128
- # Create site
129
- site = Nanoc3::Site.new('.')
130
- error = assert_raises(RuntimeError) do
131
- site.load_data
132
- end
133
- assert_match /^The path returned for the.*does not start with a slash. Please ensure that all routing rules return a path that starts with a slash./, error.message
134
- end
135
- end
136
-
137
- end
138
-
139
- describe 'Nanoc3::Site#initialize' do
140
-
141
- include Nanoc3::TestHelpers
142
-
143
- it 'should merge default config' do
144
- site = Nanoc3::Site.new(:foo => 'bar')
145
- site.config[:foo].must_equal 'bar'
146
- site.config[:output_dir].must_equal 'output'
147
- end
148
-
149
- it 'should not raise under normal circumstances' do
150
- Nanoc3::Site.new({})
151
- end
152
-
153
- it 'should not raise for non-existant output directory' do
154
- Nanoc3::Site.new(:output_dir => 'fklsdhailfdjalghlkasdflhagjskajdf')
155
- end
156
-
157
- it 'should not raise for unknown data sources' do
158
- proc do
159
- Nanoc3::Site.new(:data_source => 'fklsdhailfdjalghlkasdflhagjskajdf')
160
- end
161
- end
162
-
163
- end
164
-
165
- describe 'Nanoc3::Site#load_data' do
166
-
167
- include Nanoc3::TestHelpers
168
-
169
- it 'should load the data source' do
170
- site = Nanoc3::Site.new({})
171
-
172
- # Mock data sources
173
- data_sources = [ mock, mock, mock ]
174
- data_sources.each { |ds| ds.expects(:use) }
175
- data_sources.each { |ds| ds.expects(:unuse) }
176
- site.stubs(:data_sources).returns(data_sources)
177
-
178
- # Mock load_* methods
179
- site.stubs(:load_code_snippets).with(false)
180
- site.stubs(:load_rules)
181
- site.stubs(:load_items)
182
- site.stubs(:load_layouts)
183
- site.expects(:link_everything_to_site)
184
- site.expects(:setup_child_parent_links).times(2)
185
- site.expects(:build_reps)
186
- site.expects(:route_reps)
187
-
188
- # Load data
189
- site.load_data
190
- end
191
-
192
- it 'should call the preprocessor' do
193
- site = Nanoc3::Site.new({})
194
- site.instance_eval do
195
- @items_loaded = true
196
- @layouts_loaded = true
197
- end
198
-
199
- # Mock data sources
200
- data_sources = [ mock, mock, mock ]
201
- data_sources.each { |ds| ds.expects(:use) }
202
- data_sources.each { |ds| ds.expects(:unuse) }
203
- site.stubs(:data_sources).returns(data_sources)
204
-
205
- # Mock load_* methods
206
- site.expects(:load_code_snippets).with(false)
207
- site.expects(:load_rules)
208
- site.expects(:load_items)
209
- site.expects(:load_layouts)
210
- site.expects(:link_everything_to_site)
211
- site.expects(:setup_child_parent_links).times(2)
212
- site.expects(:build_reps)
213
- site.expects(:route_reps)
214
-
215
- # Mock preprocessor
216
- preprocessor = lambda { |*x| }
217
- site.expects(:preprocessor).times(2).returns(preprocessor)
218
-
219
- # Load data
220
- site.load_data
221
- end
222
-
223
- it 'should call load_* methods' do
224
- site = Nanoc3::Site.new({})
225
-
226
- # Mock data sources
227
- data_sources = [ mock, mock, mock ]
228
- data_sources.each { |ds| ds.expects(:use) }
229
- data_sources.each { |ds| ds.expects(:unuse) }
230
- site.stubs(:data_sources).returns(data_sources)
231
-
232
- # Mock load_* methods
233
- site.expects(:load_code_snippets).with(false)
234
- site.expects(:load_rules)
235
- site.expects(:load_items)
236
- site.expects(:load_layouts)
237
- site.expects(:link_everything_to_site)
238
- site.expects(:setup_child_parent_links).times(2)
239
- site.expects(:build_reps)
240
- site.expects(:route_reps)
241
-
242
- # Load data
243
- site.load_data
244
- end
245
-
246
- it 'should not load data twice if not forced' do
247
- site = Nanoc3::Site.new({})
248
-
249
- # Mock data sources
250
- data_sources = [ mock, mock, mock ]
251
- data_sources.each { |ds| ds.expects(:use) }
252
- data_sources.each { |ds| ds.expects(:unuse) }
253
- site.stubs(:data_sources).returns(data_sources)
254
-
255
- # Mock load_* methods
256
- site.expects(:load_code_snippets).with(false).once
257
- site.expects(:load_rules)
258
- site.expects(:load_items).once
259
- site.expects(:load_layouts).once
260
- site.expects(:link_everything_to_site)
261
- site.expects(:setup_child_parent_links).times(2)
262
- site.expects(:build_reps).once
263
- site.expects(:route_reps).once
264
-
265
- # Load data twice
266
- site.load_data
267
- site.load_data
268
- end
269
-
270
- it 'should load data twice if forced' do
271
- site = Nanoc3::Site.new({})
272
-
273
- # Mock data sources
274
- data_sources = [ mock, mock, mock ]
275
- data_sources.each { |ds| ds.expects(:use).times(2) }
276
- data_sources.each { |ds| ds.expects(:unuse).times(2) }
277
- site.stubs(:data_sources).returns(data_sources)
278
-
279
- # Mock load_* methods
280
- site.expects(:load_code_snippets).with(true).times(2)
281
- site.expects(:load_rules).times(2)
282
- site.expects(:load_items).times(2)
283
- site.expects(:load_layouts).times(2)
284
- site.expects(:link_everything_to_site).times(2)
285
- site.expects(:setup_child_parent_links).times(2*2)
286
- site.expects(:build_reps).times(2)
287
- site.expects(:route_reps).times(2)
288
-
289
- # Load data twice
290
- site.load_data(true)
291
- site.load_data(true)
292
- end
293
-
294
- end
295
-
296
- describe 'Nanoc3::Site#code_snippets' do
297
-
298
- include Nanoc3::TestHelpers
299
-
300
- it 'should raise when data is not loaded yet' do
301
- site = Nanoc3::Site.new({})
302
- proc do
303
- site.code_snippets
304
- end.must_raise Nanoc3::Errors::DataNotYetAvailable
305
- end
306
-
307
- end
308
-
309
- describe 'Nanoc3::Site#items' do
310
-
311
- include Nanoc3::TestHelpers
312
-
313
- it 'should raise when data is not loaded yet' do
314
- site = Nanoc3::Site.new({})
315
- proc do
316
- site.items
317
- end.must_raise Nanoc3::Errors::DataNotYetAvailable
318
- end
319
-
320
- end
321
-
322
- describe 'Nanoc3::Site#layouts' do
323
-
324
- include Nanoc3::TestHelpers
325
-
326
- it 'should raise when data is not loaded yet' do
327
- site = Nanoc3::Site.new({})
328
- proc do
329
- site.layouts
330
- end.must_raise Nanoc3::Errors::DataNotYetAvailable
331
- end
332
-
333
- end
334
-
335
- describe 'Nanoc3::Site#compiler' do
336
-
337
- include Nanoc3::TestHelpers
338
-
339
- it 'should not raise under normal circumstances' do
340
- site = Nanoc3::Site.new({})
341
- site.compiler
342
- end
343
-
344
- end
345
-
346
- describe 'Nanoc3::Site#data_sources' do
347
-
348
- include Nanoc3::TestHelpers
349
-
350
- it 'should not raise for known data sources' do
351
- site = Nanoc3::Site.new({})
352
- site.data_sources
353
- end
354
-
355
- it 'should raise for unknown data sources' do
356
- proc do
357
- site = Nanoc3::Site.new(
358
- :data_sources => [
359
- { :type => 'fklsdhailfdjalghlkasdflhagjskajdf' }
360
- ]
361
- )
362
- site.data_sources
363
- end.must_raise Nanoc3::Errors::UnknownDataSource
364
- end
365
-
366
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::CLI::Commands::CompileTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_stub
10
- end
11
-
12
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::CLI::Commands::CreateItemTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_stub
10
- end
11
-
12
- end
@@ -1,28 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::CLI::Commands::CreateLayoutTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_can_compile_new_layout
10
- Nanoc3::CLI::Base.new.run([ 'create_site', 'foo' ])
11
-
12
- FileUtils.cd('foo') do
13
- # Create new layout
14
- Nanoc3::CLI::Base.new.run([ 'create_layout', 'moo' ])
15
-
16
- # Makes rules use new layout
17
- rules_raw = File.read('Rules')
18
- File.open('Rules', 'w') do |io|
19
- io.write rules_raw.sub("layout 'default'", "layout 'moo'")
20
- end
21
-
22
- site = Nanoc3::Site.new('.')
23
- site.load_data
24
- site.compiler.run
25
- end
26
- end
27
-
28
- end
@@ -1,24 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::CLI::Commands::CreateSiteTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_create_site_with_existing_name
10
- Nanoc3::CLI::Base.new.run([ 'create_site', 'foo' ])
11
- assert_raises(SystemExit) { Nanoc3::CLI::Base.new.run([ 'create_site', 'foo' ]) }
12
- end
13
-
14
- def test_can_compile_new_site
15
- Nanoc3::CLI::Base.new.run([ 'create_site', 'foo' ])
16
-
17
- FileUtils.cd('foo') do
18
- site = Nanoc3::Site.new('.')
19
- site.load_data
20
- site.compiler.run
21
- end
22
- end
23
-
24
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::CLI::Commands::HelpTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_stub
10
- end
11
-
12
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::CLI::Commands::InfoTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_stub
10
- end
11
-
12
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::CLI::Commands::UpdateTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_stub
10
- end
11
-
12
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::CLI::LoggerTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- def test_stub
10
- end
11
-
12
- end