Skip to content
代码片段 群组 项目
未验证 提交 61f029ba 编辑于 作者: Madelein van Niekerk's avatar Madelein van Niekerk 提交者: GitLab
浏览文件

Merge branch...

Merge branch '389375-searching-in-a-wiki-returns-images-that-contain-the-searched-keyword-in-basic-search' into 'master' 

Remove unwanted results from wiki basic search

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/159219



Merged-by: default avatarMadelein van Niekerk <mvanniekerk@gitlab.com>
Approved-by: default avatarMadelein van Niekerk <mvanniekerk@gitlab.com>
Reviewed-by: default avatarDmitry Gruzd <dgruzd@gitlab.com>
Co-authored-by: default avatarrkumar555 <rkumar@gitlab.com>
No related branches found
No related tags found
加载中
......@@ -2,6 +2,8 @@
module Gitlab
class WikiFileFinder < FileFinder
extend ::Gitlab::Utils::Override
attr_reader :repository
def initialize(project, ref)
......@@ -12,12 +14,24 @@ def initialize(project, ref)
private
override :search_paths
def search_paths(query)
safe_query = Regexp.escape(query.tr(' ', '-'))
safe_query = Regexp.new(safe_query, Regexp::IGNORECASE)
paths = repository.ls_files(ref)
paths.select { |path| valid_format_wiki_file?(path) }.grep(safe_query)
end
override :find_by_content
def find_by_content(query, options)
repository.search_files_by_content(query, ref, options).filter_map do |result|
blob = Gitlab::Search::FoundBlob.new(content_match: result, project: project, ref: ref, repository: repository)
blob if valid_format_wiki_file?(blob.path)
end
end
paths.grep(safe_query)
def valid_format_wiki_file?(path)
Wiki::MARKUPS.values.pluck(:extension_regex).any? { |regex| regex.match?(path) } # rubocop: disable CodeReuse/ActiveRecord -- Not an ActiveRecord
end
end
end
......@@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Gitlab::WikiFileFinder do
RSpec.describe Gitlab::WikiFileFinder, feature_category: :global_search do
describe '#find' do
let_it_be(:project) do
create(:project, :public, :wiki_repo).tap do |project|
......@@ -17,5 +17,10 @@
let(:expected_file_by_path) { 'Files/Title.md' }
let(:expected_file_by_content) { 'CHANGELOG.md' }
end
it 'does not include .gitlab/redirects.yml' do
results = described_class.new(project, project.wiki.default_branch).find(Wiki::REDIRECTS_YML)
expect(results.map(&:blob_path)).not_to include Wiki::REDIRECTS_YML
end
end
end
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册