# coding: utf-8 require 'helper' class TestTags < Test::Unit::TestCase def create_post(content, override = {}, converter_class = Jekyll::MarkdownConverter) stub(Jekyll).configuration do Jekyll::DEFAULTS.merge({'pygments' => true}).merge(override) end site = Site.new(Jekyll.configuration) if override['read_posts'] site.read_posts('') end info = { :filters => [Jekyll::Filters], :registers => { :site => site } } @converter = site.converters.find { |c| c.class == converter_class } payload = { "pygments_prefix" => @converter.pygments_prefix, "pygments_suffix" => @converter.pygments_suffix } @result = Liquid::Template.parse(content).render(payload, info) @result = @converter.convert(@result) end def fill_post(code, override = {}) content = < "linenos=inline"}, tag.instance_variable_get(:@options)) tag = Jekyll::HighlightBlock.new('highlight', 'ruby linenos=table ', ["test", "{% endhighlight %}", "\n"]) assert_equal({'O' => "linenos=table"}, tag.instance_variable_get(:@options)) tag = Jekyll::HighlightBlock.new('highlight', 'ruby linenos=table nowrap', ["test", "{% endhighlight %}", "\n"]) assert_equal({'O' => "linenos=table,nowrap=true"}, tag.instance_variable_get(:@options)) tag = Jekyll::HighlightBlock.new('highlight', 'ruby linenos=table cssclass=hl', ["test", "{% endhighlight %}", "\n"]) assert_equal({'O' => "cssclass=hl,linenos=table"}, tag.instance_variable_get(:@options)) end end context "post content has highlight tag" do setup do fill_post("test") end should "not cause a markdown error" do assert_no_match /markdown\-html\-error/, @result end should "render markdown with pygments line handling" do assert_match %{
test\n
}, @result end end context "post content has highlight with file reference" do setup do fill_post("./jekyll.gemspec") end should "not embed the file" do assert_match %{
./jekyll.gemspec\n
}, @result end end context "post content has highlight tag with UTF character" do setup do fill_post("Æ") end should "render markdown with pygments line handling" do assert_match %{
Æ\n
}, @result end end context "simple post with markdown and pre tags" do setup do @content = <
}, @result end end context "using Maruku" do setup do create_post(@content) end should "parse correctly" do assert_match %r{FIGHT!}, @result assert_match %r{FINISH HIM}, @result end end context "using RDiscount" do setup do create_post(@content, 'markdown' => 'rdiscount') end should "parse correctly" do assert_match %r{FIGHT!}, @result assert_match %r{FINISH HIM}, @result end end context "using Kramdown" do setup do create_post(@content, 'markdown' => 'kramdown') end should "parse correctly" do assert_match %r{FIGHT!}, @result assert_match %r{FINISH HIM}, @result end end context "using Redcarpet" do setup do create_post(@content, 'markdown' => 'redcarpet') end should "parse correctly" do assert_match %r{FIGHT!}, @result assert_match %r{FINISH HIM}, @result end end end context "simple page with post linking" do setup do content = < 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) end should "not cause an error" do assert_no_match /markdown\-html\-error/, @result end should "have the url to the \"complex\" post from 2008-11-21" do assert_match %r{/2008/11/21/complex/}, @result end end end