nanoc-filesystem-i18n 0.1.0 → 0.2.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.
data/Rakefile DELETED
@@ -1,30 +0,0 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
3
-
4
- require 'nanoc3'
5
-
6
- require 'minitest/unit'
7
-
8
- desc 'Run all tests'
9
- task :test do
10
- ENV['QUIET'] ||= 'true'
11
-
12
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/test'))
13
-
14
- MiniTest::Unit.autorun
15
-
16
- test_files = Dir['test/**/*_spec.rb'] + Dir['test/**/test_*.rb']
17
- test_files.each { |f| require f }
18
- end
19
-
20
- task :default => :test
21
-
22
- begin
23
- require 'nanoc3'
24
- require 'yard'
25
- YARD::Rake::YardocTask.new
26
- rescue LoadError
27
- task :yardoc do
28
- abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
29
- end
30
- end
@@ -1,12 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'nanoc3'
4
-
5
- module Nanoc3
6
- module DataSources
7
- class FilesystemI18n < Nanoc3::DataSource
8
- Version = '0.1.0'
9
- end
10
- end
11
- end
12
-
@@ -1,90 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # Load unit testing stuff
4
- begin
5
- require 'minitest/unit'
6
- require 'minitest/spec'
7
- require 'minitest/mock'
8
- require 'mocha'
9
- rescue => e
10
- $stderr.puts "To run the nanoc unit tests, you need minitest and mocha."
11
- raise e
12
- end
13
-
14
- # Load nanoc
15
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
16
- require 'nanoc3'
17
- require 'nanoc3/cli'
18
- require 'nanoc3/tasks'
19
- require 'nanoc3/data_sources/filesystem_i18n'
20
-
21
- # Load miscellaneous requirements
22
- require 'stringio'
23
-
24
- module Nanoc3::TestHelpers
25
-
26
- def if_have(*libs)
27
- libs.each do |lib|
28
- begin
29
- require lib
30
- rescue LoadError
31
- skip "requiring #{lib} failed"
32
- return
33
- end
34
- end
35
-
36
- yield
37
- end
38
-
39
- def setup
40
- # Clean up
41
- GC.start
42
-
43
- # Go quiet
44
- unless ENV['QUIET'] == 'false'
45
- $stdout = StringIO.new
46
- $stderr = StringIO.new
47
- end
48
-
49
- # Enter tmp
50
- FileUtils.mkdir_p('tmp')
51
- FileUtils.cd('tmp')
52
- end
53
-
54
- def teardown
55
- # Exit tmp
56
- FileUtils.cd('..')
57
- FileUtils.rm_rf('tmp')
58
-
59
- # Go unquiet
60
- unless ENV['QUIET'] == 'false'
61
- $stdout = STDOUT
62
- $stderr = STDERR
63
- end
64
- end
65
-
66
- # Adapted from http://github.com/lsegal/yard-examples/tree/master/doctest
67
- def assert_examples_correct(object)
68
- P(object).tags(:example).each do |example|
69
- begin
70
- # Get input and output
71
- parts = example.text.split(/# ?=>/).map { |s| s.strip }
72
- code = parts[0].strip
73
- expected_out_raw = parts[1].strip
74
-
75
- # Evaluate
76
- expected_out = eval(parts[1])
77
- actual_out = instance_eval("#{code}")
78
- rescue Exception => e
79
- e.message << " (code: #{code}; expected output: #{expected_out_raw})"
80
- raise e
81
- end
82
-
83
- assert_equal expected_out, actual_out,
84
- "Incorrect example: #{code}"
85
- end
86
- end
87
-
88
- end
89
-
90
- MiniTest::Unit.autorun
@@ -1,347 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'test/helper'
4
-
5
- class Nanoc3::DataSources::FilesystemTest < MiniTest::Unit::TestCase
6
-
7
- include Nanoc3::TestHelpers
8
-
9
- class SampleFilesystemDataSource < Nanoc3::DataSources::FilesystemI18n
10
- end
11
-
12
- def test_setup
13
- # Create data source
14
- data_source = SampleFilesystemDataSource.new(nil, nil, nil, nil)
15
-
16
- # Remove files to make sure they are recreated
17
- FileUtils.rm_rf('content')
18
- FileUtils.rm_rf('layouts/default')
19
- FileUtils.rm_rf('lib/default.rb')
20
-
21
- # Mock VCS
22
- vcs = mock
23
- vcs.expects(:add).times(3) # One time for each directory
24
- data_source.vcs = vcs
25
-
26
- # Recreate files
27
- data_source.setup
28
-
29
- # Ensure essential files have been recreated
30
- assert(File.directory?('content/'))
31
- assert(File.directory?('layouts/'))
32
- assert(File.directory?('lib/'))
33
-
34
- # Ensure no non-essential files have been recreated
35
- assert(!File.file?('content/index.html'))
36
- assert(!File.file?('layouts/default.html'))
37
- assert(!File.file?('lib/default.rb'))
38
- end
39
-
40
- def test_items
41
- # Create data source
42
- data_source = SampleFilesystemDataSource.new(nil, nil, nil, nil)
43
-
44
- # Check
45
- data_source.expects(:load_objects).with('content', 'item', Nanoc3::Item)
46
- data_source.items
47
- end
48
-
49
- def test_layouts
50
- # Create data source
51
- data_source = SampleFilesystemDataSource.new(nil, nil, nil, nil)
52
-
53
- # Check
54
- data_source.expects(:load_objects).with('layouts', 'layout', Nanoc3::Layout)
55
- data_source.layouts
56
- end
57
-
58
- def test_create_item
59
- # Create data source
60
- data_source = SampleFilesystemDataSource.new(nil, nil, nil, nil)
61
-
62
- # Check
63
- data_source.expects(:create_object).with('content', 'the content', 'the attributes', 'the identifier', {})
64
- data_source.create_item('the content', 'the attributes', 'the identifier')
65
- end
66
-
67
- def test_create_layout
68
- # Create data source
69
- data_source = SampleFilesystemDataSource.new(nil, nil, nil, nil)
70
-
71
- # Check
72
- data_source.expects(:create_object).with('layouts', 'the content', 'the attributes', 'the identifier', {})
73
- data_source.create_layout('the content', 'the attributes', 'the identifier')
74
- end
75
-
76
- def test_all_split_files_in_allowing_periods_in_identifiers
77
- # Create data source
78
- data_source = Nanoc3::DataSources::FilesystemCompact.new(nil, nil, nil, { :allow_periods_in_identifiers => true })
79
-
80
- # Write sample files
81
- FileUtils.mkdir_p('foo')
82
- %w( foo.html foo.yaml bar.entry.html foo/qux.yaml ).each do |filename|
83
- File.open(filename, 'w') { |io| io.write('test') }
84
- end
85
-
86
- # Write stray files
87
- %w( foo.html~ foo.yaml.orig bar.entry.html.bak ).each do |filename|
88
- File.open(filename, 'w') { |io| io.write('test') }
89
- end
90
-
91
- # Get all files
92
- output_expected = {
93
- './foo' => [ 'yaml', 'html' ],
94
- './bar.entry' => [ nil, 'html' ],
95
- './foo/qux' => [ 'yaml', nil ]
96
- }
97
- output_actual = data_source.send :all_split_files_in, '.'
98
-
99
- # Check
100
- assert_equal output_expected, output_actual
101
- end
102
-
103
- def test_all_split_files_in_disallowing_periods_in_identifiers
104
- # Create data source
105
- data_source = Nanoc3::DataSources::FilesystemCompact.new(nil, nil, nil, nil)
106
-
107
- # Write sample files
108
- FileUtils.mkdir_p('foo')
109
- %w( foo.html foo.yaml bar.html.erb foo/qux.yaml ).each do |filename|
110
- File.open(filename, 'w') { |io| io.write('test') }
111
- end
112
-
113
- # Write stray files
114
- %w( foo.html~ foo.yaml.orig bar.entry.html.bak ).each do |filename|
115
- File.open(filename, 'w') { |io| io.write('test') }
116
- end
117
-
118
- # Get all files
119
- output_expected = {
120
- './foo' => [ 'yaml', 'html' ],
121
- './bar' => [ nil, 'html.erb' ],
122
- './foo/qux' => [ 'yaml', nil ]
123
- }
124
- output_actual = data_source.send :all_split_files_in, '.'
125
-
126
- # Check
127
- assert_equal output_expected, output_actual
128
- end
129
-
130
- def test_all_split_files_in_with_multiple_content_files
131
- # Create data source
132
- data_source = Nanoc3::DataSources::FilesystemCompact.new(nil, nil, nil, nil)
133
-
134
- # Write sample files
135
- %w( foo.html foo.xhtml foo.txt foo.yaml bar.html qux.yaml ).each do |filename|
136
- File.open(filename, 'w') { |io| io.write('test') }
137
- end
138
-
139
- # Check
140
- assert_raises RuntimeError do
141
- data_source.send :all_split_files_in, '.'
142
- end
143
- end
144
-
145
- def test_basename_of_allowing_periods_in_identifiers
146
- # Create data source
147
- data_source = Nanoc3::DataSources::FilesystemCompact.new(nil, nil, nil, { :allow_periods_in_identifiers => true })
148
-
149
- # Get input and expected output
150
- expected = {
151
- '/' => '/',
152
- '/foo' => '/foo',
153
- '/foo.html' => '/foo',
154
- '/foo.xyz.html' => '/foo.xyz',
155
- '/foo/' => '/foo/',
156
- '/foo.xyz/' => '/foo.xyz/',
157
- '/foo/bar' => '/foo/bar',
158
- '/foo/bar.html' => '/foo/bar',
159
- '/foo/bar.xyz.html' => '/foo/bar.xyz',
160
- '/foo/bar/' => '/foo/bar/',
161
- '/foo/bar.xyz/' => '/foo/bar.xyz/',
162
- '/foo.xyz/bar.xyz/' => '/foo.xyz/bar.xyz/'
163
- }
164
-
165
- # Check
166
- expected.each_pair do |input, expected_output|
167
- actual_output = data_source.send(:basename_of, input)
168
- assert_equal(
169
- expected_output, actual_output,
170
- "basename_of(#{input.inspect}) should equal #{expected_output.inspect}, not #{actual_output.inspect}"
171
- )
172
- end
173
- end
174
-
175
- def test_basename_of_disallowing_periods_in_identifiers
176
- # Create data source
177
- data_source = Nanoc3::DataSources::FilesystemCompact.new(nil, nil, nil, nil)
178
-
179
- # Get input and expected output
180
- expected = {
181
- '/' => '/',
182
- '/foo' => '/foo',
183
- '/foo.html' => '/foo',
184
- '/foo.xyz.html' => '/foo',
185
- '/foo/' => '/foo/',
186
- '/foo.xyz/' => '/foo.xyz/',
187
- '/foo/bar' => '/foo/bar',
188
- '/foo/bar.html' => '/foo/bar',
189
- '/foo/bar.xyz.html' => '/foo/bar',
190
- '/foo/bar/' => '/foo/bar/',
191
- '/foo/bar.xyz/' => '/foo/bar.xyz/',
192
- '/foo.xyz/bar.xyz/' => '/foo.xyz/bar.xyz/'
193
- }
194
-
195
- # Check
196
- expected.each_pair do |input, expected_output|
197
- actual_output = data_source.send(:basename_of, input)
198
- assert_equal(
199
- expected_output, actual_output,
200
- "basename_of(#{input.inspect}) should equal #{expected_output.inspect}, not #{actual_output.inspect}"
201
- )
202
- end
203
- end
204
-
205
- def test_ext_of_allowing_periods_in_identifiers
206
- # Create data source
207
- data_source = Nanoc3::DataSources::FilesystemCompact.new(nil, nil, nil, { :allow_periods_in_identifiers => true })
208
-
209
- # Get input and expected output
210
- expected = {
211
- '/' => '',
212
- '/foo' => '',
213
- '/foo.html' => '.html',
214
- '/foo.xyz.html' => '.html',
215
- '/foo/' => '',
216
- '/foo.xyz/' => '',
217
- '/foo/bar' => '',
218
- '/foo/bar.html' => '.html',
219
- '/foo/bar.xyz.html' => '.html',
220
- '/foo/bar/' => '',
221
- '/foo/bar.xyz/' => '',
222
- '/foo.xyz/bar.xyz/' => ''
223
- }
224
-
225
- # Check
226
- expected.each_pair do |input, expected_output|
227
- actual_output = data_source.send(:ext_of, input)
228
- assert_equal(
229
- expected_output, actual_output,
230
- "basename_of(#{input.inspect}) should equal #{expected_output.inspect}, not #{actual_output.inspect}"
231
- )
232
- end
233
- end
234
-
235
- def test_ext_of_disallowing_periods_in_identifiers
236
- # Create data source
237
- data_source = Nanoc3::DataSources::FilesystemCompact.new(nil, nil, nil, nil)
238
-
239
- # Get input and expected output
240
- expected = {
241
- '/' => '',
242
- '/foo' => '',
243
- '/foo.html' => '.html',
244
- '/foo.xyz.html' => '.xyz.html',
245
- '/foo/' => '',
246
- '/foo.xyz/' => '',
247
- '/foo/bar' => '',
248
- '/foo/bar.html' => '.html',
249
- '/foo/bar.xyz.html' => '.xyz.html',
250
- '/foo/bar/' => '',
251
- '/foo/bar.xyz/' => '',
252
- '/foo.xyz/bar.xyz/' => ''
253
- }
254
-
255
- # Check
256
- expected.each_pair do |input, expected_output|
257
- actual_output = data_source.send(:ext_of, input)
258
- assert_equal(
259
- expected_output, actual_output,
260
- "basename_of(#{input.inspect}) should equal #{expected_output.inspect}, not #{actual_output.inspect}"
261
- )
262
- end
263
- end
264
-
265
- def test_parse_embedded_invalid_2
266
- # Create a file
267
- File.open('test.html', 'w') do |io|
268
- io.write "-----\n"
269
- io.write "blah blah\n"
270
- end
271
-
272
- # Create data source
273
- data_source = Nanoc3::DataSources::FilesystemCombined.new(nil, nil, nil, nil)
274
-
275
- # Parse it
276
- assert_raises(RuntimeError) do
277
- data_source.instance_eval { parse('test.html', nil, 'foobar') }
278
- end
279
- end
280
-
281
- def test_parse_embedded_full_meta
282
- # Create a file
283
- File.open('test.html', 'w') do |io|
284
- io.write "-----\n"
285
- io.write "foo: bar\n"
286
- io.write "-----\n"
287
- io.write "blah blah\n"
288
- end
289
-
290
- # Create data source
291
- data_source = Nanoc3::DataSources::FilesystemCombined.new(nil, nil, nil, nil)
292
-
293
- # Parse it
294
- result = data_source.instance_eval { parse('test.html', nil, 'foobar') }
295
- assert_equal({ 'foo' => 'bar' }, result[0])
296
- assert_equal('blah blah', result[1])
297
- end
298
-
299
- def test_parse_embedded_empty_meta
300
- # Create a file
301
- File.open('test.html', 'w') do |io|
302
- io.write "-----\n"
303
- io.write "-----\n"
304
- io.write "blah blah\n"
305
- end
306
-
307
- # Create data source
308
- data_source = Nanoc3::DataSources::FilesystemCombined.new(nil, nil, nil, nil)
309
-
310
- # Parse it
311
- result = data_source.instance_eval { parse('test.html', nil, 'foobar') }
312
- assert_equal({}, result[0])
313
- assert_equal('blah blah', result[1])
314
- end
315
-
316
- def test_parse_embedded_no_meta
317
- content = "blah\n" \
318
- "blah blah blah\n" \
319
- "blah blah\n"
320
-
321
- # Create a file
322
- File.open('test.html', 'w') { |io| io.write(content) }
323
-
324
- # Create data source
325
- data_source = Nanoc3::DataSources::FilesystemCombined.new(nil, nil, nil, nil)
326
-
327
- # Parse it
328
- result = data_source.instance_eval { parse('test.html', nil, 'foobar') }
329
- assert_equal({}, result[0])
330
- assert_equal(content, result[1])
331
- end
332
-
333
- def test_parse_external
334
- # Create a file
335
- File.open('test.html', 'w') { |io| io.write("blah blah") }
336
- File.open('test.yaml', 'w') { |io| io.write("foo: bar") }
337
-
338
- # Create data source
339
- data_source = Nanoc3::DataSources::FilesystemCombined.new(nil, nil, nil, nil)
340
-
341
- # Parse it
342
- result = data_source.instance_eval { parse('test.html', 'test.yaml', 'foobar') }
343
- assert_equal({ "foo" => "bar"}, result[0])
344
- assert_equal("blah blah", result[1])
345
- end
346
-
347
- end