diff --git a/changelogs/unreleased/fix-wiki-find-file-gitaly.yml b/changelogs/unreleased/fix-wiki-find-file-gitaly.yml new file mode 100644 index 0000000000000000000000000000000000000000..5c536be7ae51eb5e564f4b01c48404dd05735945 --- /dev/null +++ b/changelogs/unreleased/fix-wiki-find-file-gitaly.yml @@ -0,0 +1,5 @@ +--- +title: Fix finding wiki file when Gitaly is enabled +merge_request: +author: +type: fixed diff --git a/lib/gitlab/gitaly_client/wiki_service.rb b/lib/gitlab/gitaly_client/wiki_service.rb index 0d8dd5cb8f4612e3741743ec409eaa73435000ce..7a698e4b3f39e58609128c438dc5f468ba157b74 100644 --- a/lib/gitlab/gitaly_client/wiki_service.rb +++ b/lib/gitlab/gitaly_client/wiki_service.rb @@ -136,7 +136,7 @@ module Gitlab wiki_file = nil response.each do |message| - next unless message.name.present? + next unless message.name.present? || wiki_file if wiki_file wiki_file.raw_data << message.raw_data diff --git a/spec/fixtures/big-image.png b/spec/fixtures/big-image.png new file mode 100644 index 0000000000000000000000000000000000000000..a333363ac36377ac72fc13bf88a732a6ea482355 Binary files /dev/null and b/spec/fixtures/big-image.png differ diff --git a/spec/models/project_wiki_spec.rb b/spec/models/project_wiki_spec.rb index d87c1ca14f08c8f8e3db19404e724c1d7d26684c..374a157bec007147d6a61a2a1b4cb9c09e8b2e8a 100644 --- a/spec/models/project_wiki_spec.rb +++ b/spec/models/project_wiki_spec.rb @@ -172,11 +172,12 @@ describe ProjectWiki do describe '#find_file' do shared_examples 'finding a wiki file' do + let(:image) { File.open(Rails.root.join('spec', 'fixtures', 'big-image.png')) } + before do - file = File.open(Rails.root.join('spec', 'fixtures', 'dk.png')) subject.wiki # Make sure the wiki repo exists - BareRepoOperations.new(subject.repository.path_to_repo).commit_file(file, 'image.png') + BareRepoOperations.new(subject.repository.path_to_repo).commit_file(image, 'image.png') end it 'returns the latest version of the file if it exists' do @@ -192,6 +193,13 @@ describe ProjectWiki do file = subject.find_file('image.png') expect(file).to be_a Gitlab::Git::WikiFile end + + it 'returns the whole file' do + file = subject.find_file('image.png') + image.rewind + + expect(file.raw_data.b).to eq(image.read.b) + end end context 'when Gitaly wiki_find_file is enabled' do