From 8820785c8fe267789a5c6edf7f4fcb196c48b4a8 Mon Sep 17 00:00:00 2001
From: Stan Hu <stanhu@gmail.com>
Date: Sun, 6 Sep 2015 09:42:39 -0700
Subject: [PATCH] Fix emoji URLs in Markdown when relative_url_root is used

Also adds the ability to run rspecs with relative_url_defined on the enviornment. For example:

RELATIVE_URL_ROOT=/gitlab rspec

Closes #1728
---
 CHANGELOG                                  | 1 +
 lib/gitlab/markdown.rb                     | 2 +-
 spec/spec_helper.rb                        | 1 +
 spec/support/matchers/markdown_matchers.rb | 3 +++
 spec/support/relative_url.rb               | 8 ++++++++
 5 files changed, 14 insertions(+), 1 deletion(-)
 create mode 100644 spec/support/relative_url.rb

diff --git a/CHANGELOG b/CHANGELOG
index 8154d4333d9..329ce74a5d5 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 Please view this file on the master branch, on stable branches it's out of date.
 
 v 8.0.0 (unreleased)
+  - Fix emoji URLs in Markdown when relative_url_root is used (Stan Hu)
   - Omit filename in Content-Disposition header in raw file download to avoid RFC 6266 encoding issues (Stan HU)
   - Prevent anchors from being hidden by header (Stan Hu)
   - Fix bug where only the first 15 Bitbucket issues would be imported (Stan Hu)
diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb
index 097caf67a65..ae5f2544691 100644
--- a/lib/gitlab/markdown.rb
+++ b/lib/gitlab/markdown.rb
@@ -77,7 +77,7 @@ module Gitlab
         pipeline: options[:pipeline],
 
         # EmojiFilter
-        asset_root: Gitlab.config.gitlab.url,
+        asset_root: Gitlab.config.gitlab.base_url,
         asset_host: Gitlab::Application.config.asset_host,
 
         # TableOfContentsFilter
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index d0f1873ee2d..0780c4f3203 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -28,6 +28,7 @@ RSpec.configure do |config|
   config.include LoginHelpers,        type: :feature
   config.include LoginHelpers,        type: :request
   config.include StubConfiguration
+  config.include RelativeUrl,         type: feature
   config.include TestEnv
 
   config.infer_spec_type_from_file_location!
diff --git a/spec/support/matchers/markdown_matchers.rb b/spec/support/matchers/markdown_matchers.rb
index 9df226c3af8..7500d0fdf80 100644
--- a/spec/support/matchers/markdown_matchers.rb
+++ b/spec/support/matchers/markdown_matchers.rb
@@ -27,6 +27,9 @@ module MarkdownMatchers
 
     match do |actual|
       expect(actual).to have_selector('img.emoji', count: 10)
+
+      image = actual.at_css('img.emoji')
+      expect(image['src'].to_s).to start_with(Gitlab.config.gitlab.url + '/assets')
     end
   end
 
diff --git a/spec/support/relative_url.rb b/spec/support/relative_url.rb
new file mode 100644
index 00000000000..72e3ccce75b
--- /dev/null
+++ b/spec/support/relative_url.rb
@@ -0,0 +1,8 @@
+# Fix route helpers in tests (e.g. root_path, ...)
+module RelativeUrl
+  extend ActiveSupport::Concern
+
+  included do
+    default_url_options[:script_name] = Rails.application.config.relative_url_root
+  end
+end
-- 
GitLab