nanoc 3.4.3 → 3.5.0b1
Sign up to get free protection for your applications and to get access to all the features.
- data/CONTRIBUTING.md +25 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +22 -13
- data/NEWS.md +27 -0
- data/README.md +3 -1
- data/lib/nanoc.rb +2 -2
- data/lib/nanoc/base/compilation/compiler_dsl.rb +19 -0
- data/lib/nanoc/base/core_ext/array.rb +18 -8
- data/lib/nanoc/base/core_ext/hash.rb +18 -8
- data/lib/nanoc/base/core_ext/pathname.rb +2 -8
- data/lib/nanoc/base/plugin_registry.rb +57 -19
- data/lib/nanoc/base/result_data/item_rep.rb +3 -15
- data/lib/nanoc/base/source_data/item.rb +1 -1
- data/lib/nanoc/base/source_data/layout.rb +1 -1
- data/lib/nanoc/base/source_data/site.rb +15 -19
- data/lib/nanoc/cli.rb +28 -23
- data/lib/nanoc/cli/command_runner.rb +4 -0
- data/lib/nanoc/cli/commands/autocompile.rb +15 -6
- data/lib/nanoc/cli/commands/check.rb +47 -0
- data/lib/nanoc/cli/commands/compile.rb +271 -195
- data/lib/nanoc/cli/commands/create-site.rb +5 -5
- data/lib/nanoc/cli/commands/deploy.rb +16 -4
- data/lib/nanoc/cli/commands/prune.rb +3 -3
- data/lib/nanoc/cli/commands/show-data.rb +73 -58
- data/lib/nanoc/cli/commands/show-rules.rb +1 -1
- data/lib/nanoc/cli/commands/validate-css.rb +2 -3
- data/lib/nanoc/cli/commands/validate-html.rb +2 -3
- data/lib/nanoc/cli/commands/validate-links.rb +5 -11
- data/lib/nanoc/cli/commands/view.rb +1 -1
- data/lib/nanoc/cli/commands/watch.rb +38 -20
- data/lib/nanoc/cli/error_handler.rb +122 -122
- data/lib/nanoc/data_sources.rb +2 -0
- data/lib/nanoc/data_sources/filesystem_unified.rb +1 -1
- data/lib/nanoc/data_sources/filesystem_verbose.rb +1 -1
- data/lib/nanoc/data_sources/static.rb +60 -0
- data/lib/nanoc/extra.rb +2 -0
- data/lib/nanoc/extra/checking.rb +16 -0
- data/lib/nanoc/extra/checking/check.rb +33 -0
- data/lib/nanoc/extra/checking/checks.rb +19 -0
- data/lib/nanoc/extra/checking/checks/css.rb +23 -0
- data/lib/nanoc/extra/checking/checks/external_links.rb +149 -0
- data/lib/nanoc/extra/checking/checks/html.rb +24 -0
- data/lib/nanoc/extra/checking/checks/internal_links.rb +57 -0
- data/lib/nanoc/extra/checking/checks/stale.rb +23 -0
- data/lib/nanoc/extra/checking/dsl.rb +31 -0
- data/lib/nanoc/extra/checking/issue.rb +19 -0
- data/lib/nanoc/extra/checking/runner.rb +130 -0
- data/lib/nanoc/extra/link_collector.rb +57 -0
- data/lib/nanoc/extra/pruner.rb +1 -1
- data/lib/nanoc/extra/validators/links.rb +5 -262
- data/lib/nanoc/extra/validators/w3c.rb +8 -76
- data/lib/nanoc/filters/colorize_syntax.rb +1 -1
- data/lib/nanoc/filters/handlebars.rb +2 -2
- data/lib/nanoc/filters/less.rb +1 -1
- data/lib/nanoc/filters/redcarpet.rb +1 -1
- data/lib/nanoc/filters/rubypants.rb +1 -1
- data/lib/nanoc/filters/slim.rb +1 -1
- data/lib/nanoc/helpers/blogging.rb +163 -104
- data/lib/nanoc/helpers/xml_sitemap.rb +9 -3
- data/tasks/doc.rake +2 -1
- data/test/base/core_ext/array_spec.rb +4 -4
- data/test/base/core_ext/hash_spec.rb +7 -7
- data/test/base/core_ext/pathname_spec.rb +12 -2
- data/test/base/test_compiler_dsl.rb +24 -0
- data/test/base/test_item_rep.rb +58 -26
- data/test/cli/commands/test_watch.rb +0 -8
- data/test/data_sources/test_static.rb +66 -0
- data/test/extra/checking/checks/test_css.rb +40 -0
- data/test/extra/checking/checks/test_external_links.rb +76 -0
- data/test/extra/checking/checks/test_html.rb +40 -0
- data/test/extra/checking/checks/test_internal_links.rb +46 -0
- data/test/extra/checking/checks/test_stale.rb +49 -0
- data/test/extra/checking/test_check.rb +16 -0
- data/test/extra/checking/test_dsl.rb +20 -0
- data/test/extra/checking/test_runner.rb +15 -0
- data/test/extra/test_link_collector.rb +93 -0
- data/test/extra/validators/test_links.rb +0 -64
- data/test/extra/validators/test_w3c.rb +20 -26
- data/test/filters/test_colorize_syntax.rb +15 -0
- data/test/filters/test_less.rb +14 -0
- data/test/filters/test_pandoc.rb +5 -1
- data/test/helpers/test_blogging.rb +52 -8
- data/test/helpers/test_xml_sitemap.rb +68 -0
- data/test/test_gem.rb +1 -1
- metadata +31 -6
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Nanoc::Extra::Checking::Checks::HTMLTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
include Nanoc::TestHelpers
|
6
|
+
|
7
|
+
def test_run_ok
|
8
|
+
with_site do |site|
|
9
|
+
# Create files
|
10
|
+
FileUtils.mkdir_p('output')
|
11
|
+
File.open('output/blah.html', 'w') { |io| io.write('<!DOCTYPE html><html><head><title>Hello</title></head><body><h1>Hi!</h1></body>') }
|
12
|
+
File.open('output/style.css', 'w') { |io| io.write('h1 { coxlor: rxed; }') }
|
13
|
+
|
14
|
+
# Run check
|
15
|
+
check = Nanoc::Extra::Checking::Checks::HTML.new(site)
|
16
|
+
check.run
|
17
|
+
|
18
|
+
# Check
|
19
|
+
assert check.issues.empty?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_run_error
|
24
|
+
with_site do |site|
|
25
|
+
# Create files
|
26
|
+
FileUtils.mkdir_p('output')
|
27
|
+
File.open('output/blah.html', 'w') { |io| io.write('<h2>Hi!</h1>') }
|
28
|
+
File.open('output/style.css', 'w') { |io| io.write('h1 { coxlor: rxed; }') }
|
29
|
+
|
30
|
+
# Run check
|
31
|
+
check = Nanoc::Extra::Checking::Checks::HTML.new(site)
|
32
|
+
check.run
|
33
|
+
|
34
|
+
# Check
|
35
|
+
refute check.issues.empty?
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Nanoc::Extra::Checking::Checks::InternalLinksTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
include Nanoc::TestHelpers
|
6
|
+
|
7
|
+
def test_run
|
8
|
+
with_site do |site|
|
9
|
+
# Create files
|
10
|
+
FileUtils.mkdir_p('output')
|
11
|
+
FileUtils.mkdir_p('output/stuff')
|
12
|
+
File.open('output/foo.txt', 'w') { |io| io.write('<a href="/broken">broken</a>') }
|
13
|
+
File.open('output/bar.html', 'w') { |io| io.write('<a href="/foo.txt">not broken</a>') }
|
14
|
+
|
15
|
+
# Create check
|
16
|
+
check = Nanoc::Extra::Checking::Checks::InternalLinks.new(site)
|
17
|
+
check.run
|
18
|
+
|
19
|
+
# Test
|
20
|
+
assert check.issues.empty?
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_valid?
|
25
|
+
with_site do |site|
|
26
|
+
# Create files
|
27
|
+
FileUtils.mkdir_p('output')
|
28
|
+
FileUtils.mkdir_p('output/stuff')
|
29
|
+
File.open('output/origin', 'w') { |io| io.write('hi') }
|
30
|
+
File.open('output/foo', 'w') { |io| io.write('hi') }
|
31
|
+
File.open('output/stuff/blah', 'w') { |io| io.write('hi') }
|
32
|
+
|
33
|
+
# Create check
|
34
|
+
check = Nanoc::Extra::Checking::Checks::InternalLinks.new(site)
|
35
|
+
|
36
|
+
# Test
|
37
|
+
assert check.send(:valid?, 'foo', 'output/origin')
|
38
|
+
assert check.send(:valid?, 'origin', 'output/origin')
|
39
|
+
assert check.send(:valid?, 'stuff/blah', 'output/origin')
|
40
|
+
assert check.send(:valid?, '/foo', 'output/origin')
|
41
|
+
assert check.send(:valid?, '/origin', 'output/origin')
|
42
|
+
assert check.send(:valid?, '/stuff/blah', 'output/origin')
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Nanoc::Extra::Checking::Checks::StaleTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
include Nanoc::TestHelpers
|
6
|
+
|
7
|
+
def check_class
|
8
|
+
Nanoc::Extra::Checking::Checks::Stale
|
9
|
+
end
|
10
|
+
|
11
|
+
def calc_issues
|
12
|
+
site = Nanoc::Site.new('.')
|
13
|
+
check = check_class.new(site)
|
14
|
+
check.run
|
15
|
+
check.issues
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_run_ok
|
19
|
+
with_site do |site|
|
20
|
+
assert Dir['content/*'].empty?
|
21
|
+
assert Dir['output/*'].empty?
|
22
|
+
|
23
|
+
# Empty
|
24
|
+
FileUtils.mkdir_p('output')
|
25
|
+
assert self.calc_issues.empty?
|
26
|
+
|
27
|
+
# One OK file
|
28
|
+
File.open('content/index.html', 'w') { |io| io.write('stuff') }
|
29
|
+
File.open('output/index.html', 'w') { |io| io.write('stuff') }
|
30
|
+
assert self.calc_issues.empty?
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_run_error
|
35
|
+
with_site do |site|
|
36
|
+
assert Dir['content/*'].empty?
|
37
|
+
assert Dir['output/*'].empty?
|
38
|
+
|
39
|
+
File.open('content/index.html', 'w') { |io| io.write('stuff') }
|
40
|
+
File.open('output/WRONG.html', 'w') { |io| io.write('stuff') }
|
41
|
+
assert_equal 1, self.calc_issues.count
|
42
|
+
issue = self.calc_issues.to_a[0]
|
43
|
+
assert_equal "file without matching item", issue.description
|
44
|
+
assert_equal "output/WRONG.html", issue.subject
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Nanoc::Extra::Checking::CheckTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
include Nanoc::TestHelpers
|
6
|
+
|
7
|
+
def test_output_filenames
|
8
|
+
with_site do |site|
|
9
|
+
check = Nanoc::Extra::Checking::Check.new(site)
|
10
|
+
assert check.output_filenames.empty?
|
11
|
+
File.open('output/foo.html', 'w') { |io| io.write 'hello' }
|
12
|
+
assert_equal [ 'output/foo.html' ], check.output_filenames
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Nanoc::Extra::Checking::DSLTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
include Nanoc::TestHelpers
|
6
|
+
|
7
|
+
def test_from_file
|
8
|
+
with_site do |site|
|
9
|
+
File.open('Checks', 'w') { |io| io.write("check :foo do\n\nend\ndeploy_check :bar\n") }
|
10
|
+
dsl = Nanoc::Extra::Checking::DSL.from_file('Checks')
|
11
|
+
|
12
|
+
# One new check
|
13
|
+
refute Nanoc::Extra::Checking::Check.named(:foo).nil?
|
14
|
+
|
15
|
+
# One check marked for deployment
|
16
|
+
assert_equal [ :bar ], dsl.deploy_checks
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Nanoc::Extra::Checking::RunnerTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
include Nanoc::TestHelpers
|
6
|
+
|
7
|
+
def test_run
|
8
|
+
with_site do |site|
|
9
|
+
File.open('output/blah', 'w') { |io| io.write('I am stale! Haha!') }
|
10
|
+
runner = Nanoc::Extra::Checking::Runner.new(site)
|
11
|
+
runner.run_specific(%w( stale ))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
class Nanoc::Extra::LinkCollectorTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
include Nanoc::TestHelpers
|
6
|
+
|
7
|
+
def test_all
|
8
|
+
# Create dummy data
|
9
|
+
File.open('file-a.html', 'w') do |io|
|
10
|
+
io << %[<a href="http://example.com/">A 1</a>\n]
|
11
|
+
io << %[<a href="https://example.com/">A 2</a>\n]
|
12
|
+
io << %[<a href="stuff/"A 3></a>\n]
|
13
|
+
io << %[<a name="href-less-anchor">A 4</a>]
|
14
|
+
io << %[<a href="https://example.com/with-fragment#moo">A 5</a>\n]
|
15
|
+
end
|
16
|
+
File.open('file-b.html', 'w') do |io|
|
17
|
+
io << %[<a href="mailto:bob@example.com">B 1</a>\n]
|
18
|
+
io << %[<a href="../stuff">B 2</a>\n]
|
19
|
+
io << %[<a href="/stuff">B 3</a>\n]
|
20
|
+
end
|
21
|
+
|
22
|
+
# Create validator
|
23
|
+
collector = Nanoc::Extra::LinkCollector.new(%w( file-a.html file-b.html ))
|
24
|
+
|
25
|
+
# Test
|
26
|
+
hrefs_with_filenames = collector.filenames_per_href
|
27
|
+
hrefs = hrefs_with_filenames.keys
|
28
|
+
assert_includes hrefs, 'http://example.com/'
|
29
|
+
assert_includes hrefs, 'https://example.com/'
|
30
|
+
assert_includes hrefs, 'stuff/'
|
31
|
+
refute_includes hrefs, nil
|
32
|
+
assert_includes hrefs, 'mailto:bob@example.com'
|
33
|
+
assert_includes hrefs, '../stuff'
|
34
|
+
assert_includes hrefs, '/stuff'
|
35
|
+
refute_includes hrefs, 'https://example.com/with-fragment#moo'
|
36
|
+
assert_includes hrefs, 'https://example.com/with-fragment'
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_external
|
40
|
+
# Create dummy data
|
41
|
+
File.open('file-a.html', 'w') do |io|
|
42
|
+
io << %[<a href="http://example.com/">A 1</a>\n]
|
43
|
+
io << %[<a href="https://example.com/">A 2</a>\n]
|
44
|
+
io << %[<a href="stuff/"A 3></a>\n]
|
45
|
+
end
|
46
|
+
File.open('file-b.html', 'w') do |io|
|
47
|
+
io << %[<a href="mailto:bob@example.com">B 1</a>\n]
|
48
|
+
io << %[<a href="../stuff">B 2</a>\n]
|
49
|
+
io << %[<a href="/stuff">B 3</a>\n]
|
50
|
+
end
|
51
|
+
|
52
|
+
# Create validator
|
53
|
+
collector = Nanoc::Extra::LinkCollector.new(%w( file-a.html file-b.html ), :external)
|
54
|
+
|
55
|
+
# Test
|
56
|
+
hrefs_with_filenames = collector.filenames_per_href
|
57
|
+
hrefs = hrefs_with_filenames.keys
|
58
|
+
assert_includes hrefs, 'http://example.com/'
|
59
|
+
assert_includes hrefs, 'https://example.com/'
|
60
|
+
refute_includes hrefs, 'stuff/'
|
61
|
+
assert_includes hrefs, 'mailto:bob@example.com'
|
62
|
+
refute_includes hrefs, '../stuff'
|
63
|
+
refute_includes hrefs, '/stuff'
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_internal
|
67
|
+
# Create dummy data
|
68
|
+
File.open('file-a.html', 'w') do |io|
|
69
|
+
io << %[<a href="http://example.com/">A 1</a>\n]
|
70
|
+
io << %[<a href="https://example.com/">A 2</a>\n]
|
71
|
+
io << %[<a href="stuff/"A 3></a>\n]
|
72
|
+
end
|
73
|
+
File.open('file-b.html', 'w') do |io|
|
74
|
+
io << %[<a href="mailto:bob@example.com">B 1</a>\n]
|
75
|
+
io << %[<a href="../stuff">B 2</a>\n]
|
76
|
+
io << %[<a href="/stuff">B 3</a>\n]
|
77
|
+
end
|
78
|
+
|
79
|
+
# Create validator
|
80
|
+
collector = Nanoc::Extra::LinkCollector.new(%w( file-a.html file-b.html ), :internal)
|
81
|
+
|
82
|
+
# Test
|
83
|
+
hrefs_with_filenames = collector.filenames_per_href
|
84
|
+
hrefs = hrefs_with_filenames.keys
|
85
|
+
refute_includes hrefs, 'http://example.com/'
|
86
|
+
refute_includes hrefs, 'https://example.com/'
|
87
|
+
assert_includes hrefs, 'stuff/'
|
88
|
+
refute_includes hrefs, 'mailto:bob@example.com'
|
89
|
+
assert_includes hrefs, '../stuff'
|
90
|
+
assert_includes hrefs, '/stuff'
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
@@ -4,68 +4,4 @@ class Nanoc::Extra::Validators::LinksTest < MiniTest::Unit::TestCase
|
|
4
4
|
|
5
5
|
include Nanoc::TestHelpers
|
6
6
|
|
7
|
-
def test_is_external_href?
|
8
|
-
# Create validator
|
9
|
-
validator = Nanoc::Extra::Validators::Links.new(nil, nil)
|
10
|
-
|
11
|
-
# Test
|
12
|
-
assert validator.send(:is_external_href?, 'http://example.com/')
|
13
|
-
assert validator.send(:is_external_href?, 'https://example.com/')
|
14
|
-
assert validator.send(:is_external_href?, 'mailto:bob@example.com')
|
15
|
-
assert !validator.send(:is_external_href?, '../stuff')
|
16
|
-
assert !validator.send(:is_external_href?, '/stuff')
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_is_valid_internal_href?
|
20
|
-
# Create files
|
21
|
-
FileUtils.mkdir_p('output')
|
22
|
-
FileUtils.mkdir_p('output/stuff')
|
23
|
-
File.open('output/origin', 'w') { |io| io.write('hi') }
|
24
|
-
File.open('output/foo', 'w') { |io| io.write('hi') }
|
25
|
-
File.open('output/stuff/blah', 'w') { |io| io.write('hi') }
|
26
|
-
|
27
|
-
# Create validator
|
28
|
-
validator = Nanoc::Extra::Validators::Links.new('output', [ 'index.html' ])
|
29
|
-
|
30
|
-
# Test
|
31
|
-
assert validator.send(:is_valid_internal_href?, 'foo', 'output/origin')
|
32
|
-
assert validator.send(:is_valid_internal_href?, 'origin', 'output/origin')
|
33
|
-
assert validator.send(:is_valid_internal_href?, 'stuff/blah', 'output/origin')
|
34
|
-
assert validator.send(:is_valid_internal_href?, '/foo', 'output/origin')
|
35
|
-
assert validator.send(:is_valid_internal_href?, '/origin', 'output/origin')
|
36
|
-
assert validator.send(:is_valid_internal_href?, '/stuff/blah', 'output/origin')
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_is_valid_external_href?
|
40
|
-
# Create validator
|
41
|
-
validator = Nanoc::Extra::Validators::Links.new('output', [ 'index.html' ])
|
42
|
-
validator.stubs(:fetch_http_status_for).returns(200)
|
43
|
-
|
44
|
-
# Test
|
45
|
-
assert validator.send(:is_valid_external_href?, 'http://example.com/')
|
46
|
-
assert validator.send(:is_valid_external_href?, 'https://example.com/')
|
47
|
-
assert validator.send(:is_valid_external_href?, 'foo://example.com/')
|
48
|
-
refute validator.send(:is_valid_external_href?, 'http://example.com/">')
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_fetch_http_status_for
|
52
|
-
@app = lambda { |env| [ env['REQUEST_PATH'][1..-1].to_i, {}, [ '... Useless body ...' ] ] }
|
53
|
-
@server = nil
|
54
|
-
|
55
|
-
@thread = Thread.new do
|
56
|
-
Rack::Handler::WEBrick.run(@app, :Host => @host='127.0.0.1', :Port => @port=9204) do |server|
|
57
|
-
@server = server
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
Thread.pass until @server
|
62
|
-
|
63
|
-
validator = Nanoc::Extra::Validators::Links.new('output', [ 'index.html' ])
|
64
|
-
assert_equal 200, validator.send(:fetch_http_status_for, URI.parse('http://127.0.0.1:9204/200'))
|
65
|
-
assert_equal 404, validator.send(:fetch_http_status_for, URI.parse('http://127.0.0.1:9204/404'))
|
66
|
-
|
67
|
-
@server.stop
|
68
|
-
@thread.kill
|
69
|
-
end
|
70
|
-
|
71
7
|
end
|
@@ -6,41 +6,35 @@ class Nanoc::Extra::Validators::W3CTest < MiniTest::Unit::TestCase
|
|
6
6
|
|
7
7
|
def test_simple
|
8
8
|
if_have 'w3c_validators' do
|
9
|
-
|
10
|
-
|
11
|
-
%w{
|
12
|
-
|
9
|
+
with_site do |site|
|
10
|
+
# Create some sample files
|
11
|
+
%w{ foo bar baz }.each do |filename|
|
12
|
+
%w{ xxx yyy }.each do |extension|
|
13
|
+
File.open("output/#{filename}.#{extension}", 'w') { |io| io.write("hello") }
|
14
|
+
end
|
13
15
|
end
|
14
|
-
end
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
validator = mock
|
23
|
-
validator.expects(:validate_file).times(3).returns(validator_result)
|
24
|
-
w3c.expects(:types_to_extensions).with([ :xxx ]).returns([ 'xxx' ])
|
25
|
-
w3c.expects(:validator_for).with('xxx').times(3).returns(validator)
|
26
|
-
w3c.expects(:validation_started).times(3)
|
27
|
-
w3c.expects(:validation_ended).times(3)
|
28
|
-
|
29
|
-
# Run
|
30
|
-
w3c.run
|
17
|
+
# Create validator
|
18
|
+
w3c = Nanoc::Extra::Validators::W3C.new('.', [ :html ])
|
19
|
+
|
20
|
+
# Run
|
21
|
+
w3c.run
|
22
|
+
end
|
31
23
|
end
|
32
24
|
end
|
33
25
|
|
34
26
|
def test_with_unknown_types
|
35
27
|
if_have 'w3c_validators' do
|
36
|
-
|
37
|
-
|
28
|
+
with_site do |site|
|
29
|
+
# Create validator
|
30
|
+
w3c = Nanoc::Extra::Validators::W3C.new('.', [ :foo ])
|
38
31
|
|
39
|
-
|
40
|
-
|
41
|
-
|
32
|
+
# Test
|
33
|
+
exception = assert_raises Nanoc::Errors::GenericTrivial do
|
34
|
+
w3c.run
|
35
|
+
end
|
36
|
+
assert_equal 'unknown type(s) specified: foo', exception.message
|
42
37
|
end
|
43
|
-
assert_equal 'unknown type: foo', exception.message
|
44
38
|
end
|
45
39
|
end
|
46
40
|
|
@@ -88,6 +88,21 @@ EOS
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
+
def test_coderay_with_comment_in_middle
|
92
|
+
if_have 'coderay', 'nokogiri' do
|
93
|
+
# Create filter
|
94
|
+
filter = ::Nanoc::Filters::ColorizeSyntax.new
|
95
|
+
|
96
|
+
# Get input and expected output
|
97
|
+
input = %[<pre title="moo"><code>def moo ; end\n#!ruby\n# comment</code></pre>]
|
98
|
+
expected_output = "<pre title=\"moo\"><code>def moo ; end\n#!ruby\n# comment</code></pre>"
|
99
|
+
|
100
|
+
# Run filter
|
101
|
+
actual_output = filter.run(input)
|
102
|
+
assert_equal(expected_output, actual_output)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
91
106
|
def test_coderay_with_comment_and_class
|
92
107
|
if_have 'coderay', 'nokogiri' do
|
93
108
|
# Create filter
|
data/test/filters/test_less.rb
CHANGED
@@ -110,4 +110,18 @@ class Nanoc::Filters::LessTest < MiniTest::Unit::TestCase
|
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
|
+
def test_compression
|
114
|
+
if_have 'less' do
|
115
|
+
# Create item
|
116
|
+
@item = Nanoc::Item.new("blah", { :content_filename => 'content/foo/bar.txt' }, '/foo/bar/')
|
117
|
+
|
118
|
+
# Create filter
|
119
|
+
filter = ::Nanoc::Filters::Less.new(:item => @item, :items => [ @item ])
|
120
|
+
|
121
|
+
# Run filter with compress option
|
122
|
+
result = filter.run('.foo { bar: a; } .bar { foo: b; }', :compress => true)
|
123
|
+
assert_match(/^\.foo{bar:a;}\n\.bar{foo:b;}/, result)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
113
127
|
end
|