# frozen_string_literal: true require 'rails_helper' describe "CommonMark" do it 'passes spec' do SiteSetting.traditional_markdown_linebreaks = true SiteSetting.enable_markdown_typographer = false SiteSetting.highlighted_languages = 'ruby|aa' html, state, md = nil failed = 0 File.readlines(Rails.root + 'spec/fixtures/md/spec.txt').each do |line| if line == "```````````````````````````````` example\n" state = :example next end if line == "````````````````````````````````\n" md.gsub!('→', "\t") html ||= String.new html.gsub!('→', "\t") html.strip! # normalize brs html.gsub!('
', '
') html.gsub!('
', '
') html.gsub!(/]+) \/>/, "") SiteSetting.enable_markdown_linkify = false cooked = PrettyText.markdown(md, sanitize: false) cooked.strip! cooked.gsub!(" class=\"lang-auto\"", '') cooked.gsub!(/(.*)<\/span>/, "\\1") cooked.gsub!(/<\/a>/, "") # we support data-attributes which is not in the spec cooked.gsub!("
", '
')
        # we don't care about this
        cooked.gsub!("
\n
", "
") html.gsub!("
\n
", "
") html.gsub!("language-ruby", "lang-ruby") html.gsub!("language-aa", "lang-aa") # strip out unsupported languages html.gsub!(/ class="language-[;f].*"/, "") unless cooked == html failed += 1 puts "FAILED SPEC" puts "Expected: " puts html puts "Got: " puts cooked puts "Markdown: " puts md puts end html, state, md = nil next end if state == :example && line == ".\n" state = :html next end if state == :example md = (md || String.new) << line end if state == :html html = (html || String.new) << line end end expect(failed).to eq(0) end end