Commit 4e22dcb6 authored by Robert Speicher's avatar Robert Speicher

Add spec to RelativeLinkFilter for Unicode filenames

parent 6d6f807b
......@@ -99,15 +99,24 @@ module Gitlab
# Returns a String
def path_type(path)
unescaped_path = Addressable::URI.unescape(path)
if repository.tree(current_sha, unescaped_path).entries.any?
if tree?(unescaped_path)
'tree'
elsif repository.blob_at(current_sha, unescaped_path).try(:image?)
elsif image?(unescaped_path)
'raw'
else
'blob'
end
end
def tree?(path)
repository.tree(current_sha, path).entries.any?
end
def image?(path)
repository.blob_at(current_sha, path).try(:image?)
end
def current_sha
context[:commit].try(:id) ||
ref ? repository.commit(ref).try(:sha) : repository.head_commit.sha
......
# encoding: UTF-8
require 'spec_helper'
module Gitlab::Markdown
......@@ -101,6 +103,20 @@ module Gitlab::Markdown
expect(doc.at_css('a')['href']).to eq 'http://example.com'
end
it 'supports Unicode filenames' do
path = 'files/images/한글.png'
escaped = Addressable::URI.escape(path)
# Stub these methods so the file doesn't actually need to be in the repo
allow_any_instance_of(described_class).to receive(:file_exists?).
and_return(true)
allow_any_instance_of(described_class).
to receive(:image?).with(path).and_return(true)
doc = filter(image(escaped))
expect(doc.at_css('img')['src']).to match '/raw/'
end
context 'when requested path is a file in the repo' do
let(:requested_path) { 'doc/api/README.md' }
include_examples :relative_to_requested
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment