nanoc 4.0.0b1 → 4.0.0b2
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/NEWS.md +26 -2
- data/README.md +1 -1
- data/lib/nanoc/base.rb +3 -1
- data/lib/nanoc/base/checksummer.rb +1 -3
- data/lib/nanoc/base/compilation/compiler.rb +3 -3
- data/lib/nanoc/base/compilation/compiler_dsl.rb +3 -3
- data/lib/nanoc/base/compilation/item_rep_proxy.rb +1 -1
- data/lib/nanoc/base/core_ext/array.rb +0 -11
- data/lib/nanoc/base/core_ext/hash.rb +0 -11
- data/lib/nanoc/base/identifiable_collection.rb +81 -0
- data/lib/nanoc/base/source_data/identifier.rb +9 -9
- data/lib/nanoc/base/source_data/site.rb +7 -5
- data/lib/nanoc/base/views/identifiable_collection.rb +78 -0
- data/lib/nanoc/base/views/item_collection.rb +1 -86
- data/lib/nanoc/base/views/layout_collection.rb +1 -57
- data/lib/nanoc/base/views/mutable_identifiable_collection.rb +17 -0
- data/lib/nanoc/base/views/mutable_item_collection.rb +2 -14
- data/lib/nanoc/base/views/mutable_layout_collection.rb +2 -14
- data/lib/nanoc/cli/commands/create-site.rb +44 -40
- data/lib/nanoc/data_sources/filesystem.rb +1 -1
- data/lib/nanoc/data_sources/filesystem_unified.rb +3 -3
- data/lib/nanoc/data_sources/filesystem_verbose.rb +3 -3
- data/lib/nanoc/filters/erb.rb +2 -2
- data/lib/nanoc/filters/rdiscount.rb +1 -1
- data/lib/nanoc/filters/redcarpet.rb +1 -1
- data/lib/nanoc/version.rb +1 -1
- data/tasks/test.rake +1 -0
- data/test/base/core_ext/array_spec.rb +0 -8
- data/test/base/core_ext/hash_spec.rb +0 -26
- data/test/base/test_compiler.rb +1 -1
- data/test/base/test_compiler_dsl.rb +13 -10
- data/test/base/test_item.rb +0 -6
- data/test/base/test_item_array.rb +8 -276
- data/test/base/test_layout.rb +1 -5
- data/test/base/test_outdatedness_checker.rb +9 -2
- data/test/base/test_site.rb +5 -5
- data/test/cli/commands/test_compile.rb +14 -0
- data/test/cli/commands/test_create_site.rb +40 -2
- data/test/cli/commands/test_prune.rb +19 -4
- data/test/data_sources/test_filesystem.rb +1 -1
- data/test/data_sources/test_filesystem_unified.rb +6 -6
- data/test/extra/checking/checks/test_stale.rb +2 -2
- data/test/helper.rb +8 -1
- data/test/helpers/test_blogging.rb +0 -235
- data/test/helpers/test_breadcrumbs.rb +31 -23
- data/test/helpers/test_xml_sitemap.rb +38 -29
- metadata +5 -3
- data/lib/nanoc/base/source_data/item_array.rb +0 -86
data/test/base/test_layout.rb
CHANGED
@@ -3,12 +3,8 @@
|
|
3
3
|
class Nanoc::Int::LayoutTest < Nanoc::TestCase
|
4
4
|
def test_initialize
|
5
5
|
# Make sure attributes are cleaned
|
6
|
-
layout = Nanoc::Int::Layout.new('content', { 'foo' => 'bar' }, '/foo
|
6
|
+
layout = Nanoc::Int::Layout.new('content', { 'foo' => 'bar' }, '/foo')
|
7
7
|
assert_equal({ foo: 'bar' }, layout.attributes)
|
8
|
-
|
9
|
-
# Make sure identifier is cleaned
|
10
|
-
layout = Nanoc::Int::Layout.new('content', { 'foo' => 'bar' }, 'foo')
|
11
|
-
assert_equal(Nanoc::Identifier.new('/foo/'), layout.identifier)
|
12
8
|
end
|
13
9
|
|
14
10
|
def test_lookup_with_known_attribute
|
@@ -13,7 +13,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
13
13
|
# Check
|
14
14
|
with_site(name: 'foo') do |site|
|
15
15
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
16
|
-
rep = site.items[
|
16
|
+
rep = site.items['/'].reps[0]
|
17
17
|
assert_nil outdatedness_checker.outdatedness_reason_for(rep)
|
18
18
|
end
|
19
19
|
end
|
@@ -281,7 +281,14 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
281
281
|
|
282
282
|
# Change code
|
283
283
|
FileUtils.cd('foo') do
|
284
|
-
File.open('nanoc.yaml', 'w')
|
284
|
+
File.open('nanoc.yaml', 'w') do |io|
|
285
|
+
io << 'awesome: true' << "\n"
|
286
|
+
io << 'string_pattern_type: legacy' << "\n"
|
287
|
+
io << 'data_sources:' << "\n"
|
288
|
+
io << ' -' << "\n"
|
289
|
+
io << ' type: filesystem_unified' << "\n"
|
290
|
+
io << ' identifier_type: legacy' << "\n"
|
291
|
+
end
|
285
292
|
end
|
286
293
|
|
287
294
|
# Check
|
data/test/base/test_site.rb
CHANGED
@@ -153,8 +153,8 @@ EOF
|
|
153
153
|
site.load
|
154
154
|
|
155
155
|
# Check
|
156
|
-
assert_equal 1,
|
157
|
-
|
156
|
+
assert_equal 1, site.data_sources.size
|
157
|
+
refute_nil site.items['/foo/']
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
@@ -185,7 +185,7 @@ EOF
|
|
185
185
|
FileUtils.mkdir_p('content/parent')
|
186
186
|
FileUtils.mkdir_p('content/parent/bar')
|
187
187
|
|
188
|
-
data = File.read('nanoc.yaml').sub('
|
188
|
+
data = File.read('nanoc.yaml').sub('identifier_type: full', 'identifier_type: legacy')
|
189
189
|
File.open('nanoc.yaml', 'w') { |io| io << data }
|
190
190
|
|
191
191
|
File.open('content/parent.md', 'w') { |io| io << 'asdf' }
|
@@ -203,8 +203,8 @@ EOF
|
|
203
203
|
qux = site.items.find { |i| i.identifier == '/parent/bar/qux/' }
|
204
204
|
|
205
205
|
assert_equal Set.new([parent, style]), Set.new(root.children)
|
206
|
-
assert_equal Set.new([foo, bar]),
|
207
|
-
assert_equal Set.new([qux]),
|
206
|
+
assert_equal Set.new([foo, bar]), Set.new(parent.children)
|
207
|
+
assert_equal Set.new([qux]), Set.new(bar.children)
|
208
208
|
|
209
209
|
assert_equal nil, root.parent
|
210
210
|
assert_equal root, parent.parent
|
@@ -49,6 +49,12 @@ class Nanoc::CLI::Commands::CompileTest < Nanoc::TestCase
|
|
49
49
|
io.write "layout '*', :erb\n"
|
50
50
|
end
|
51
51
|
|
52
|
+
File.open('nanoc.yaml', 'w') do |io|
|
53
|
+
io.write "string_pattern_type: legacy\n"
|
54
|
+
io.write "prune:\n"
|
55
|
+
io.write " auto_prune: false\n"
|
56
|
+
end
|
57
|
+
|
52
58
|
File.open('output/stray.html', 'w') do |io|
|
53
59
|
io.write 'I am a stray file and I am about to be deleted!'
|
54
60
|
end
|
@@ -58,6 +64,7 @@ class Nanoc::CLI::Commands::CompileTest < Nanoc::TestCase
|
|
58
64
|
assert File.file?('output/stray.html')
|
59
65
|
|
60
66
|
File.open('nanoc.yaml', 'w') do |io|
|
67
|
+
io.write "string_pattern_type: legacy\n"
|
61
68
|
io.write "prune:\n"
|
62
69
|
io.write " auto_prune: true\n"
|
63
70
|
end
|
@@ -92,6 +99,12 @@ class Nanoc::CLI::Commands::CompileTest < Nanoc::TestCase
|
|
92
99
|
|
93
100
|
Dir.mkdir('output/excluded_dir')
|
94
101
|
|
102
|
+
File.open('nanoc.yaml', 'w') do |io|
|
103
|
+
io.write "string_pattern_type: legacy\n"
|
104
|
+
io.write "prune:\n"
|
105
|
+
io.write " auto_prune: false\n"
|
106
|
+
end
|
107
|
+
|
95
108
|
File.open('output/stray.html', 'w') do |io|
|
96
109
|
io.write 'I am a stray file and I am about to be deleted!'
|
97
110
|
end
|
@@ -101,6 +114,7 @@ class Nanoc::CLI::Commands::CompileTest < Nanoc::TestCase
|
|
101
114
|
assert File.file?('output/stray.html')
|
102
115
|
|
103
116
|
File.open('nanoc.yaml', 'w') do |io|
|
117
|
+
io.write "string_pattern_type: legacy\n"
|
104
118
|
io.write "prune:\n"
|
105
119
|
io.write " auto_prune: true\n"
|
106
120
|
io.write " exclude: [ 'excluded_dir' ]\n"
|
@@ -39,6 +39,30 @@ class Nanoc::CLI::Commands::CreateSiteTest < Nanoc::TestCase
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
def test_can_compile_site_in_nonempty_directory
|
43
|
+
FileUtils.mkdir('foo')
|
44
|
+
FileUtils.touch(File.join('foo', 'SomeFile.txt'))
|
45
|
+
Nanoc::CLI.run %w( create_site foo --force )
|
46
|
+
|
47
|
+
FileUtils.cd('foo') do
|
48
|
+
site = Nanoc::Int::Site.new('.')
|
49
|
+
site.compile
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_compiled_site_output
|
54
|
+
FileUtils.mkdir('foo')
|
55
|
+
FileUtils.touch(File.join('foo', 'SomeFile.txt'))
|
56
|
+
Nanoc::CLI.run %w( create_site foo --force )
|
57
|
+
|
58
|
+
FileUtils.cd('foo') do
|
59
|
+
site = Nanoc::Int::Site.new('.')
|
60
|
+
site.compile
|
61
|
+
|
62
|
+
assert File.file?('output/index.html')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
42
66
|
def test_default_encoding
|
43
67
|
unless defined?(Encoding)
|
44
68
|
skip 'No Encoding class'
|
@@ -61,11 +85,11 @@ class Nanoc::CLI::Commands::CreateSiteTest < Nanoc::TestCase
|
|
61
85
|
|
62
86
|
# Try with encoding = specific
|
63
87
|
File.open('nanoc.yaml', 'w') do |io|
|
64
|
-
io.write("
|
88
|
+
io.write("string_pattern_type: glob\n")
|
65
89
|
io.write("data_sources:\n")
|
66
90
|
io.write(" -\n")
|
67
91
|
io.write(" type: filesystem_unified\n")
|
68
|
-
io.write("
|
92
|
+
io.write(" identifier_type: full\n")
|
69
93
|
end
|
70
94
|
site = Nanoc::Int::Site.new('.')
|
71
95
|
site.compile
|
@@ -84,4 +108,18 @@ class Nanoc::CLI::Commands::CreateSiteTest < Nanoc::TestCase
|
|
84
108
|
assert_match(/\/stylesheet.css/, File.read('output/index.html'))
|
85
109
|
end
|
86
110
|
end
|
111
|
+
|
112
|
+
def test_new_site_prunes_by_default
|
113
|
+
FileUtils.mkdir('foo')
|
114
|
+
FileUtils.touch(File.join('foo', 'SomeFile.txt'))
|
115
|
+
Nanoc::CLI.run %w( create_site foo --force )
|
116
|
+
|
117
|
+
FileUtils.cd('foo') do
|
118
|
+
File.write('output/blah.txt', 'stuff')
|
119
|
+
|
120
|
+
Nanoc::CLI.run %w( compile )
|
121
|
+
|
122
|
+
refute File.file?('output/blah.txt')
|
123
|
+
end
|
124
|
+
end
|
87
125
|
end
|
@@ -4,7 +4,7 @@ class Nanoc::CLI::Commands::PruneTest < Nanoc::TestCase
|
|
4
4
|
def test_run_without_yes
|
5
5
|
with_site do |_site|
|
6
6
|
# Set output dir
|
7
|
-
File.open('nanoc.yaml', 'w') { |io| io.write
|
7
|
+
File.open('nanoc.yaml', 'w') { |io| io.write "output_dir: output2\nstring_pattern_type: legacy\n" }
|
8
8
|
FileUtils.mkdir_p('output2')
|
9
9
|
|
10
10
|
# Create source files
|
@@ -26,7 +26,14 @@ class Nanoc::CLI::Commands::PruneTest < Nanoc::TestCase
|
|
26
26
|
def test_run_with_yes
|
27
27
|
with_site do |_site|
|
28
28
|
# Set output dir
|
29
|
-
File.open('nanoc.yaml', 'w')
|
29
|
+
File.open('nanoc.yaml', 'w') do |io|
|
30
|
+
io << 'output_dir: output2' << "\n"
|
31
|
+
io << 'string_pattern_type: legacy' << "\n"
|
32
|
+
io << 'data_sources:' << "\n"
|
33
|
+
io << ' -' << "\n"
|
34
|
+
io << ' type: filesystem_unified' << "\n"
|
35
|
+
io << ' identifier_type: legacy' << "\n"
|
36
|
+
end
|
30
37
|
FileUtils.mkdir_p('output2')
|
31
38
|
|
32
39
|
# Create source files
|
@@ -46,7 +53,7 @@ class Nanoc::CLI::Commands::PruneTest < Nanoc::TestCase
|
|
46
53
|
def test_run_with_dry_run
|
47
54
|
with_site do |_site|
|
48
55
|
# Set output dir
|
49
|
-
File.open('nanoc.yaml', 'w') { |io| io.write
|
56
|
+
File.open('nanoc.yaml', 'w') { |io| io.write "string_pattern_type: legacy\noutput_dir: output2" }
|
50
57
|
FileUtils.mkdir_p('output2')
|
51
58
|
|
52
59
|
# Create source files
|
@@ -66,7 +73,15 @@ class Nanoc::CLI::Commands::PruneTest < Nanoc::TestCase
|
|
66
73
|
def test_run_with_exclude
|
67
74
|
with_site do |_site|
|
68
75
|
# Set output dir
|
69
|
-
File.open('nanoc.yaml', 'w')
|
76
|
+
File.open('nanoc.yaml', 'w') do |io|
|
77
|
+
io << 'prune:' << "\n"
|
78
|
+
io << ' exclude: [ "good-dir", "good-file.html" ]' << "\n"
|
79
|
+
io << 'string_pattern_type: legacy' << "\n"
|
80
|
+
io << 'data_sources:' << "\n"
|
81
|
+
io << ' -' << "\n"
|
82
|
+
io << ' type: filesystem_unified' << "\n"
|
83
|
+
io << ' identifier_type: legacy' << "\n"
|
84
|
+
end
|
70
85
|
FileUtils.mkdir_p('output')
|
71
86
|
|
72
87
|
# Create source files
|
@@ -98,7 +98,7 @@ class Nanoc::DataSources::FilesystemTest < Nanoc::TestCase
|
|
98
98
|
|
99
99
|
def test_all_split_files_in_with_same_extensions
|
100
100
|
# Create data source
|
101
|
-
config = {
|
101
|
+
config = { identifier_type: 'full' }
|
102
102
|
data_source = Nanoc::DataSources::FilesystemUnified.new(nil, nil, nil, config)
|
103
103
|
|
104
104
|
# Write sample files
|
@@ -75,7 +75,7 @@ class Nanoc::DataSources::FilesystemUnifiedTest < Nanoc::TestCase
|
|
75
75
|
|
76
76
|
def test_load_objects_with_same_extensions
|
77
77
|
# Create data source
|
78
|
-
data_source = new_data_source({
|
78
|
+
data_source = new_data_source({ identifier_type: 'full' })
|
79
79
|
|
80
80
|
# Create a fake class
|
81
81
|
klass = Class.new do
|
@@ -133,14 +133,14 @@ class Nanoc::DataSources::FilesystemUnifiedTest < Nanoc::TestCase
|
|
133
133
|
|
134
134
|
def test_identifier_for_filename_with_full_style_identifier
|
135
135
|
# Create data source
|
136
|
-
data_source = new_data_source({
|
136
|
+
data_source = new_data_source({ identifier_type: 'full' })
|
137
137
|
|
138
138
|
# Get input and expected output
|
139
139
|
expected = {
|
140
|
-
'/foo' => Nanoc::Identifier.new('/foo',
|
141
|
-
'/foo.html' => Nanoc::Identifier.new('/foo.html',
|
142
|
-
'/foo/index.html' => Nanoc::Identifier.new('/foo/index.html',
|
143
|
-
'/foo.html.erb' => Nanoc::Identifier.new('/foo.html.erb',
|
140
|
+
'/foo' => Nanoc::Identifier.new('/foo', type: :full),
|
141
|
+
'/foo.html' => Nanoc::Identifier.new('/foo.html', type: :full),
|
142
|
+
'/foo/index.html' => Nanoc::Identifier.new('/foo/index.html', type: :full),
|
143
|
+
'/foo.html.erb' => Nanoc::Identifier.new('/foo.html.erb', type: :full),
|
144
144
|
}
|
145
145
|
|
146
146
|
# Check
|
@@ -47,7 +47,7 @@ class Nanoc::Extra::Checking::Checks::StaleTest < Nanoc::TestCase
|
|
47
47
|
assert Dir['content/*'].empty?
|
48
48
|
assert Dir['output/*'].empty?
|
49
49
|
|
50
|
-
File.open('nanoc.yaml', 'w') { |io| io.write "
|
50
|
+
File.open('nanoc.yaml', 'w') { |io| io.write "string_pattern_type: legacy\nprune:\n exclude: [ 'excluded.html' ]" }
|
51
51
|
File.open('content/index.html', 'w') { |io| io.write('stuff') }
|
52
52
|
File.open('output/excluded.html', 'w') { |io| io.write('stuff') }
|
53
53
|
assert calc_issues.empty?
|
@@ -59,7 +59,7 @@ class Nanoc::Extra::Checking::Checks::StaleTest < Nanoc::TestCase
|
|
59
59
|
assert Dir['content/*'].empty?
|
60
60
|
assert Dir['output/*'].empty?
|
61
61
|
|
62
|
-
File.open('nanoc.yaml', 'w') { |io| io.write "
|
62
|
+
File.open('nanoc.yaml', 'w') { |io| io.write "string_pattern_type: legacy\nprune:\n blah: meh" }
|
63
63
|
File.open('content/index.html', 'w') { |io| io.write('stuff') }
|
64
64
|
File.open('output/excluded.html', 'w') { |io| io.write('stuff') }
|
65
65
|
refute calc_issues.empty?
|
data/test/helper.rb
CHANGED
@@ -103,7 +103,14 @@ EOS
|
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
|
-
File.open('nanoc.yaml', 'w')
|
106
|
+
File.open('nanoc.yaml', 'w') do |io|
|
107
|
+
io << 'string_pattern_type: legacy' << "\n"
|
108
|
+
io << 'data_sources:' << "\n"
|
109
|
+
io << ' -' << "\n"
|
110
|
+
io << ' type: filesystem_unified' << "\n"
|
111
|
+
io << ' identifier_type: legacy' << "\n"
|
112
|
+
end
|
113
|
+
|
107
114
|
File.open('Rules', 'w') { |io| io.write(rules_content) }
|
108
115
|
end
|
109
116
|
end
|
@@ -26,64 +26,6 @@ class Nanoc::Helpers::BloggingTest < Nanoc::TestCase
|
|
26
26
|
item
|
27
27
|
end
|
28
28
|
|
29
|
-
def test_articles
|
30
|
-
# Create items
|
31
|
-
@items = [
|
32
|
-
Nanoc::Int::Item.new(
|
33
|
-
'blah',
|
34
|
-
{ kind: 'item' },
|
35
|
-
'/0/'
|
36
|
-
),
|
37
|
-
Nanoc::Int::Item.new(
|
38
|
-
'blah blah',
|
39
|
-
{ kind: 'article' },
|
40
|
-
'/1/'
|
41
|
-
),
|
42
|
-
Nanoc::Int::Item.new(
|
43
|
-
'blah blah blah',
|
44
|
-
{ kind: 'article' },
|
45
|
-
'/2/'
|
46
|
-
)
|
47
|
-
]
|
48
|
-
|
49
|
-
# Check
|
50
|
-
assert_equal(2, articles.size)
|
51
|
-
assert articles.include?(@items[1])
|
52
|
-
assert articles.include?(@items[2])
|
53
|
-
ensure
|
54
|
-
# Cleanup
|
55
|
-
@items = nil
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_sorted_articles
|
59
|
-
# Create items
|
60
|
-
@items = [
|
61
|
-
Nanoc::Int::Item.new(
|
62
|
-
'blah',
|
63
|
-
{ kind: 'item' },
|
64
|
-
'/0/'
|
65
|
-
),
|
66
|
-
Nanoc::Int::Item.new(
|
67
|
-
'blah',
|
68
|
-
{ kind: 'article', created_at: (Date.today - 1).to_s },
|
69
|
-
'/1/'
|
70
|
-
),
|
71
|
-
Nanoc::Int::Item.new(
|
72
|
-
'blah',
|
73
|
-
{ kind: 'article', created_at: (Time.now - 500).to_s },
|
74
|
-
'/2/'
|
75
|
-
)
|
76
|
-
]
|
77
|
-
|
78
|
-
# Check
|
79
|
-
assert_equal(2, sorted_articles.size)
|
80
|
-
assert_equal(@items[2], sorted_articles[0])
|
81
|
-
assert_equal(@items[1], sorted_articles[1])
|
82
|
-
ensure
|
83
|
-
# Cleanup
|
84
|
-
@items = nil
|
85
|
-
end
|
86
|
-
|
87
29
|
def test_atom_feed
|
88
30
|
if_have 'builder' do
|
89
31
|
# Create items
|
@@ -623,181 +565,4 @@ class Nanoc::Helpers::BloggingTest < Nanoc::TestCase
|
|
623
565
|
atom_feed
|
624
566
|
end
|
625
567
|
end
|
626
|
-
|
627
|
-
def test_url_for_without_custom_path_in_feed
|
628
|
-
# Create site
|
629
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
630
|
-
|
631
|
-
# Create article
|
632
|
-
item = Nanoc::Int::Item.new('content', {}, '/foo/')
|
633
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
634
|
-
item.reps[0].paths[:last] = '/foo/bar/'
|
635
|
-
|
636
|
-
# Check
|
637
|
-
assert_equal('http://example.com/foo/bar/', url_for(item))
|
638
|
-
ensure
|
639
|
-
# Cleanup
|
640
|
-
@item = nil
|
641
|
-
end
|
642
|
-
|
643
|
-
def test_url_for_with_custom_path_in_feed
|
644
|
-
# Create site
|
645
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
646
|
-
|
647
|
-
# Create article
|
648
|
-
item = Nanoc::Int::Item.new(
|
649
|
-
'content', { custom_path_in_feed: '/meow/woof/' }, '/foo/')
|
650
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
651
|
-
|
652
|
-
# Check
|
653
|
-
assert_equal('http://example.com/meow/woof/', url_for(item))
|
654
|
-
ensure
|
655
|
-
# Cleanup
|
656
|
-
@item = nil
|
657
|
-
end
|
658
|
-
|
659
|
-
def test_url_for_with_custom_url_in_feed
|
660
|
-
# Create site
|
661
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
662
|
-
|
663
|
-
# Create article
|
664
|
-
item = Nanoc::Int::Item.new(
|
665
|
-
'content', { custom_url_in_feed: 'http://example.org/x' }, '/foo/')
|
666
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
667
|
-
|
668
|
-
# Check
|
669
|
-
assert_equal('http://example.org/x', url_for(item))
|
670
|
-
ensure
|
671
|
-
# Cleanup
|
672
|
-
@item = nil
|
673
|
-
end
|
674
|
-
|
675
|
-
def test_url_for_without_base_url
|
676
|
-
# Create site
|
677
|
-
@config = Nanoc::ConfigView.new({})
|
678
|
-
|
679
|
-
# Check
|
680
|
-
assert_raises(Nanoc::Int::Errors::GenericTrivial) do
|
681
|
-
url_for(nil)
|
682
|
-
end
|
683
|
-
end
|
684
|
-
|
685
|
-
def test_url_for_without_path
|
686
|
-
# Create site
|
687
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
688
|
-
|
689
|
-
# Create article
|
690
|
-
item = Nanoc::Int::Item.new('content', {}, '/foo/')
|
691
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
692
|
-
item.reps[0].paths[:last] = nil
|
693
|
-
|
694
|
-
# Check
|
695
|
-
assert_equal(nil, url_for(item))
|
696
|
-
end
|
697
|
-
|
698
|
-
def test_feed_url_without_custom_feed_url
|
699
|
-
# Create site
|
700
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
701
|
-
|
702
|
-
# Create article
|
703
|
-
@item = Nanoc::Int::Item.new('content', {}, '/foo/')
|
704
|
-
@item.reps << Nanoc::Int::ItemRep.new(@item, :default)
|
705
|
-
@item.reps[0].paths[:last] = '/foo/bar/'
|
706
|
-
|
707
|
-
# Check
|
708
|
-
assert_equal('http://example.com/foo/bar/', feed_url)
|
709
|
-
ensure
|
710
|
-
# Cleanup
|
711
|
-
@item = nil
|
712
|
-
end
|
713
|
-
|
714
|
-
def test_feed_url_with_custom_feed_url
|
715
|
-
# Create site
|
716
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
717
|
-
|
718
|
-
# Create feed item
|
719
|
-
@item = Nanoc::Int::Item.new('content', { feed_url: 'http://example.com/feed/' }, '/foo/')
|
720
|
-
@item.reps << Nanoc::Int::ItemRep.new(@item, :default)
|
721
|
-
@item.reps[0].paths[:last] = '/foo/bar/'
|
722
|
-
|
723
|
-
# Check
|
724
|
-
assert_equal('http://example.com/feed/', feed_url)
|
725
|
-
ensure
|
726
|
-
# Cleanup
|
727
|
-
@item = nil
|
728
|
-
end
|
729
|
-
|
730
|
-
def test_feed_url_without_base_url
|
731
|
-
# Create site
|
732
|
-
@config = Nanoc::ConfigView.new({})
|
733
|
-
|
734
|
-
# Check
|
735
|
-
assert_raises(Nanoc::Int::Errors::GenericTrivial) do
|
736
|
-
feed_url
|
737
|
-
end
|
738
|
-
end
|
739
|
-
|
740
|
-
def test_atom_tag_for_with_path
|
741
|
-
# Create site
|
742
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
743
|
-
|
744
|
-
# Create article
|
745
|
-
item = Nanoc::Int::Item.new('content', { created_at: '2008-05-19' }, '/foo/')
|
746
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
747
|
-
item.reps[0].paths[:last] = '/foo/bar/'
|
748
|
-
|
749
|
-
# Check
|
750
|
-
assert_equal('tag:example.com,2008-05-19:/foo/bar/', atom_tag_for(item))
|
751
|
-
end
|
752
|
-
|
753
|
-
def test_atom_tag_for_without_path
|
754
|
-
# Create site
|
755
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
756
|
-
|
757
|
-
# Create article
|
758
|
-
item = Nanoc::Int::Item.new('content', { created_at: '2008-05-19' }, '/baz/qux/')
|
759
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
760
|
-
|
761
|
-
# Check
|
762
|
-
assert_equal('tag:example.com,2008-05-19:/baz/qux/', atom_tag_for(item))
|
763
|
-
end
|
764
|
-
|
765
|
-
def test_atom_tag_for_with_base_url_in_dir
|
766
|
-
# Create site
|
767
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com/somedir' })
|
768
|
-
|
769
|
-
# Create article
|
770
|
-
item = Nanoc::Int::Item.new('content', { created_at: '2008-05-19' }, '/foo/')
|
771
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
772
|
-
item.reps[0].paths[:last] = '/foo/bar/'
|
773
|
-
|
774
|
-
# Check
|
775
|
-
assert_equal('tag:example.com,2008-05-19:/somedir/foo/bar/', atom_tag_for(item))
|
776
|
-
end
|
777
|
-
|
778
|
-
def test_atom_tag_for_with_time
|
779
|
-
# Create site
|
780
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
781
|
-
|
782
|
-
# Create article
|
783
|
-
item = Nanoc::Int::Item.new('content', { created_at: Time.parse('2008-05-19') }, '/foo/')
|
784
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
785
|
-
item.reps[0].paths[:last] = '/foo/bar/'
|
786
|
-
|
787
|
-
# Check
|
788
|
-
assert_equal('tag:example.com,2008-05-19:/foo/bar/', atom_tag_for(item))
|
789
|
-
end
|
790
|
-
|
791
|
-
def test_atom_tag_for_with_date
|
792
|
-
# Create site
|
793
|
-
@config = Nanoc::ConfigView.new({ base_url: 'http://example.com' })
|
794
|
-
|
795
|
-
# Create article
|
796
|
-
item = Nanoc::Int::Item.new('content', { created_at: Date.parse('2008-05-19') }, '/foo/')
|
797
|
-
item.reps << Nanoc::Int::ItemRep.new(item, :default)
|
798
|
-
item.reps[0].paths[:last] = '/foo/bar/'
|
799
|
-
|
800
|
-
# Check
|
801
|
-
assert_equal('tag:example.com,2008-05-19:/foo/bar/', atom_tag_for(item))
|
802
|
-
end
|
803
568
|
end
|