mirror of
https://github.com/discourse/discourse.git
synced 2024-12-02 16:54:06 +08:00
7c97548159
Added in c2013865d7
,
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
|