From 8fbeb5231478602c6db03f06fb781b8b8db5b7f1 Mon Sep 17 00:00:00 2001 From: Pat Hawks Date: Wed, 25 May 2016 22:00:58 -0500 Subject: [PATCH] Rubocop: test/test_tags.rb --- test/test_tags.rb | 498 +++++++++++++++++++++++++++++++++------------- 1 file changed, 358 insertions(+), 140 deletions(-) diff --git a/test/test_tags.rb b/test/test_tags.rb index 1dab0feb..736d60d6 100644 --- a/test/test_tags.rb +++ b/test/test_tags.rb @@ -1,18 +1,17 @@ # coding: utf-8 - -require 'helper' +require "helper" class TestTags < JekyllUnitTest - def setup FileUtils.mkdir_p("tmp") end + # rubocop:disable Metrics/AbcSize def create_post(content, override = {}, converter_class = Jekyll::Converters::Markdown) - site = fixture_site({"highlighter" => "rouge"}.merge(override)) + site = fixture_site({ "highlighter" => "rouge" }.merge(override)) - site.posts.docs.concat(PostReader.new(site).read_posts('')) if override['read_posts'] - CollectionReader.new(site).read if override['read_collections'] + site.posts.docs.concat(PostReader.new(site).read_posts("")) if override["read_posts"] + CollectionReader.new(site).read if override["read_collections"] info = { :filters => [Jekyll::Filters], :registers => { :site => site } } @converter = site.converters.find { |c| c.class == converter_class } @@ -22,6 +21,7 @@ class TestTags < JekyllUnitTest @result = Liquid::Template.parse(content).render!(payload, info) @result = @converter.convert(@result) end + # rubocop:enable Metrics/AbcSize def fill_post(code, override = {}) content = < 'inline' }, tag.instance_variable_get(:@highlight_options)) + tag = highlight_block_with_opts("ruby linenos ") + assert_equal( + { :linenos => "inline" }, + tag.instance_variable_get(:@highlight_options) + ) end - should "set the linenos option to 'table' if the linenos key is given the table value" do - tag = highlight_block_with_opts('ruby linenos=table ') - assert_equal({ :linenos => 'table' }, tag.instance_variable_get(:@highlight_options)) + should "set the linenos option to 'table' " \ + "if the linenos key is given the table value" do + tag = highlight_block_with_opts("ruby linenos=table ") + assert_equal( + { :linenos => "table" }, + tag.instance_variable_get(:@highlight_options) + ) end should "recognize nowrap option with linenos set" do - tag = highlight_block_with_opts('ruby linenos=table nowrap ') - assert_equal({ :linenos => 'table', :nowrap => true }, tag.instance_variable_get(:@highlight_options)) + tag = highlight_block_with_opts("ruby linenos=table nowrap ") + assert_equal( + { :linenos => "table", :nowrap => true }, + tag.instance_variable_get(:@highlight_options) + ) end should "recognize the cssclass option" do - tag = highlight_block_with_opts('ruby linenos=table cssclass=hl ') - assert_equal({ :cssclass => 'hl', :linenos => 'table' }, tag.instance_variable_get(:@highlight_options)) + tag = highlight_block_with_opts("ruby linenos=table cssclass=hl ") + assert_equal( + { :cssclass => "hl", :linenos => "table" }, + tag.instance_variable_get(:@highlight_options) + ) end should "recognize the hl_linenos option and its value" do - tag = highlight_block_with_opts('ruby linenos=table cssclass=hl hl_linenos=3 ') - assert_equal({ :cssclass => 'hl', :linenos => 'table', :hl_linenos => '3' }, tag.instance_variable_get(:@highlight_options)) + tag = highlight_block_with_opts("ruby linenos=table cssclass=hl hl_linenos=3 ") + assert_equal( + { :cssclass => "hl", :linenos => "table", :hl_linenos => "3" }, + tag.instance_variable_get(:@highlight_options) + ) end should "recognize multiple values of hl_linenos" do - tag = highlight_block_with_opts('ruby linenos=table cssclass=hl hl_linenos="3 5 6" ') - assert_equal({ :cssclass => 'hl', :linenos => 'table', :hl_linenos => ['3', '5', '6'] }, tag.instance_variable_get(:@highlight_options)) + tag = highlight_block_with_opts 'ruby linenos=table cssclass=hl hl_linenos="3 5 6" ' + assert_equal( + { :cssclass => "hl", :linenos => "table", :hl_linenos => %w(3 5 6) }, + tag.instance_variable_get(:@highlight_options) + ) end should "treat language name as case insensitive" do - tag = highlight_block_with_opts('Ruby ') - assert_equal "ruby", tag.instance_variable_get(:@lang), "lexers should be case insensitive" + tag = highlight_block_with_opts("Ruby ") + assert_equal( + "ruby", + tag.instance_variable_get(:@lang), + "lexers should be case insensitive" + ) end end context "in safe mode" do setup do - @tag = highlight_block_with_opts('text ') + @tag = highlight_block_with_opts("text ") end should "allow linenos" do - sanitized = @tag.sanitized_opts({:linenos => true}, true) + sanitized = @tag.sanitized_opts({ :linenos => true }, true) assert_equal true, sanitized[:linenos] end should "allow hl_lines" do - sanitized = @tag.sanitized_opts({:hl_lines => %w[1 2 3 4]}, true) - assert_equal %w[1 2 3 4], sanitized[:hl_lines] + sanitized = @tag.sanitized_opts({ :hl_lines => %w(1 2 3 4) }, true) + assert_equal %w(1 2 3 4), sanitized[:hl_lines] end should "allow cssclass" do - sanitized = @tag.sanitized_opts({:cssclass => "ahoy"}, true) + sanitized = @tag.sanitized_opts({ :cssclass => "ahoy" }, true) assert_equal "ahoy", sanitized[:cssclass] end should "allow startinline" do - sanitized = @tag.sanitized_opts({:startinline => true}, true) + sanitized = @tag.sanitized_opts({ :startinline => true }, true) assert_equal true, sanitized[:startinline] end should "strip unknown options" do - sanitized = @tag.sanitized_opts({:light => true}, true) + sanitized = @tag.sanitized_opts({ :light => true }, true) assert_nil sanitized[:light] end end @@ -145,7 +173,7 @@ CONTENT context "post content has highlight tag" do setup do - fill_post("test", {'highlighter' => 'pygments'}) + fill_post("test", { "highlighter" => "pygments" }) end should "not cause a markdown error" do @@ -153,31 +181,45 @@ CONTENT end should "render markdown with pygments" do - assert_match %{
test
}, @result + assert_match( + %(
test
), + @result + ) end should "render markdown with pygments with line numbers" do - assert_match %{
1 test
}, @result + assert_match( + %(
) +
+          %(1 test
), + @result + ) end end context "post content has highlight with file reference" do setup do - fill_post("./jekyll.gemspec", {'highlighter' => 'pygments'}) + fill_post("./jekyll.gemspec", { "highlighter" => "pygments" }) end should "not embed the file" do - assert_match %{
./jekyll.gemspec
}, @result + assert_match( + %(
) +
+          %(./jekyll.gemspec
), + @result + ) end end context "post content has highlight tag with UTF character" do setup do - fill_post("Æ", {'highlighter' => 'pygments'}) + fill_post("Æ", { "highlighter" => "pygments" }) end should "render markdown with pygments line handling" do - assert_match %{
Æ
}, @result + assert_match( + %(
Æ
), + @result + ) end end @@ -190,15 +232,19 @@ CONTENT [1,] FALSE TRUE [2,] FALSE TRUE EOS - fill_post(code, {'highlighter' => 'pygments'}) + fill_post(code, { "highlighter" => "pygments" }) end should "only strip the preceding newlines" do - assert_match %{
     [,1] [,2]}, @result
+        assert_match(
+          %(
     [,1] [,2]),
+          @result
+        )
       end
     end
 
-    context "post content has highlight tag with preceding spaces & lines in several places" do
+    context "post content has highlight tag " \
+            "with preceding spaces & lines in several places" do
       setup do
         code = <<-EOS
 
@@ -211,21 +257,29 @@ EOS
 
 
 EOS
-        fill_post(code, {'highlighter' => 'pygments'})
+        fill_post(code, { "highlighter" => "pygments" })
       end
 
       should "only strip the newlines which precede and succeed the entire block" do
-        assert_match "
     [,1] [,2]\n\n\n[1,] FALSE TRUE\n[2,] FALSE TRUE
", @result + assert_match( + "
" \
+          "     [,1] [,2]\n\n\n[1,] FALSE TRUE\n[2,] FALSE TRUE
", + @result + ) end end - context "post content has highlight tag with preceding spaces & Windows-style newlines" do + context "post content has highlight tag with " \ + "preceding spaces & Windows-style newlines" do setup do - fill_post "\r\n\r\n\r\n [,1] [,2]", {'highlighter' => 'pygments'} + fill_post "\r\n\r\n\r\n [,1] [,2]", { "highlighter" => "pygments" } end should "only strip the preceding newlines" do - assert_match %{
     [,1] [,2]}, @result
+        assert_match(
+          %(
     [,1] [,2]),
+          @result
+        )
       end
     end
 
@@ -236,11 +290,14 @@ EOS
 [1,] FALSE TRUE
 [2,] FALSE TRUE
 EOS
-        fill_post(code, {'highlighter' => 'pygments'})
+        fill_post(code, { "highlighter" => "pygments" })
       end
 
       should "only strip the preceding newlines" do
-        assert_match %{
     [,1] [,2]}, @result
+        assert_match(
+          %(
     [,1] [,2]),
+          @result
+        )
       end
     end
   end
@@ -252,11 +309,21 @@ EOS
       end
 
       should "render markdown with rouge" do
-        assert_match %{
test
}, @result + assert_match( + %(
test
), + @result + ) end should "render markdown with rouge with line numbers" do - assert_match %{
1
test\n
}, @result + assert_match( + %() + + %() + + %() + + %(
) + + %(
1
test\n
), + @result + ) end end @@ -266,7 +333,11 @@ EOS end should "not embed the file" do - assert_match %{
./jekyll.gemspec
}, @result + assert_match( + '
' \
+          "./jekyll.gemspec
", + @result + ) end end @@ -276,7 +347,10 @@ EOS end should "render markdown with pygments line handling" do - assert_match %{
Æ
}, @result + assert_match( + '
Æ
', + @result + ) end end @@ -292,11 +366,15 @@ EOS end should "only strip the preceding newlines" do - assert_match %{
     [,1] [,2]}, @result
+        assert_match(
+          '
     [,1] [,2]',
+          @result
+        )
       end
     end
 
-    context "post content has highlight tag with preceding spaces & lines in several places" do
+    context "post content has highlight tag with " \
+            "preceding spaces & lines in several places" do
       setup do
         fill_post <<-EOS
 
@@ -312,7 +390,11 @@ EOS
       end
 
       should "only strip the newlines which precede and succeed the entire block" do
-        assert_match "
     [,1] [,2]\n\n\n[1,] FALSE TRUE\n[2,] FALSE TRUE
", @result + assert_match( + "
     [,1] [,2]\n\n\n" \
+          "[1,] FALSE TRUE\n[2,] FALSE TRUE
", + @result + ) end end @@ -333,17 +415,29 @@ EOS end should "should stop highlighting at boundary" do - assert_match "

This is not yet highlighted

\n\n
1
test\n
\n\n

This should not be highlighted, right?

", @result + expected = <<-EOS +

This is not yet highlighted

+ +
1
test
+
+ +

This should not be highlighted, right?

+EOS + assert_match(expected, @result) end end - context "post content has highlight tag with preceding spaces & Windows-style newlines" do + context "post content has highlight tag with " \ + "preceding spaces & Windows-style newlines" do setup do fill_post "\r\n\r\n\r\n [,1] [,2]" end should "only strip the preceding newlines" do - assert_match %{
     [,1] [,2]}, @result
+        assert_match(
+          '
     [,1] [,2]',
+          @result
+        )
       end
     end
 
@@ -357,7 +451,10 @@ EOS
       end
 
       should "only strip the preceding newlines" do
-        assert_match %{
     [,1] [,2]}, @result
+        assert_match(
+          '
     [,1] [,2]',
+          @result
+        )
       end
     end
   end
@@ -388,24 +485,24 @@ CONTENT
         end
 
         create_post(@content, {
-          'markdown' => 'rdiscount'
+          "markdown" => "rdiscount"
         })
       end
 
       should "parse correctly" do
         assert_match %r{FIGHT!}, @result
-        assert_match %r{FINISH HIM}, @result
+        assert_match %r!FINISH HIM!, @result
       end
     end
 
     context "using Kramdown" do
       setup do
-        create_post(@content, 'markdown' => 'kramdown')
+        create_post(@content, "markdown" => "kramdown")
       end
 
       should "parse correctly" do
         assert_match %r{FIGHT!}, @result
-        assert_match %r{FINISH HIM}, @result
+        assert_match %r!FINISH HIM!, @result
       end
     end
 
@@ -418,13 +515,13 @@ CONTENT
         end
 
         create_post(@content, {
-          'markdown' => 'redcarpet'
+          "markdown" => "redcarpet"
         })
       end
 
       should "parse correctly" do
         assert_match %r{FIGHT!}, @result
-        assert_match %r{FINISH HIM}, @result
+        assert_match %r!FINISH HIM!, @result
       end
     end
   end
@@ -438,7 +535,12 @@ title: Post linking
 
 {% post_url 2008-11-21-complex %}
 CONTENT
-      create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true})
+      create_post(content, {
+        "permalink"   => "pretty",
+        "source"      => source_dir,
+        "destination" => dest_dir,
+        "read_posts"  => true
+      })
     end
 
     should "not cause an error" do
@@ -446,7 +548,7 @@ CONTENT
     end
 
     should "have the url to the \"complex\" post from 2008-11-21" do
-      assert_match %r{/2008/11/21/complex/}, @result
+      assert_match %r!/2008/11/21/complex/!, @result
     end
   end
 
@@ -462,7 +564,12 @@ title: Post linking
 - 3 {% post_url es/2008-11-21-nested %}
 - 4 {% post_url /es/2008-11-21-nested %}
 CONTENT
-      create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true})
+      create_post(content, {
+        "permalink"   => "pretty",
+        "source"      => source_dir,
+        "destination" => dest_dir,
+        "read_posts"  => true
+      })
     end
 
     should "not cause an error" do
@@ -470,13 +577,13 @@ CONTENT
     end
 
     should "have the url to the \"complex\" post from 2008-11-21" do
-      assert_match %r{1\s/2008/11/21/complex/}, @result
-      assert_match %r{2\s/2008/11/21/complex/}, @result
+      assert_match %r!1\s/2008/11/21/complex/!, @result
+      assert_match %r!2\s/2008/11/21/complex/!, @result
     end
 
     should "have the url to the \"nested\" post from 2008-11-21" do
-      assert_match %r{3\s/2008/11/21/nested/}, @result
-      assert_match %r{4\s/2008/11/21/nested/}, @result
+      assert_match %r!3\s/2008/11/21/nested/!, @result
+      assert_match %r!4\s/2008/11/21/nested/!, @result
     end
   end
 
@@ -492,10 +599,10 @@ CONTENT
 
       assert_raises Jekyll::Errors::PostURLError do
         create_post(content, {
-          'permalink' => 'pretty',
-          'source' => source_dir,
-          'destination' => dest_dir,
-          'read_posts' => true
+          "permalink"   => "pretty",
+          "source"      => source_dir,
+          "destination" => dest_dir,
+          "read_posts"  => true
         })
       end
     end
@@ -511,10 +618,10 @@ CONTENT
 
       assert_raises Jekyll::Errors::InvalidDateError do
         create_post(content, {
-          'permalink' => 'pretty',
-          'source' => source_dir,
-          'destination' => dest_dir,
-          'read_posts' => true
+          "permalink"   => "pretty",
+          "source"      => source_dir,
+          "destination" => dest_dir,
+          "read_posts"  => true
         })
       end
     end
@@ -529,15 +636,20 @@ title: linking
 
 {% link _methods/yaml_with_dots.md %}
 CONTENT
-      create_post(content, {'source' => source_dir, 'destination' => dest_dir, 'collections' => { 'methods' => { 'output' => true }}, 'read_collections' => true})
+      create_post(content, {
+        "source"           => source_dir,
+        "destination"      => dest_dir,
+        "collections"      => { "methods" => { "output" => true } },
+        "read_collections" => true
+      })
     end
 
     should "not cause an error" do
-      refute_match /markdown\-html\-error/, @result
+      refute_match(/markdown\-html\-error/, @result)
     end
 
     should "have the url to the \"yaml_with_dots\" item" do
-      assert_match %r{/methods/yaml_with_dots\.html}, @result
+      assert_match(%r!/methods/yaml_with_dots\.html!, @result)
     end
   end
 
@@ -551,19 +663,24 @@ title: linking
 - 1 {% link _methods/sanitized_path.md %}
 - 2 {% link _methods/site/generate.md %}
 CONTENT
-      create_post(content, {'source' => source_dir, 'destination' => dest_dir, 'collections' => { 'methods' => { 'output' => true }}, 'read_collections' => true})
+      create_post(content, {
+        "source"           => source_dir,
+        "destination"      => dest_dir,
+        "collections"      => { "methods" => { "output" => true } },
+        "read_collections" => true
+      })
     end
 
     should "not cause an error" do
-      refute_match /markdown\-html\-error/, @result
+      refute_match(/markdown\-html\-error/, @result)
     end
 
     should "have the url to the \"sanitized_path\" item" do
-      assert_match %r{1\s/methods/sanitized_path\.html}, @result
+      assert_match %r!1\s/methods/sanitized_path\.html!, @result
     end
 
     should "have the url to the \"site/generate\" item" do
-      assert_match %r{2\s/methods/site/generate\.html}, @result
+      assert_match %r!2\s/methods/site/generate\.html!, @result
     end
   end
 
@@ -578,17 +695,20 @@ title: Invalid linking
 CONTENT
 
       assert_raises ArgumentError do
-        create_post(content, {'source' => source_dir, 'destination' => dest_dir, 'collections' => { 'methods' => { 'output' => true }}, 'read_collections' => true})
+        create_post(content, {
+          "source"           => source_dir,
+          "destination"      => dest_dir,
+          "collections"      => { "methods" => { "output" => true } },
+          "read_collections" => true
+        })
       end
     end
   end
 
   context "include tag with parameters" do
-
     context "with symlink'd include" do
-
       should "not allow symlink includes" do
-        File.open("tmp/pages-test", 'w') { |file| file.write("SYMLINK TEST") }
+        File.open("tmp/pages-test", "w") { |file| file.write("SYMLINK TEST") }
         assert_raises IOError do
           content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true, 'safe' => true })
+          create_post(content, {
+            "permalink"   => "pretty",
+            "source"      => source_dir,
+            "destination" => dest_dir,
+            "read_posts"  => true,
+            "safe"        => true
+          })
         end
-        @result ||= ''
+        @result ||= ""
         refute_match(/SYMLINK TEST/, @result)
       end
 
@@ -614,9 +740,19 @@ title: Include symlink
 {% include tmp/pages-test-does-not-exist %}
 
 CONTENT
-          create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true, 'safe' => true })
+          create_post(content, {
+            "permalink"   => "pretty",
+            "source"      => source_dir,
+            "destination" => dest_dir,
+            "read_posts"  => true,
+            "safe"        => true
+          })
         end
-        assert_match "Could not locate the included file 'tmp/pages-test-does-not-exist' in any of [\"#{source_dir}/_includes\"].", ex.message
+        assert_match(
+          "Could not locate the included file 'tmp/pages-test-does-not-exist' " \
+          "in any of [\"#{source_dir}/_includes\"].",
+          ex.message
+        )
       end
     end
 
@@ -631,7 +767,12 @@ title: Include tag parameters
 
 {% include params.html param="value" %}
 CONTENT
-        create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true})
+        create_post(content, {
+          "permalink"   => "pretty",
+          "source"      => source_dir,
+          "destination" => dest_dir,
+          "read_posts"  => true
+        })
       end
 
       should "correctly output include variable" do
@@ -652,8 +793,14 @@ title: Invalid parameter syntax
 
 {% include params.html param s="value" %}
 CONTENT
-        assert_raises ArgumentError, 'Did not raise exception on invalid "include" syntax' do
-          create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true})
+        assert_raises ArgumentError, "Did not raise exception on invalid " \
+                                     '"include" syntax' do
+          create_post(content, {
+            "permalink"   => "pretty",
+            "source"      => source_dir,
+            "destination" => dest_dir,
+            "read_posts"  => true
+          })
         end
 
         content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true})
+        assert_raises ArgumentError, "Did not raise exception on invalid " \
+                                     '"include" syntax' do
+          create_post(content, {
+            "permalink"   => "pretty",
+            "source"      => source_dir,
+            "destination" => dest_dir,
+            "read_posts"  => true
+          })
         end
       end
     end
@@ -678,12 +831,17 @@ title: multiple include parameters
 
 {% include params.html param1="new_value" param2="another" %}
 CONTENT
-        create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true})
+        create_post(content, {
+          "permalink"   => "pretty",
+          "source"      => source_dir,
+          "destination" => dest_dir,
+          "read_posts"  => true
+        })
       end
 
       should "list all parameters" do
-        assert_match '
  • param1 = new_value
  • ', @result - assert_match '
  • param2 = another
  • ', @result + assert_match "
  • param1 = new_value
  • ", @result + assert_match "
  • param2 = another
  • ", @result end should "not include previously used parameters" do @@ -700,7 +858,12 @@ title: without parameters {% include params.html %} CONTENT - create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + create_post(content, { + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true + }) end should "include file with empty parameters" do @@ -717,7 +880,13 @@ title: custom includes directory {% include custom.html %} CONTENT - create_post(content, {'includes_dir' => '_includes_custom', 'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + create_post(content, { + "includes_dir" => "_includes_custom", + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true + }) end should "include file from custom directory" do @@ -734,7 +903,12 @@ title: without parameters within if statement {% if true %}{% include params.html %}{% endif %} CONTENT - create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + create_post(content, { + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true + }) end should "include file with empty parameters within if statement" do @@ -755,72 +929,85 @@ CONTENT should "raise error relative to source directory" do exception = assert_raises IOError do - create_post(@content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + create_post(@content, { + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true + }) end - assert_match "Could not locate the included file 'missing.html' in any of [\"#{source_dir}/_includes\"].", exception.message + assert_match( + "Could not locate the included file 'missing.html' in any of " \ + "[\"#{source_dir}/_includes\"].", + exception.message + ) end end context "include tag with variable and liquid filters" do setup do - site = fixture_site({'pygments' => true}).tap(&:read).tap(&:render) - post = site.posts.docs.find {|p| p.basename.eql? "2013-12-17-include-variable-filters.markdown" } + site = fixture_site({ "pygments" => true }).tap(&:read).tap(&:render) + post = site.posts.docs.find do |p| + p.basename.eql? "2013-12-17-include-variable-filters.markdown" + end @content = post.output end should "include file as variable with liquid filters" do - assert_match %r{1 included}, @content - assert_match %r{2 included}, @content - assert_match %r{3 included}, @content + assert_match(/1 included/, @content) + assert_match(/2 included/, @content) + assert_match(/3 included/, @content) end should "include file as variable and liquid filters with arbitrary whitespace" do - assert_match %r{4 included}, @content - assert_match %r{5 included}, @content - assert_match %r{6 included}, @content + assert_match(/4 included/, @content) + assert_match(/5 included/, @content) + assert_match(/6 included/, @content) end should "include file as variable and filters with additional parameters" do - assert_match '
  • var1 = foo
  • ', @content - assert_match '
  • var2 = bar
  • ', @content + assert_match("
  • var1 = foo
  • ", @content) + assert_match("
  • var2 = bar
  • ", @content) end should "include file as partial variable" do - assert_match %r{8 included}, @content + assert_match(/8 included/, @content) end end end context "relative include tag with variable and liquid filters" do setup do - site = fixture_site({'pygments' => true}).tap(&:read).tap(&:render) - post = site.posts.docs.find {|p| p.basename.eql? "2014-09-02-relative-includes.markdown" } + site = fixture_site({ "pygments" => true }).tap(&:read).tap(&:render) + post = site.posts.docs.find do |p| + p.basename.eql? "2014-09-02-relative-includes.markdown" + end @content = post.output end should "include file as variable with liquid filters" do - assert_match %r{1 relative_include}, @content - assert_match %r{2 relative_include}, @content - assert_match %r{3 relative_include}, @content + assert_match(/1 relative_include/, @content) + assert_match(/2 relative_include/, @content) + assert_match(/3 relative_include/, @content) end should "include file as variable and liquid filters with arbitrary whitespace" do - assert_match %r{4 relative_include}, @content - assert_match %r{5 relative_include}, @content - assert_match %r{6 relative_include}, @content + assert_match(/4 relative_include/, @content) + assert_match(/5 relative_include/, @content) + assert_match(/6 relative_include/, @content) end should "include file as variable and filters with additional parameters" do - assert_match '
  • var1 = foo
  • ', @content - assert_match '
  • var2 = bar
  • ', @content + assert_match("
  • var1 = foo
  • ", @content) + assert_match("
  • var2 = bar
  • ", @content) end should "include file as partial variable" do - assert_match %r{8 relative_include}, @content + assert_match(/8 relative_include/, @content) end should "include files relative to self" do - assert_match %r{9 —\ntitle: Test Post Where YAML}, @content + assert_match(/9 —\ntitle: Test Post Where YAML/, @content) end context "trying to do bad stuff" do @@ -837,9 +1024,15 @@ CONTENT should "raise error relative to source directory" do exception = assert_raises IOError do - create_post(@content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + create_post(@content, { + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true + }) end - assert_match "Could not locate the included file 'missing.html' in any of [\"#{source_dir}\"].", exception.message + assert_match "Could not locate the included file 'missing.html' in any of " \ + "[\"#{source_dir}\"].", exception.message end end @@ -856,17 +1049,26 @@ CONTENT should "raise error relative to source directory" do exception = assert_raises ArgumentError do - create_post(@content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) + create_post(@content, { + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true + }) end - assert_equal "Invalid syntax for include tag. File contains invalid characters or sequences:\n\n ../README.markdown\n\nValid syntax:\n\n {% include_relative file.ext param='value' param2='value' %}\n\n", exception.message + assert_equal( + "Invalid syntax for include tag. File contains invalid characters or " \ + "sequences:\n\n ../README.markdown\n\nValid syntax:\n\n " \ + "{% include_relative file.ext param='value' param2='value' %}\n\n", + exception.message + ) end end end context "with symlink'd include" do - should "not allow symlink includes" do - File.open("tmp/pages-test", 'w') { |file| file.write("SYMLINK TEST") } + File.open("tmp/pages-test", "w") { |file| file.write("SYMLINK TEST") } assert_raises IOError do content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true, 'safe' => true }) + create_post(content, { + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true, + "safe" => true + }) end - @result ||= '' + @result ||= "" refute_match(/SYMLINK TEST/, @result) end @@ -892,9 +1100,19 @@ title: Include symlink {% include_relative tmp/pages-test-does-not-exist %} CONTENT - create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true, 'safe' => true }) + create_post(content, { + "permalink" => "pretty", + "source" => source_dir, + "destination" => dest_dir, + "read_posts" => true, + "safe" => true + }) end - assert_match /Ensure it exists in one of those directories and, if it is a symlink, does not point outside your site source./, ex.message + assert_match( + "Ensure it exists in one of those directories and, if it is a symlink, does " \ + "not point outside your site source.", + ex.message + ) end end end