mirror of
https://github.com/discourse/discourse.git
synced 2025-02-06 19:38:24 +00:00
Added in c2013865d78d353280ae68135b4c218e21ffb566, this migration was supposed to only turn off the hashtag setting for existing sites (since that was the old default) but its doing it for new ones too because we run all migrations on new sites. Instead, we should only run this if the first migration was only just created, meaning its a new site.
77 lines
2.4 KiB
Ruby
77 lines
2.4 KiB
Ruby
# frozen_string_literal: true
|
|
RSpec.describe "CommonMark" do
|
|
it "passes spec" do
|
|
SiteSetting.traditional_markdown_linebreaks = true
|
|
SiteSetting.enable_markdown_typographer = false
|
|
SiteSetting.highlighted_languages = "ruby|aa"
|
|
|
|
# TODO (martin) Remove when enable_experimental_hashtag_autocomplete is default for all sites
|
|
SiteSetting.enable_experimental_hashtag_autocomplete = false
|
|
|
|
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!("<br />", "<br>")
|
|
html.gsub!("<hr />", "<hr>")
|
|
html.gsub!(%r{<img([^>]+) />}, "<img\\1>")
|
|
|
|
SiteSetting.enable_markdown_linkify = false
|
|
cooked = PrettyText.markdown(md, sanitize: false)
|
|
cooked.strip!
|
|
cooked.gsub!(" class=\"lang-auto\"", "")
|
|
cooked.gsub!(%r{<span class="hashtag">(.*)</span>}, "\\1")
|
|
cooked.gsub!(%r{<a name="(.*)" class="anchor" href="#\1*"></a>}, "")
|
|
# we support data-attributes which is not in the spec
|
|
cooked.gsub!("<pre data-code-startline=\"3\">", "<pre>")
|
|
# we don't care about this
|
|
cooked.gsub!("<blockquote>\n</blockquote>", "<blockquote></blockquote>")
|
|
html.gsub!("<blockquote>\n</blockquote>", "<blockquote></blockquote>")
|
|
html.gsub!("language-ruby", "lang-ruby")
|
|
html.gsub!("language-aa", "lang-aa")
|
|
# strip out unsupported languages
|
|
html.gsub!(%r{ 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
|
|
|
|
md = (md || String.new) << line if state == :example
|
|
|
|
html = (html || String.new) << line if state == :html
|
|
end
|
|
|
|
expect(failed).to eq(0)
|
|
end
|
|
end
|