Ensure relative paths for video are rewritten as we do for images
Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
parent
4bf20d677b
commit
939436480c
|
@ -18,6 +18,7 @@ v 8.10.2 (unreleased)
|
||||||
- Fix backup restore. !5459
|
- Fix backup restore. !5459
|
||||||
- Disable MySQL foreign key checks before dropping all tables. !5472
|
- Disable MySQL foreign key checks before dropping all tables. !5472
|
||||||
- Use project ID in repository cache to prevent stale data from persisting across projects. !5460
|
- Use project ID in repository cache to prevent stale data from persisting across projects. !5460
|
||||||
|
- Ensure relative paths for video are rewritten as we do for images. !5474
|
||||||
|
|
||||||
v 8.10.1
|
v 8.10.1
|
||||||
- Refactor repository storages documentation. !5428
|
- Refactor repository storages documentation. !5428
|
||||||
|
|
|
@ -31,6 +31,10 @@ class Blob < SimpleDelegator
|
||||||
text? && language && language.name == 'SVG'
|
text? && language && language.name == 'SVG'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def video?
|
||||||
|
UploaderHelper::VIDEO_EXT.include?(extname.downcase.delete('.'))
|
||||||
|
end
|
||||||
|
|
||||||
def to_partial_path
|
def to_partial_path
|
||||||
if lfs_pointer?
|
if lfs_pointer?
|
||||||
'download'
|
'download'
|
||||||
|
|
|
@ -295,8 +295,8 @@ class Commit
|
||||||
def uri_type(path)
|
def uri_type(path)
|
||||||
entry = @raw.tree.path(path)
|
entry = @raw.tree.path(path)
|
||||||
if entry[:type] == :blob
|
if entry[:type] == :blob
|
||||||
blob = Gitlab::Git::Blob.new(name: entry[:name])
|
blob = ::Blob.decorate(Gitlab::Git::Blob.new(name: entry[:name]))
|
||||||
blob.image? ? :raw : :blob
|
blob.image? || blob.video? ? :raw : :blob
|
||||||
else
|
else
|
||||||
entry[:type]
|
entry[:type]
|
||||||
end
|
end
|
||||||
|
|
|
@ -20,7 +20,7 @@ module Banzai
|
||||||
process_link_attr el.attribute('href')
|
process_link_attr el.attribute('href')
|
||||||
end
|
end
|
||||||
|
|
||||||
doc.search('img').each do |el|
|
doc.css('img, video').each do |el|
|
||||||
process_link_attr el.attribute('src')
|
process_link_attr el.attribute('src')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ describe BranchesFinder do
|
||||||
|
|
||||||
result = branches_finder.execute
|
result = branches_finder.execute
|
||||||
|
|
||||||
expect(result.first.name).to eq('expand-collapse-lines')
|
expect(result.first.name).to eq('video')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'sorts by last_updated' do
|
it 'sorts by last_updated' do
|
||||||
|
|
|
@ -17,6 +17,10 @@ describe Banzai::Filter::RelativeLinkFilter, lib: true do
|
||||||
%(<img src="#{path}" />)
|
%(<img src="#{path}" />)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def video(path)
|
||||||
|
%(<video src="#{path}"></video>)
|
||||||
|
end
|
||||||
|
|
||||||
def link(path)
|
def link(path)
|
||||||
%(<a href="#{path}">#{path}</a>)
|
%(<a href="#{path}">#{path}</a>)
|
||||||
end
|
end
|
||||||
|
@ -37,6 +41,12 @@ describe Banzai::Filter::RelativeLinkFilter, lib: true do
|
||||||
doc = filter(image('files/images/logo-black.png'))
|
doc = filter(image('files/images/logo-black.png'))
|
||||||
expect(doc.at_css('img')['src']).to eq 'files/images/logo-black.png'
|
expect(doc.at_css('img')['src']).to eq 'files/images/logo-black.png'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'does not modify any relative URL in video' do
|
||||||
|
doc = filter(video('files/videos/intro.mp4'), commit: project.commit('video'), ref: 'video')
|
||||||
|
|
||||||
|
expect(doc.at_css('video')['src']).to eq 'files/videos/intro.mp4'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
shared_examples :relative_to_requested do
|
shared_examples :relative_to_requested do
|
||||||
|
@ -111,11 +121,26 @@ describe Banzai::Filter::RelativeLinkFilter, lib: true do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'rebuilds relative URL for an image in the repo' do
|
it 'rebuilds relative URL for an image in the repo' do
|
||||||
|
doc = filter(image('files/images/logo-black.png'))
|
||||||
|
|
||||||
|
expect(doc.at_css('img')['src']).
|
||||||
|
to eq "/#{project_path}/raw/#{ref}/files/images/logo-black.png"
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'rebuilds relative URL for link to an image in the repo' do
|
||||||
doc = filter(link('files/images/logo-black.png'))
|
doc = filter(link('files/images/logo-black.png'))
|
||||||
|
|
||||||
expect(doc.at_css('a')['href']).
|
expect(doc.at_css('a')['href']).
|
||||||
to eq "/#{project_path}/raw/#{ref}/files/images/logo-black.png"
|
to eq "/#{project_path}/raw/#{ref}/files/images/logo-black.png"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'rebuilds relative URL for a video in the repo' do
|
||||||
|
doc = filter(video('files/videos/intro.mp4'), commit: project.commit('video'), ref: 'video')
|
||||||
|
|
||||||
|
expect(doc.at_css('video')['src']).
|
||||||
|
to eq "/#{project_path}/raw/video/files/videos/intro.mp4"
|
||||||
|
end
|
||||||
|
|
||||||
it 'does not modify relative URL with an anchor only' do
|
it 'does not modify relative URL with an anchor only' do
|
||||||
doc = filter(link('#section-1'))
|
doc = filter(link('#section-1'))
|
||||||
expect(doc.at_css('a')['href']).to eq '#section-1'
|
expect(doc.at_css('a')['href']).to eq '#section-1'
|
||||||
|
|
|
@ -33,6 +33,22 @@ describe Blob do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#video?' do
|
||||||
|
it 'is falsey with image extension' do
|
||||||
|
git_blob = Gitlab::Git::Blob.new(name: 'image.png')
|
||||||
|
|
||||||
|
expect(described_class.decorate(git_blob)).not_to be_video
|
||||||
|
end
|
||||||
|
|
||||||
|
UploaderHelper::VIDEO_EXT.each do |ext|
|
||||||
|
it "is truthy when extension is .#{ext}" do
|
||||||
|
git_blob = Gitlab::Git::Blob.new(name: "video.#{ext}")
|
||||||
|
|
||||||
|
expect(described_class.decorate(git_blob)).to be_video
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#to_partial_path' do
|
describe '#to_partial_path' do
|
||||||
def stubbed_blob(overrides = {})
|
def stubbed_blob(overrides = {})
|
||||||
overrides.reverse_merge!(
|
overrides.reverse_merge!(
|
||||||
|
|
|
@ -212,6 +212,7 @@ eos
|
||||||
it 'returns the URI type at the given path' do
|
it 'returns the URI type at the given path' do
|
||||||
expect(commit.uri_type('files/html')).to be(:tree)
|
expect(commit.uri_type('files/html')).to be(:tree)
|
||||||
expect(commit.uri_type('files/images/logo-black.png')).to be(:raw)
|
expect(commit.uri_type('files/images/logo-black.png')).to be(:raw)
|
||||||
|
expect(project.commit('video').uri_type('files/videos/intro.mp4')).to be(:raw)
|
||||||
expect(commit.uri_type('files/js/application.js')).to be(:blob)
|
expect(commit.uri_type('files/js/application.js')).to be(:blob)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,8 @@ module TestEnv
|
||||||
'gitattributes' => '5a62481',
|
'gitattributes' => '5a62481',
|
||||||
'expand-collapse-diffs' => '4842455',
|
'expand-collapse-diffs' => '4842455',
|
||||||
'expand-collapse-files' => '025db92',
|
'expand-collapse-files' => '025db92',
|
||||||
'expand-collapse-lines' => '238e82d'
|
'expand-collapse-lines' => '238e82d',
|
||||||
|
'video' => '8879059'
|
||||||
}
|
}
|
||||||
|
|
||||||
# gitlab-test-fork is a fork of gitlab-fork, but we don't necessarily
|
# gitlab-test-fork is a fork of gitlab-fork, but we don't necessarily
|
||||||
|
|
Loading…
Reference in New Issue