Commit abb87832 authored by Gabriel Mazetto's avatar Gabriel Mazetto

Rename many path_with_namespace -> full_path

parent 98615318
...@@ -40,7 +40,7 @@ module MergeRequestsHelper ...@@ -40,7 +40,7 @@ module MergeRequestsHelper
def merge_path_description(merge_request, separator) def merge_path_description(merge_request, separator)
if merge_request.for_fork? if merge_request.for_fork?
"Project:Branches: #{@merge_request.source_project_path}:#{@merge_request.source_branch} #{separator} #{@merge_request.target_project.path_with_namespace}:#{@merge_request.target_branch}" "Project:Branches: #{@merge_request.source_project_path}:#{@merge_request.source_branch} #{separator} #{@merge_request.target_project.full_path}:#{@merge_request.target_branch}"
else else
"Branches: #{@merge_request.source_branch} #{separator} #{@merge_request.target_branch}" "Branches: #{@merge_request.source_branch} #{separator} #{@merge_request.target_branch}"
end end
......
...@@ -398,7 +398,7 @@ module ProjectsHelper ...@@ -398,7 +398,7 @@ module ProjectsHelper
if project if project
import_path = "/Home/Stacks/import" import_path = "/Home/Stacks/import"
repo = project.path_with_namespace repo = project.full_path
branch ||= project.default_branch branch ||= project.default_branch
sha ||= project.commit.short_id sha ||= project.commit.short_id
...@@ -458,7 +458,7 @@ module ProjectsHelper ...@@ -458,7 +458,7 @@ module ProjectsHelper
def readme_cache_key def readme_cache_key
sha = @project.commit.try(:sha) || 'nil' sha = @project.commit.try(:sha) || 'nil'
[@project.path_with_namespace, sha, "readme"].join('-') [@project.full_path, sha, "readme"].join('-')
end end
def current_ref def current_ref
......
...@@ -165,7 +165,7 @@ class Notify < BaseMailer ...@@ -165,7 +165,7 @@ class Notify < BaseMailer
headers['X-GitLab-Project'] = @project.name headers['X-GitLab-Project'] = @project.name
headers['X-GitLab-Project-Id'] = @project.id headers['X-GitLab-Project-Id'] = @project.id
headers['X-GitLab-Project-Path'] = @project.path_with_namespace headers['X-GitLab-Project-Path'] = @project.full_path
end end
def add_unsubscription_headers_and_links def add_unsubscription_headers_and_links
......
...@@ -317,7 +317,7 @@ module Ci ...@@ -317,7 +317,7 @@ module Ci
return @config_processor if defined?(@config_processor) return @config_processor if defined?(@config_processor)
@config_processor ||= begin @config_processor ||= begin
Ci::GitlabCiYamlProcessor.new(ci_yaml_file, project.path_with_namespace) Ci::GitlabCiYamlProcessor.new(ci_yaml_file, project.full_path)
rescue Ci::GitlabCiYamlProcessor::ValidationError, Psych::SyntaxError => e rescue Ci::GitlabCiYamlProcessor::ValidationError, Psych::SyntaxError => e
self.yaml_errors = e.message self.yaml_errors = e.message
nil nil
......
...@@ -630,7 +630,7 @@ class MergeRequest < ActiveRecord::Base ...@@ -630,7 +630,7 @@ class MergeRequest < ActiveRecord::Base
def target_project_path def target_project_path
if target_project if target_project
target_project.path_with_namespace target_project.full_path
else else
"(removed)" "(removed)"
end end
...@@ -638,7 +638,7 @@ class MergeRequest < ActiveRecord::Base ...@@ -638,7 +638,7 @@ class MergeRequest < ActiveRecord::Base
def source_project_path def source_project_path
if source_project if source_project
source_project.path_with_namespace source_project.full_path
else else
"(removed)" "(removed)"
end end
......
...@@ -379,7 +379,7 @@ class Project < ActiveRecord::Base ...@@ -379,7 +379,7 @@ class Project < ActiveRecord::Base
begin begin
Projects::HousekeepingService.new(project).execute Projects::HousekeepingService.new(project).execute
rescue Projects::HousekeepingService::LeaseTaken => e rescue Projects::HousekeepingService::LeaseTaken => e
Rails.logger.info("Could not perform housekeeping for project #{project.path_with_namespace} (#{project.id}): #{e}") Rails.logger.info("Could not perform housekeeping for project #{project.full_path} (#{project.id}): #{e}")
end end
end end
end end
...@@ -485,7 +485,7 @@ class Project < ActiveRecord::Base ...@@ -485,7 +485,7 @@ class Project < ActiveRecord::Base
def container_registry_url def container_registry_url
if Gitlab.config.registry.enabled if Gitlab.config.registry.enabled
"#{Gitlab.config.registry.host_port}/#{path_with_namespace.downcase}" "#{Gitlab.config.registry.host_port}/#{full_path.downcase}"
end end
end end
...@@ -524,16 +524,16 @@ class Project < ActiveRecord::Base ...@@ -524,16 +524,16 @@ class Project < ActiveRecord::Base
job_id = job_id =
if forked? if forked?
RepositoryForkWorker.perform_async(id, forked_from_project.repository_storage_path, RepositoryForkWorker.perform_async(id, forked_from_project.repository_storage_path,
forked_from_project.path_with_namespace, forked_from_project.full_path,
self.namespace.full_path) self.namespace.full_path)
else else
RepositoryImportWorker.perform_async(self.id) RepositoryImportWorker.perform_async(self.id)
end end
if job_id if job_id
Rails.logger.info "Import job started for #{path_with_namespace} with job ID #{job_id}" Rails.logger.info "Import job started for #{full_path} with job ID #{job_id}"
else else
Rails.logger.error "Import job failed to start for #{path_with_namespace}" Rails.logger.error "Import job failed to start for #{full_path}"
end end
end end
...@@ -694,7 +694,7 @@ class Project < ActiveRecord::Base ...@@ -694,7 +694,7 @@ class Project < ActiveRecord::Base
# `from` argument can be a Namespace or Project. # `from` argument can be a Namespace or Project.
def to_reference(from = nil, full: false) def to_reference(from = nil, full: false)
if full || cross_namespace_reference?(from) if full || cross_namespace_reference?(from)
path_with_namespace full_path
elsif cross_project_reference?(from) elsif cross_project_reference?(from)
path path
end end
...@@ -718,7 +718,7 @@ class Project < ActiveRecord::Base ...@@ -718,7 +718,7 @@ class Project < ActiveRecord::Base
author.ensure_incoming_email_token! author.ensure_incoming_email_token!
Gitlab::IncomingEmail.reply_address( Gitlab::IncomingEmail.reply_address(
"#{path_with_namespace}+#{author.incoming_email_token}") "#{full_path}+#{author.incoming_email_token}")
end end
def build_commit_note(commit) def build_commit_note(commit)
...@@ -1002,7 +1002,7 @@ class Project < ActiveRecord::Base ...@@ -1002,7 +1002,7 @@ class Project < ActiveRecord::Base
git_http_url: http_url_to_repo, git_http_url: http_url_to_repo,
namespace: namespace.name, namespace: namespace.name,
visibility_level: visibility_level, visibility_level: visibility_level,
path_with_namespace: path_with_namespace, path_with_namespace: full_path,
default_branch: default_branch, default_branch: default_branch,
ci_config_path: ci_config_path ci_config_path: ci_config_path
} }
...@@ -1272,8 +1272,8 @@ class Project < ActiveRecord::Base ...@@ -1272,8 +1272,8 @@ class Project < ActiveRecord::Base
[ [
{ key: 'CI_PROJECT_ID', value: id.to_s, public: true }, { key: 'CI_PROJECT_ID', value: id.to_s, public: true },
{ key: 'CI_PROJECT_NAME', value: path, public: true }, { key: 'CI_PROJECT_NAME', value: path, public: true },
{ key: 'CI_PROJECT_PATH', value: path_with_namespace, public: true }, { key: 'CI_PROJECT_PATH', value: full_path, public: true },
{ key: 'CI_PROJECT_PATH_SLUG', value: path_with_namespace.parameterize, public: true }, { key: 'CI_PROJECT_PATH_SLUG', value: full_path.parameterize, public: true },
{ key: 'CI_PROJECT_NAMESPACE', value: namespace.full_path, public: true }, { key: 'CI_PROJECT_NAMESPACE', value: namespace.full_path, public: true },
{ key: 'CI_PROJECT_URL', value: web_url, public: true } { key: 'CI_PROJECT_URL', value: web_url, public: true }
] ]
...@@ -1378,6 +1378,7 @@ class Project < ActiveRecord::Base ...@@ -1378,6 +1378,7 @@ class Project < ActiveRecord::Base
alias_method :name_with_namespace, :full_name alias_method :name_with_namespace, :full_name
alias_method :human_name, :full_name alias_method :human_name, :full_name
# @deprecated cannot remove yet because it has an index with its name in elasticsearch
alias_method :path_with_namespace, :full_path alias_method :path_with_namespace, :full_path
private private
...@@ -1432,7 +1433,7 @@ class Project < ActiveRecord::Base ...@@ -1432,7 +1433,7 @@ class Project < ActiveRecord::Base
def pending_delete_twin def pending_delete_twin
return false unless path return false unless path
Project.pending_delete.find_by_full_path(path_with_namespace) Project.pending_delete.find_by_full_path(full_path)
end end
## ##
......
...@@ -35,9 +35,9 @@ class FlowdockService < Service ...@@ -35,9 +35,9 @@ class FlowdockService < Service
data[:after], data[:after],
token: token, token: token,
repo: project.repository.path_to_repo, repo: project.repository.path_to_repo,
repo_url: "#{Gitlab.config.gitlab.url}/#{project.path_with_namespace}", repo_url: "#{Gitlab.config.gitlab.url}/#{project.full_path}",
commit_url: "#{Gitlab.config.gitlab.url}/#{project.path_with_namespace}/commit/%s", commit_url: "#{Gitlab.config.gitlab.url}/#{project.full_path}/commit/%s",
diff_url: "#{Gitlab.config.gitlab.url}/#{project.path_with_namespace}/compare/%s...%s" diff_url: "#{Gitlab.config.gitlab.url}/#{project.full_path}/compare/%s...%s"
) )
end end
end end
...@@ -140,7 +140,7 @@ class JiraService < IssueTrackerService ...@@ -140,7 +140,7 @@ class JiraService < IssueTrackerService
url: resource_url(user_path(author)) url: resource_url(user_path(author))
}, },
project: { project: {
name: project.path_with_namespace, name: project.full_path,
url: resource_url(namespace_project_path(project.namespace, project)) # rubocop:disable Cop/ProjectPathHelper url: resource_url(namespace_project_path(project.namespace, project)) # rubocop:disable Cop/ProjectPathHelper
}, },
entity: { entity: {
......
...@@ -27,7 +27,7 @@ class ProjectWiki ...@@ -27,7 +27,7 @@ class ProjectWiki
end end
def path_with_namespace def path_with_namespace
@project.path_with_namespace + ".wiki" @project.full_path + '.wiki'
end end
def web_url def web_url
...@@ -47,7 +47,7 @@ class ProjectWiki ...@@ -47,7 +47,7 @@ class ProjectWiki
end end
def wiki_base_path def wiki_base_path
[Gitlab.config.gitlab.relative_url_root, "/", @project.path_with_namespace, "/wikis"].join('') [Gitlab.config.gitlab.relative_url_root, "/", @project.full_path, "/wikis"].join('')
end end
# Returns the Gollum::Wiki object. # Returns the Gollum::Wiki object.
......
...@@ -60,7 +60,7 @@ class GitOperationService ...@@ -60,7 +60,7 @@ class GitOperationService
start_branch_name = nil if start_repository.empty_repo? start_branch_name = nil if start_repository.empty_repo?
if start_branch_name && !start_repository.branch_exists?(start_branch_name) if start_branch_name && !start_repository.branch_exists?(start_branch_name)
raise ArgumentError, "Cannot find branch #{start_branch_name} in #{start_repository.path_with_namespace}" raise ArgumentError, "Cannot find branch #{start_branch_name} in #{start_repository.full_path}"
end end
update_branch_with_hooks(branch_name) do update_branch_with_hooks(branch_name) do
......
...@@ -9,7 +9,7 @@ module Projects ...@@ -9,7 +9,7 @@ module Projects
def async_execute def async_execute
project.update_attribute(:pending_delete, true) project.update_attribute(:pending_delete, true)
job_id = ProjectDestroyWorker.perform_async(project.id, current_user.id, params) job_id = ProjectDestroyWorker.perform_async(project.id, current_user.id, params)
Rails.logger.info("User #{current_user.id} scheduled destruction of project #{project.path_with_namespace} with job ID #{job_id}") Rails.logger.info("User #{current_user.id} scheduled destruction of project #{project.full_path} with job ID #{job_id}")
end end
def execute def execute
......
...@@ -11,7 +11,7 @@ module Projects ...@@ -11,7 +11,7 @@ module Projects
success success
rescue => e rescue => e
error("Error importing repository #{project.import_url} into #{project.path_with_namespace} - #{e.message}") error("Error importing repository #{project.import_url} into #{project.full_path} - #{e.message}")
end end
private private
......
...@@ -34,7 +34,7 @@ module Projects ...@@ -34,7 +34,7 @@ module Projects
private private
def transfer(project) def transfer(project)
@old_path = project.path_with_namespace @old_path = project.full_path
@old_group = project.group @old_group = project.group
@new_path = File.join(@new_namespace.try(:full_path) || '', project.path) @new_path = File.join(@new_namespace.try(:full_path) || '', project.path)
@old_namespace = project.namespace @old_namespace = project.namespace
......
...@@ -79,7 +79,7 @@ class SystemHooksService ...@@ -79,7 +79,7 @@ class SystemHooksService
{ {
name: model.name, name: model.name,
path: model.path, path: model.path,
path_with_namespace: model.path_with_namespace, path_with_namespace: model.full_path,
project_id: model.id, project_id: model.id,
owner_name: owner.name, owner_name: owner.name,
owner_email: owner.respond_to?(:email) ? owner.email : "", owner_email: owner.respond_to?(:email) ? owner.email : "",
...@@ -93,7 +93,7 @@ class SystemHooksService ...@@ -93,7 +93,7 @@ class SystemHooksService
{ {
project_name: project.name, project_name: project.name,
project_path: project.path, project_path: project.path,
project_path_with_namespace: project.path_with_namespace, project_path_with_namespace: project.full_path,
project_id: project.id, project_id: project.id,
user_username: model.user.username, user_username: model.user.username,
user_name: model.user.name, user_name: model.user.name,
......
...@@ -66,7 +66,7 @@ class IrkerWorker ...@@ -66,7 +66,7 @@ class IrkerWorker
end end
def send_new_branch(project, repo_name, committer, branch) def send_new_branch(project, repo_name, committer, branch)
repo_path = project.path_with_namespace repo_path = project.full_path
newbranch = "#{Gitlab.config.gitlab.url}/#{repo_path}/branches" newbranch = "#{Gitlab.config.gitlab.url}/#{repo_path}/branches"
newbranch = "\x0302\x1f#{newbranch}\x0f" if @colors newbranch = "\x0302\x1f#{newbranch}\x0f" if @colors
...@@ -109,7 +109,7 @@ class IrkerWorker ...@@ -109,7 +109,7 @@ class IrkerWorker
end end
def send_commits_count(data, project, repo, committer, branch) def send_commits_count(data, project, repo, committer, branch)
url = compare_url data, project.path_with_namespace url = compare_url data, project.full_path
commits = colorize_commits data['total_commits_count'] commits = colorize_commits data['total_commits_count']
new_commits = 'new commit' new_commits = 'new commit'
......
...@@ -16,7 +16,7 @@ class RepositoryImportWorker ...@@ -16,7 +16,7 @@ class RepositoryImportWorker
Gitlab::Metrics.add_event(:import_repository, Gitlab::Metrics.add_event(:import_repository,
import_url: @project.import_url, import_url: @project.import_url,
path: @project.path_with_namespace) path: @project.full_path)
project.update_columns(import_jid: self.jid, import_error: nil) project.update_columns(import_jid: self.jid, import_error: nil)
......
...@@ -16,6 +16,7 @@ class MigrateProcessCommitWorkerJobs < ActiveRecord::Migration ...@@ -16,6 +16,7 @@ class MigrateProcessCommitWorkerJobs < ActiveRecord::Migration
end end
def repository_path def repository_path
# TODO: review if the change from Legacy storage needs to reflect here as well.
File.join(repository_storage_path, read_attribute(:path_with_namespace) + '.git') File.join(repository_storage_path, read_attribute(:path_with_namespace) + '.git')
end end
......
...@@ -30,8 +30,8 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps ...@@ -30,8 +30,8 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
expect(@merge_request.source_project).to eq @forked_project expect(@merge_request.source_project).to eq @forked_project
expect(@merge_request.source_branch).to eq "fix" expect(@merge_request.source_branch).to eq "fix"
expect(@merge_request.target_branch).to eq "master" expect(@merge_request.target_branch).to eq "master"
expect(page).to have_content @forked_project.path_with_namespace expect(page).to have_content @forked_project.full_path
expect(page).to have_content @project.path_with_namespace expect(page).to have_content @project.full_path
expect(page).to have_content @merge_request.source_branch expect(page).to have_content @merge_request.source_branch
expect(page).to have_content @merge_request.target_branch expect(page).to have_content @merge_request.target_branch
...@@ -43,10 +43,10 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps ...@@ -43,10 +43,10 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
expect(page).to have_content('Target branch') expect(page).to have_content('Target branch')
first('.js-source-project').click first('.js-source-project').click
first('.dropdown-source-project a', text: @forked_project.path_with_namespace) first('.dropdown-source-project a', text: @forked_project.full_path)
first('.js-target-project').click first('.js-target-project').click
first('.dropdown-target-project a', text: @project.path_with_namespace) first('.dropdown-target-project a', text: @project.full_path)
first('.js-source-branch').click first('.js-source-branch').click
wait_for_requests wait_for_requests
...@@ -81,8 +81,8 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps ...@@ -81,8 +81,8 @@ class Spinach::Features::ProjectForkedMergeRequests < Spinach::FeatureSteps
expect(@merge_request.source_project).to eq @forked_project expect(@merge_request.source_project).to eq @forked_project
expect(@merge_request.source_branch).to eq "fix" expect(@merge_request.source_branch).to eq "fix"
expect(@merge_request.target_branch).to eq "master" expect(@merge_request.target_branch).to eq "master"
expect(page).to have_content @forked_project.path_with_namespace expect(page).to have_content @forked_project.full_path
expect(page).to have_content @project.path_with_namespace expect(page).to have_content @project.full_path
expect(page).to have_content @merge_request.source_branch expect(page).to have_content @merge_request.source_branch
expect(page).to have_content @merge_request.target_branch expect(page).to have_content @merge_request.target_branch
end end
......
...@@ -47,7 +47,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps ...@@ -47,7 +47,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
step 'I should be redirected to "Community" page' do step 'I should be redirected to "Community" page' do
project = Project.find_by(name: 'Community') project = Project.find_by(name: 'Community')
expect(current_path).to eq "/#{project.path_with_namespace}" expect(current_path).to eq "/#{project.full_path}"
expect(status_code).to eq 200 expect(status_code).to eq 200
end end
...@@ -61,7 +61,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps ...@@ -61,7 +61,7 @@ class Spinach::Features::ProjectRedirects < Spinach::FeatureSteps
step 'I should be redirected to "Enterprise" page' do step 'I should be redirected to "Enterprise" page' do
project = Project.find_by(name: 'Enterprise') project = Project.find_by(name: 'Enterprise')
expect(current_path).to eq "/#{project.path_with_namespace}" expect(current_path).to eq "/#{project.full_path}"
expect(status_code).to eq 200 expect(status_code).to eq 200
end end
end end
...@@ -142,7 +142,7 @@ class Spinach::Features::ProjectWiki < Spinach::FeatureSteps ...@@ -142,7 +142,7 @@ class Spinach::Features::ProjectWiki < Spinach::FeatureSteps
end end
step 'I should see non-escaped link in the pages list' do step 'I should see non-escaped link in the pages list' do
expect(page).to have_xpath("//a[@href='/#{project.path_with_namespace}/wikis/one/two/three-test']") expect(page).to have_xpath("//a[@href='/#{project.full_path}/wikis/one/two/three-test']")
end end
step 'I edit the Wiki page with a path' do step 'I edit the Wiki page with a path' do
......
...@@ -90,7 +90,7 @@ module API ...@@ -90,7 +90,7 @@ module API
if result.valid? if result.valid?
if result.build if result.build
Gitlab::Metrics.add_event(:build_found, Gitlab::Metrics.add_event(:build_found,
project: result.build.project.path_with_namespace) project: result.build.project.full_path)
present result.build, with: Entities::JobRequest::Response present result.build, with: Entities::JobRequest::Response
else else
Gitlab::Metrics.add_event(:build_not_found) Gitlab::Metrics.add_event(:build_not_found)
...@@ -119,7 +119,7 @@ module API ...@@ -119,7 +119,7 @@ module API
job.trace.set(params[:trace]) if params[:trace] job.trace.set(params[:trace]) if params[:trace]
Gitlab::Metrics.add_event(:update_build, Gitlab::Metrics.add_event(:update_build,
project: job.project.path_with_namespace) project: job.project.full_path)
case params[:state].to_s case params[:state].to_s
when 'success' when 'success'
......
...@@ -7,7 +7,7 @@ module Backup ...@@ -7,7 +7,7 @@ module Backup
prepare prepare
Project.find_each(batch_size: 1000) do |project| Project.find_each(batch_size: 1000) do |project|
progress.print " * #{project.path_with_namespace} ... " progress.print " * #{project.full_path} ... "
path_to_project_repo = path_to_repo(project) path_to_project_repo = path_to_repo(project)
path_to_project_bundle = path_to_bundle(project) path_to_project_bundle = path_to_bundle(project)
...@@ -71,7 +71,7 @@ module Backup ...@@ -71,7 +71,7 @@ module Backup
end end
Project.find_each(batch_size: 1000) do |project| Project.find_each(batch_size: 1000) do |project|
progress.print " * #{project.path_with_namespace} ... " progress.print " * #{project.full_path} ... "
path_to_project_repo = path_to_repo(project) path_to_project_repo = path_to_repo(project)
path_to_project_bundle = path_to_bundle(project) path_to_project_bundle = path_to_bundle(project)
...@@ -185,7 +185,7 @@ module Backup ...@@ -185,7 +185,7 @@ module Backup
def progress_warn(project, cmd, output) def progress_warn(project, cmd, output)
progress.puts "[WARNING] Executing #{cmd}".color(:orange) progress.puts "[WARNING] Executing #{cmd}".color(:orange)
progress.puts "Ignoring error on #{project.path_with_namespace} - #{output}".color(:orange) progress.puts "Ignoring error on #{project.full_path} - #{output}".color(:orange)
end end
def empty_repo?(project_or_wiki) def empty_repo?(project_or_wiki)
......
...@@ -259,7 +259,7 @@ module Banzai ...@@ -259,7 +259,7 @@ module Banzai
found = [] found = []
projects.each do |project| projects.each do |project|
ref = project.path_with_namespace ref = project.full_path
get_or_set_cache(cache, ref) { project } get_or_set_cache(cache, ref) { project }
found << ref found << ref
end end
...@@ -277,7 +277,7 @@ module Banzai ...@@ -277,7 +277,7 @@ module Banzai
end end
def current_project_path def current_project_path
@current_project_path ||= project.path_with_namespace @current_project_path ||= project.full_path
end end
def current_project_namespace_path def current_project_namespace_path
......
...@@ -28,7 +28,7 @@ module Banzai ...@@ -28,7 +28,7 @@ module Banzai
end end
def build_url(uri) def build_url(uri)
File.join(Gitlab.config.gitlab.url, project.path_with_namespace, uri) File.join(Gitlab.config.gitlab.url, project.full_path, uri)
end end
def project def project
......
...@@ -29,7 +29,7 @@ module Ci ...@@ -29,7 +29,7 @@ module Ci
if result.valid? if result.valid?
if result.build if result.build
Gitlab::Metrics.add_event(:build_found, Gitlab::Metrics.add_event(:build_found,
project: result.build.project.path_with_namespace) project: result.build.project.full_path)
present result.build, with: Entities::BuildDetails present result.build, with: Entities::BuildDetails
else else
...@@ -64,7 +64,7 @@ module Ci ...@@ -64,7 +64,7 @@ module Ci
build.trace.set(params[:trace]) if params[:trace] build.trace.set(params[:trace]) if params[:trace]
Gitlab::Metrics.add_event(:update_build, Gitlab::Metrics.add_event(:update_build,
project: build.project.path_with_namespace) project: build.project.full_path)
case params[:state].to_s case params[:state].to_s
when 'success' when 'success'
......
...@@ -93,7 +93,7 @@ module Github ...@@ -93,7 +93,7 @@ module Github
def fetch_wiki_repository def fetch_wiki_repository
wiki_url = "https://#{options.fetch(:token)}@github.com/#{repo}.wiki.git" wiki_url = "https://#{options.fetch(:token)}@github.com/#{repo}.wiki.git"
wiki_path = "#{project.path_with_namespace}.wiki" wiki_path = "#{project.full_path}.wiki"
unless project.wiki.repository_exists? unless project.wiki.repository_exists?
gitlab_shell.import_repository(project.repository_storage_path, wiki_path, wiki_url) gitlab_shell.import_repository(project.repository_storage_path, wiki_path, wiki_url)
......
...@@ -61,7 +61,7 @@ module Gitlab ...@@ -61,7 +61,7 @@ module Gitlab
def import_wiki def import_wiki
return if project.wiki.repository_exists? return if project.wiki.repository_exists?
path_with_namespace = "#{project.path_with_namespace}.wiki" path_with_namespace = "#{project.full_path}.wiki"
import_url = project.import_url.sub(/\.git\z/, ".git/wiki") import_url = project.import_url.sub(/\.git\z/, ".git/wiki")
gitlab_shell.import_repository(project.repository_storage_path, path_with_namespace, import_url) gitlab_shell.import_repository(project.repository_storage_path, path_with_namespace, import_url)
rescue StandardError => e rescue StandardError => e
......
...@@ -117,7 +117,7 @@ module Gitlab ...@@ -117,7 +117,7 @@ module Gitlab
def subject def subject
subject_text = '[Git]' subject_text = '[Git]'
subject_text << "[#{project.path_with_namespace}]" subject_text << "[#{project.full_path}]"
subject_text << "[#{ref_name}]" if @action == :push subject_text << "[#{ref_name}]" if @action == :push
subject_text << ' ' subject_text << ' '
......
...@@ -8,7 +8,7 @@ module Gitlab ...@@ -8,7 +8,7 @@ module Gitlab
end end
def path_with_namespace def path_with_namespace
"#{project.path_with_namespace}.wiki" "#{project.full_path}.wiki"
end end
def import_url def import_url
......
...@@ -48,7 +48,7 @@ describe Projects::BlobController do ...@@ -48,7 +48,7 @@ describe Projects::BlobController do
let(:id) { 'markdown/doc' } let(:id) { 'markdown/doc' }
it 'redirects' do it 'redirects' do
expect(subject) expect(subject)
.to redirect_to("/#{project.path_with_namespace}/tree/markdown/doc") .to redirect_to("/#{project.full_path}/tree/markdown/doc")
end end
end end
end end
......
...@@ -33,7 +33,7 @@ describe Projects::BranchesController do ...@@ -33,7 +33,7 @@ describe Projects::BranchesController do
let(:ref) { "master" } let(:ref) { "master" }
it 'redirects' do it 'redirects' do
expect(subject) expect(subject)
.to redirect_to("/#{project.path_with_namespace}/tree/merge_branch") .to redirect_to("/#{project.full_path}/tree/merge_branch")
end end
end end
...@@ -42,7 +42,7 @@ describe Projects::BranchesController do ...@@ -42,7 +42,7 @@ describe Projects::BranchesController do
let(:ref) { "master" } let(:ref) { "master" }
it 'redirects' do it 'redirects' do
expect(subject) expect(subject)
.to redirect_to("/#{project.path_with_namespace}/tree/alert('merge');") .to redirect_to("/#{project.full_path}/tree/alert('merge');")
end end
end end
...@@ -82,7 +82,7 @@ describe Projects::BranchesController do ...@@ -82,7 +82,7 @@ describe Projects::BranchesController do
issue_iid: issue.iid issue_iid: issue.iid
expect(subject) expect(subject)
.to redirect_to("/#{project.path_with_namespace}/tree/1-feature-branch") .to redirect_to("/#{project.full_path}/tree/1-feature-branch")
end end
it 'posts a system note' do it 'posts a system note' do
......
...@@ -609,7 +609,7 @@ describe Projects::MergeRequestsController do ...@@ -609,7 +609,7 @@ describe Projects::MergeRequestsController do
end end
it 'links to the environment on that project' do it 'links to the environment on that project' do
expect(json_response.first['url']).to match /#{forked.path_with_namespace}/ expect(json_response.first['url']).to match /#{forked.full_path}/
end end
end end
end end
......
...@@ -81,7 +81,7 @@ describe Projects::TreeController do ...@@ -81,7 +81,7 @@ describe Projects::TreeController do
context 'redirect to blob' do context 'redirect to blob' do
let(:id) { 'master/README.md' } let(:id) { 'master/README.md' }
it 'redirects' do it 'redirects' do
redirect_url = "/#{project.path_with_namespace}/blob/master/README.md" redirect_url = "/#{project.full_path}/blob/master/README.md"
expect(subject) expect(subject)
.to redirect_to(redirect_url) .to redirect_to(redirect_url)
end end
...@@ -107,7 +107,7 @@ describe Projects::TreeController do ...@@ -107,7 +107,7 @@ describe Projects::TreeController do
it 'redirects to the new directory' do it 'redirects to the new directory' do
expect(subject) expect(subject)
.to redirect_to("/#{project.path_with_namespace}/tree/#{branch_name}/#{path}") .to redirect_to("/#{project.full_path}/tree/#{branch_name}/#{path}")
expect(flash[:notice]).to eq('The directory has been successfully created.') expect(flash[:notice]).to eq('The directory has been successfully created.')
end end
end end
...@@ -118,7 +118,7 @@ describe Projects::TreeController do ...@@ -118,7 +118,7 @@ describe Projects::TreeController do
it 'does not allow overwriting of existing files' do it 'does not allow overwriting of existing files' do
expect(subject) expect(subject)
.to redirect_to("/#{project.path_with_namespace}/tree/master") .to redirect_to("/#{project.full_path}/tree/master")
expect(flash[:alert]).to eq('A file with this name already exists') expect(flash[:alert]).to eq('A file with this name already exists')
end end
end end
......
...@@ -67,8 +67,8 @@ feature 'Create New Merge Request', js: true do ...@@ -67,8 +67,8 @@ feature 'Create New Merge Request', js: true do
visit project_new_merge_request_path(project, merge_request: { target_project_id: private_project.id }) visit project_new_merge_request_path(project, merge_request: { target_project_id: private_project.id })
expect(page).not_to have_content private_project.path_with_namespace expect(page).not_to have_content private_project.full_path
expect(page).to have_content project.path_with_namespace expect(page).to have_content project.full_path
end end
end end
...@@ -78,8 +78,8 @@ feature 'Create New Merge Request', js: true do ...@@ -78,8 +78,8 @@ feature 'Create New Merge Request', js: true do
visit project_new_merge_request_path(project, merge_request: { source_project_id: private_project.id }) visit project_new_merge_request_path(project, merge_request: { source_project_id: private_project.id })
expect(page).not_to have_content private_project.path_with_namespace expect(page).not_to have_content private_project.full_path
expect(page).to have_content project.path_with_namespace expect(page).to have_content project.full_path
end end
end end
......
...@@ -38,10 +38,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do ...@@ -38,10 +38,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do
expect(page).to have_content("regular link") expect(page).to have_content("regular link")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/regular\">regular link</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a/b/relative\">relative link 1</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a/b/c/relative\">relative link 2</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a/b/c/e/f/relative\">relative link 3</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/e/f/relative\">relative link 3</a>")
end end
end end
...@@ -60,10 +60,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do ...@@ -60,10 +60,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do
expect(page).to have_content("regular link") expect(page).to have_content("regular link")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/regular\">regular link</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/relative\">relative link 1</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
end end
end end
...@@ -82,10 +82,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do ...@@ -82,10 +82,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do
expect(page).to have_content("regular link") expect(page).to have_content("regular link")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/regular\">regular link</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/relative\">relative link 1</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
end end
end end
end end
...@@ -115,10 +115,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do ...@@ -115,10 +115,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do
expect(page).to have_content("regular link") expect(page).to have_content("regular link")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/regular\">regular link</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a/b/relative\">relative link 1</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a/b/c/relative\">relative link 2</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a/b/c/e/f/relative\">relative link 3</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a/b/c/e/f/relative\">relative link 3</a>")
end end
end end
...@@ -132,10 +132,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do ...@@ -132,10 +132,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do
expect(page).to have_content("regular link") expect(page).to have_content("regular link")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/regular\">regular link</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/relative\">relative link 1</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
end end
end end
...@@ -149,10 +149,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do ...@@ -149,10 +149,10 @@ feature 'Projects > Wiki > User previews markdown changes', js: true do
expect(page).to have_content("regular link") expect(page).to have_content("regular link")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/regular\">regular link</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/regular\">regular link</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/relative\">relative link 1</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/relative\">relative link 1</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/relative\">relative link 2</a>")
expect(page.html).to include("<a href=\"/#{project.path_with_namespace}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>") expect(page.html).to include("<a href=\"/#{project.full_path}/wikis/a-page/b-page/c-page/e/f/relative\">relative link 3</a>")
end end
end end
end end
......
...@@ -7,7 +7,7 @@ describe LabelsHelper do ...@@ -7,7 +7,7 @@ describe LabelsHelper do
context 'without subject' do context 'without subject' do
it "uses the label's project" do it "uses the label's project" do
expect(link_to_label(label)).to match %r{<a href="/#{label.project.path_with_namespace}/issues\?label_name%5B%5D=#{label.name}">.*</a>} expect(link_to_label(label)).to match %r{<a href="/#{label.project.full_path}/issues\?label_name%5B%5D=#{label.name}">.*</a>}
end end
end end
...@@ -32,7 +32,7 @@ describe LabelsHelper do ...@@ -32,7 +32,7 @@ describe LabelsHelper do
['issue', :issue, 'merge_request', :merge_request].each do |type| ['issue', :issue, 'merge_request', :merge_request].each do |type|
context "set to #{type}" do context "set to #{type}" do
it 'links to correct page' do it 'links to correct page' do
expect(link_to_label(label, type: type)).to match %r{<a href="/#{label.project.path_with_namespace}/#{type.to_s.pluralize}\?label_name%5B%5D=#{label.name}">.*</a>} expect(link_to_label(label, type: type)).to match %r{<a href="/#{label.project.full_path}/#{type.to_s.pluralize}\?label_name%5B%5D=#{label.name}">.*</a>}
end end
end end
end end
......
...@@ -210,11 +210,11 @@ describe MarkupHelper do ...@@ -210,11 +210,11 @@ describe MarkupHelper do
describe '#cross_project_reference' do describe '#cross_project_reference' do
it 'shows the full MR reference' do it 'shows the full MR reference' do
expect(helper.cross_project_reference(project, merge_request)).to include(project.path_with_namespace) expect(helper.cross_project_reference(project, merge_request)).to include(project.full_path)
end end
it 'shows the full issue reference' do it 'shows the full issue reference' do
expect(helper.cross_project_reference(project, issue)).to include(project.path_with_namespace) expect(helper.cross_project_reference(project, issue)).to include(project.full_path)
end end
end end
end end
...@@ -34,8 +34,8 @@ describe MergeRequestsHelper do ...@@ -34,8 +34,8 @@ describe MergeRequestsHelper do
let(:fork_project) { create(:empty_project, forked_from_project: project) } let(:fork_project) { create(:empty_project, forked_from_project: project) }
let(:merge_request) { create(:merge_request, source_project: fork_project, target_project: project) } let(:merge_request) { create(:merge_request, source_project: fork_project, target_project: project) }
subject { format_mr_branch_names(merge_request) } subject { format_mr_branch_names(merge_request) }
let(:source_title) { "#{fork_project.path_with_namespace}:#{merge_request.source_branch}" } let(:source_title) { "#{fork_project.full_path}:#{merge_request.source_branch}" }
let(:target_title) { "#{project.path_with_namespace}:#{merge_request.target_branch}" } let(:target_title) { "#{project.full_path}:#{merge_request.target_branch}" }
it { is_expected.to eq([source_title, target_title]) } it { is_expected.to eq([source_title, target_title]) }
end end
......
...@@ -53,13 +53,13 @@ describe ProjectsHelper do ...@@ -53,13 +53,13 @@ describe ProjectsHelper do
end end
it "returns a valid cach key" do it "returns a valid cach key" do
expect(helper.send(:readme_cache_key)).to eq("#{project.path_with_namespace}-#{project.commit.id}-readme") expect(helper.send(:readme_cache_key)).to eq("#{project.full_path}-#{project.commit.id}-readme")
end end
it "returns a valid cache key if HEAD does not exist" do it "returns a valid cache key if HEAD does not exist" do
allow(project).to receive(:commit) { nil } allow(project).to receive(:commit) { nil }
expect(helper.send(:readme_cache_key)).to eq("#{project.path_with_namespace}-nil-readme") expect(helper.send(:readme_cache_key)).to eq("#{project.full_path}-nil-readme")
end end
end end
......
...@@ -5,7 +5,7 @@ describe Banzai::Filter::AbstractReferenceFilter do ...@@ -5,7 +5,7 @@ describe Banzai::Filter::AbstractReferenceFilter do
describe '#references_per_project' do describe '#references_per_project' do
it 'returns a Hash containing references grouped per project paths' do it 'returns a Hash containing references grouped per project paths' do
doc = Nokogiri::HTML.fragment("#1 #{project.path_with_namespace}#2") doc = Nokogiri::HTML.fragment("#1 #{project.full_path}#2")
filter = described_class.new(doc, project: project) filter = described_class.new(doc, project: project)
expect(filter).to receive(:object_class).exactly(4).times.and_return(Issue) expect(filter).to receive(:object_class).exactly(4).times.and_return(Issue)
...@@ -14,7 +14,7 @@ describe Banzai::Filter::AbstractReferenceFilter do ...@@ -14,7 +14,7 @@ describe Banzai::Filter::AbstractReferenceFilter do
refs = filter.references_per_project refs = filter.references_per_project
expect(refs).to be_an_instance_of(Hash) expect(refs).to be_an_instance_of(Hash)
expect(refs[project.path_with_namespace]).to eq(Set.new(%w[1 2])) expect(refs[project.full_path]).to eq(Set.new(%w[1 2]))
end end
end end
...@@ -24,10 +24,10 @@ describe Banzai::Filter::AbstractReferenceFilter do ...@@ -24,10 +24,10 @@ describe Banzai::Filter::AbstractReferenceFilter do
filter = described_class.new(doc, project: project) filter = described_class.new(doc, project: project)
expect(filter).to receive(:references_per_project) expect(filter).to receive(:references_per_project)
.and_return({ project.path_with_namespace => Set.new(%w[1]) }) .and_return({ project.full_path => Set.new(%w[1]) })
expect(filter.projects_per_reference) expect(filter.projects_per_reference)
.to eq({ project.path_with_namespace => project }) .to eq({ project.full_path => project })
end end
end end
...@@ -37,7 +37,7 @@ describe Banzai::Filter::AbstractReferenceFilter do ...@@ -37,7 +37,7 @@ describe Banzai::Filter::AbstractReferenceFilter do
context 'with RequestStore disabled' do context 'with RequestStore disabled' do
it 'returns a list of Projects for a list of paths' do it 'returns a list of Projects for a list of paths' do
expect(filter.find_projects_for_paths([project.path_with_namespace])) expect(filter.find_projects_for_paths([project.full_path]))
.to eq([project]) .to eq([project])
end end
...@@ -49,7 +49,7 @@ describe Banzai::Filter::AbstractReferenceFilter do ...@@ -49,7 +49,7 @@ describe Banzai::Filter::AbstractReferenceFilter do
context 'with RequestStore enabled', :request_store do context 'with RequestStore enabled', :request_store do
it 'returns a list of Projects for a list of paths' do it 'returns a list of Projects for a list of paths' do
expect(filter.find_projects_for_paths([project.path_with_namespace])) expect(filter.find_projects_for_paths([project.full_path]))
.to eq([project]) .to eq([project])
end end
...@@ -88,7 +88,7 @@ describe Banzai::Filter::AbstractReferenceFilter do ...@@ -88,7 +88,7 @@ describe Banzai::Filter::AbstractReferenceFilter do
doc = Nokogiri::HTML.fragment('') doc = Nokogiri::HTML.fragment('')
filter = described_class.new(doc, project: project) filter = described_class.new(doc, project: project)
expect(filter.current_project_path).to eq(project.path_with_namespace) expect(filter.current_project_path).to eq(project.full_path)
end end
end end
end end
...@@ -100,7 +100,7 @@ describe Banzai::Filter::CommitRangeReferenceFilter do ...@@ -100,7 +100,7 @@ describe Banzai::Filter::CommitRangeReferenceFilter do
context 'cross-project / cross-namespace complete reference' do context 'cross-project / cross-namespace complete reference' do
let(:project2) { create(:project, :public, :repository) } let(:project2) { create(:project, :public, :repository) }
let(:reference) { "#{project2.path_with_namespace}@#{commit1.id}...#{commit2.id}" } let(:reference) { "#{project2.full_path}@#{commit1.id}...#{commit2.id}" }
it 'links to a valid reference' do it 'links to a valid reference' do
doc = reference_filter("See #{reference}") doc = reference_filter("See #{reference}")
...@@ -113,20 +113,20 @@ describe Banzai::Filter::CommitRangeReferenceFilter do ...@@ -113,20 +113,20 @@ describe Banzai::Filter::CommitRangeReferenceFilter do
doc = reference_filter("Fixed (#{reference}.)") doc = reference_filter("Fixed (#{reference}.)")
expect(doc.css('a').first.text) expect(doc.css('a').first.text)
.to eql("#{project2.path_with_namespace}@#{commit1.short_id}...#{commit2.short_id}") .to eql("#{project2.full_path}@#{commit1.short_id}...#{commit2.short_id}")
end end
it 'has valid text' do it 'has valid text' do
doc = reference_filter("Fixed (#{reference}.)") doc = reference_filter("Fixed (#{reference}.)")
expect(doc.text).to eql("Fixed (#{project2.path_with_namespace}@#{commit1.short_id}...#{commit2.short_id}.)") expect(doc.text).to eql("Fixed (#{project2.full_path}@#{commit1.short_id}...#{commit2.short_id}.)")
end end
it 'ignores invalid commit IDs on the referenced project' do it 'ignores invalid commit IDs on the referenced project' do
exp = act = "Fixed #{project2.path_with_namespace}@#{commit1.id.reverse}...#{commit2.id}" exp = act = "Fixed #{project2.full_path}@#{commit1.id.reverse}...#{commit2.id}"
expect(reference_filter(act).to_html).to eq exp expect(reference_filter(act).to_html).to eq exp
exp = act = "Fixed #{project2.path_with_namespace}@#{commit1.id}...#{commit2.id.reverse}" exp = act = "Fixed #{project2.full_path}@#{commit1.id}...#{commit2.id.reverse}"
expect(reference_filter(act).to_html).to eq exp expect(reference_filter(act).to_html).to eq exp
end end
end end
......
...@@ -98,18 +98,18 @@ describe Banzai::Filter::CommitReferenceFilter do ...@@ -98,18 +98,18 @@ describe Banzai::Filter::CommitReferenceFilter do
let(:namespace) { create(:namespace) } let(:namespace) { create(:namespace) }
let(:project2) { create(:project, :public, :repository, namespace: namespace) } let(:project2) { create(:project, :public, :repository, namespace: namespace) }
let(:commit) { project2.commit } let(:commit) { project2.commit }
let(:reference) { "#{project2.path_with_namespace}@#{commit.short_id}" } let(:reference) { "#{project2.full_path}@#{commit.short_id}" }
it 'link has valid text' do it 'link has valid text' do
doc = reference_filter("See (#{reference}.)") doc = reference_filter("See (#{reference}.)")
expect(doc.css('a').first.text).to eql("#{project2.path_with_namespace}@#{commit.short_id}") expect(doc.css('a').first.text).to eql("#{project2.full_path}@#{commit.short_id}")
end end
it 'has valid text' do it 'has valid text' do
doc = reference_filter("See (#{reference}.)") doc = reference_filter("See (#{reference}.)")
expect(doc.text).to eql("See (#{project2.path_with_namespace}@#{commit.short_id}.)") expect(doc.text).to eql("See (#{project2.full_path}@#{commit.short_id}.)")
end end
it 'ignores invalid commit IDs on the referenced project' do it 'ignores invalid commit IDs on the referenced project' do
...@@ -124,7 +124,7 @@ describe Banzai::Filter::CommitReferenceFilter do ...@@ -124,7 +124,7 @@ describe Banzai::Filter::CommitReferenceFilter do
let(:project) { create(:empty_project, namespace: namespace) } let(:project) { create(:empty_project, namespace: namespace) }
let(:project2) { create(:project, :public, :repository, namespace: namespace) } let(:project2) { create(:project, :public, :repository, namespace: namespace) }
let(:commit) { project2.commit } let(:commit) { project2.commit }
let(:reference) { "#{project2.path_with_namespace}@#{commit.short_id}" } let(:reference) { "#{project2.full_path}@#{commit.short_id}" }
it 'link has valid text' do it 'link has valid text' do
doc = reference_filter("See (#{reference}.)") doc = reference_filter("See (#{reference}.)")
...@@ -150,7 +150,7 @@ describe Banzai::Filter::CommitReferenceFilter do ...@@ -150,7 +150,7 @@ describe Banzai::Filter::CommitReferenceFilter do
let(:project) { create(:empty_project, namespace: namespace) } let(:project) { create(:empty_project, namespace: namespace) }
let(:project2) { create(:project, :public, :repository, namespace: namespace) } let(:project2) { create(:project, :public, :repository, namespace: namespace) }
let(:commit) { project2.commit } let(:commit) { project2.commit }
let(:reference) { "#{project2.path_with_namespace}@#{commit.short_id}" } let(:reference) { "#{project2.full_path}@#{commit.short_id}" }
it 'link has valid text' do it 'link has valid text' do
doc = reference_filter("See (#{reference}.)") doc = reference_filter("See (#{reference}.)")
......
...@@ -127,7 +127,7 @@ describe Banzai::Filter::IssueReferenceFilter do ...@@ -127,7 +127,7 @@ describe Banzai::Filter::IssueReferenceFilter do
let(:project2) { create(:empty_project, :public) } let(:project2) { create(:empty_project, :public) }
let(:issue) { create(:issue, project: project2) } let(:issue) { create(:issue, project: project2) }
let(:reference) { "#{project2.path_with_namespace}##{issue.iid}" } let(:reference) { "#{project2.full_path}##{issue.iid}" }
it 'ignores valid references when cross-reference project uses external tracker' do it 'ignores valid references when cross-reference project uses external tracker' do
expect_any_instance_of(described_class).to receive(:find_object) expect_any_instance_of(described_class).to receive(:find_object)
...@@ -148,13 +148,13 @@ describe Banzai::Filter::IssueReferenceFilter do ...@@ -148,13 +148,13 @@ describe Banzai::Filter::IssueReferenceFilter do
it 'link has valid text' do it 'link has valid text' do
doc = reference_filter("Fixed (#{reference}.)") doc = reference_filter("Fixed (#{reference}.)")
expect(doc.css('a').first.text).to eql("#{project2.path_with_namespace}##{issue.iid}") expect(doc.css('a').first.text).to eql("#{project2.full_path}##{issue.iid}")
end end
it 'has valid text' do it 'has valid text' do
doc = reference_filter("Fixed (#{reference}.)") doc = reference_filter("Fixed (#{reference}.)")
expect(doc.text).to eq("Fixed (#{project2.path_with_namespace}##{issue.iid}.)") expect(doc.text).to eq("Fixed (#{project2.full_path}##{issue.iid}.)")
end end
it 'ignores invalid issue IDs on the referenced project' do it 'ignores invalid issue IDs on the referenced project' do
...@@ -171,7 +171,7 @@ describe Banzai::Filter::IssueReferenceFilter do ...@@ -171,7 +171,7 @@ describe Banzai::Filter::IssueReferenceFilter do
let(:project) { create(:empty_project, :public, namespace: namespace) } let(:project) { create(:empty_project, :public, namespace: namespace) }
let(:project2) { create(:empty_project, :public, namespace: namespace) } let(:project2) { create(:empty_project, :public, namespace: namespace) }
let(:issue) { create(:issue, project: project2) } let(:issue) { create(:issue, project: project2) }
let(:reference) { "#{project2.path_with_namespace}##{issue.iid}" } let(:reference) { "#{project2.full_path}##{issue.iid}" }
it 'ignores valid references when cross-reference project uses external tracker' do it 'ignores valid references when cross-reference project uses external tracker' do
expect_any_instance_of(described_class).to receive(:find_object) expect_any_instance_of(described_class).to receive(:find_object)
...@@ -324,10 +324,10 @@ describe Banzai::Filter::IssueReferenceFilter do ...@@ -324,10 +324,10 @@ describe Banzai::Filter::IssueReferenceFilter do
filter = described_class.new(doc, project: project) filter = described_class.new(doc, project: project)
expect(filter).to receive(:projects_per_reference) expect(filter).to receive(:projects_per_reference)
.and_return({ project.path_with_namespace => project }) .and_return({ project.full_path => project })
expect(filter).to receive(:references_per_project) expect(filter).to receive(:references_per_project)
.and_return({ project.path_with_namespace => Set.new([issue.iid]) }) .and_return({ project.full_path => Set.new([issue.iid]) })
expect(filter.issues_per_project) expect(filter.issues_per_project)
.to eq({ project => { issue.iid => issue } }) .to eq({ project => { issue.iid => issue } })
......
...@@ -368,7 +368,7 @@ describe Banzai::Filter::LabelReferenceFilter do ...@@ -368,7 +368,7 @@ describe Banzai::Filter::LabelReferenceFilter do
describe 'cross-project / cross-namespace complete reference' do describe 'cross-project / cross-namespace complete reference' do
let(:project2) { create(:empty_project) } let(:project2) { create(:empty_project) }
let(:label) { create(:label, project: project2, color: '#00ff00') } let(:label) { create(:label, project: project2, color: '#00ff00') }
let(:reference) { "#{project2.path_with_namespace}~#{label.name}" } let(:reference) { "#{project2.full_path}~#{label.name}" }
let!(:result) { reference_filter("See #{reference}") } let!(:result) { reference_filter("See #{reference}") }
it 'links to a valid reference' do it 'links to a valid reference' do
...@@ -400,7 +400,7 @@ describe Banzai::Filter::LabelReferenceFilter do ...@@ -400,7 +400,7 @@ describe Banzai::Filter::LabelReferenceFilter do
let(:project) { create(:empty_project, namespace: namespace) } let(:project) { create(:empty_project, namespace: namespace) }
let(:project2) { create(:empty_project, namespace: namespace) } let(:project2) { create(:empty_project, namespace: namespace) }
let(:label) { create(:label, project: project2, color: '#00ff00') } let(:label) { create(:label, project: project2, color: '#00ff00') }
let(:reference) { "#{project2.path_with_namespace}~#{label.name}" } let(:reference) { "#{project2.full_path}~#{label.name}" }
let!(:result) { reference_filter("See #{reference}") } let!(:result) { reference_filter("See #{reference}") }
it 'links to a valid reference' do it 'links to a valid reference' do
...@@ -466,7 +466,7 @@ describe Banzai::Filter::LabelReferenceFilter do ...@@ -466,7 +466,7 @@ describe Banzai::Filter::LabelReferenceFilter do
let(:another_group) { create(:group) } let(:another_group) { create(:group) }
let(:another_project) { create(:empty_project, :public, namespace: another_group) } let(:another_project) { create(:empty_project, :public, namespace: another_group) }
let(:group_label) { create(:group_label, group: another_group, color: '#00ff00') } let(:group_label) { create(:group_label, group: another_group, color: '#00ff00') }
let(:reference) { "#{another_project.path_with_namespace}~#{group_label.name}" } let(:reference) { "#{another_project.full_path}~#{group_label.name}" }
let!(:result) { reference_filter("See #{reference}", project: project) } let!(:result) { reference_filter("See #{reference}", project: project) }
it 'points to referenced project issues page' do it 'points to referenced project issues page' do
...@@ -501,7 +501,7 @@ describe Banzai::Filter::LabelReferenceFilter do ...@@ -501,7 +501,7 @@ describe Banzai::Filter::LabelReferenceFilter do
let(:project) { create(:empty_project, :public, namespace: group) } let(:project) { create(:empty_project, :public, namespace: group) }
let(:another_project) { create(:empty_project, :public, namespace: group) } let(:another_project) { create(:empty_project, :public, namespace: group) }
let(:group_label) { create(:group_label, group: group, color: '#00ff00') } let(:group_label) { create(:group_label, group: group, color: '#00ff00') }
let(:reference) { "#{another_project.path_with_namespace}~#{group_label.name}" } let(:reference) { "#{another_project.full_path}~#{group_label.name}" }
let!(:result) { reference_filter("See #{reference}", project: project) } let!(:result) { reference_filter("See #{reference}", project: project) }
it 'points to referenced project issues page' do it 'points to referenced project issues page' do
...@@ -535,7 +535,7 @@ describe Banzai::Filter::LabelReferenceFilter do ...@@ -535,7 +535,7 @@ describe Banzai::Filter::LabelReferenceFilter do
let(:group) { create(:group) } let(:group) { create(:group) }
let(:project) { create(:empty_project, :public, namespace: group) } let(:project) { create(:empty_project, :public, namespace: group) }
let(:group_label) { create(:group_label, group: group, color: '#00ff00') } let(:group_label) { create(:group_label, group: group, color: '#00ff00') }
let(:reference) { "#{project.path_with_namespace}~#{group_label.name}" } let(:reference) { "#{project.full_path}~#{group_label.name}" }
let!(:result) { reference_filter("See #{reference}", project: project) } let!(:result) { reference_filter("See #{reference}", project: project) }
it 'points to referenced project issues page' do it 'points to referenced project issues page' do
......
...@@ -102,7 +102,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter do ...@@ -102,7 +102,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter do
context 'cross-project / cross-namespace complete reference' do context 'cross-project / cross-namespace complete reference' do
let(:project2) { create(:empty_project, :public) } let(:project2) { create(:empty_project, :public) }
let(:merge) { create(:merge_request, source_project: project2) } let(:merge) { create(:merge_request, source_project: project2) }
let(:reference) { "#{project2.path_with_namespace}!#{merge.iid}" } let(:reference) { "#{project2.full_path}!#{merge.iid}" }
it 'links to a valid reference' do it 'links to a valid reference' do
doc = reference_filter("See #{reference}") doc = reference_filter("See #{reference}")
...@@ -135,7 +135,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter do ...@@ -135,7 +135,7 @@ describe Banzai::Filter::MergeRequestReferenceFilter do
let(:project) { create(:empty_project, :public, namespace: namespace) } let(:project) { create(:empty_project, :public, namespace: namespace) }
let(:project2) { create(:empty_project, :public, namespace: namespace) } let(:project2) { create(:empty_project, :public, namespace: namespace) }
let!(:merge) { create(:merge_request, source_project: project2) } let!(:merge) { create(:merge_request, source_project: project2) }
let(:reference) { "#{project2.path_with_namespace}!#{merge.iid}" } let(:reference) { "#{project2.full_path}!#{merge.iid}" }
it 'links to a valid reference' do it 'links to a valid reference' do
doc = reference_filter("See #{reference}") doc = reference_filter("See #{reference}")
......
...@@ -152,7 +152,7 @@ describe Banzai::Filter::MilestoneReferenceFilter do ...@@ -152,7 +152,7 @@ describe Banzai::Filter::MilestoneReferenceFilter do
let(:namespace) { create(:namespace) } let(:namespace) { create(:namespace) }
let(:another_project) { create(:empty_project, :public, namespace: namespace) } let(:another_project) { create(:empty_project, :public, namespace: namespace) }
let(:milestone) { create(:milestone, project: another_project) } let(:milestone) { create(:milestone, project: another_project) }
let(:reference) { "#{another_project.path_with_namespace}%#{milestone.iid}" } let(:reference) { "#{another_project.full_path}%#{milestone.iid}" }
let!(:result) { reference_filter("See #{reference}") } let!(:result) { reference_filter("See #{reference}") }
it 'points to referenced project milestone page' do it 'points to referenced project milestone page' do
...@@ -164,14 +164,14 @@ describe Banzai::Filter::MilestoneReferenceFilter do ...@@ -164,14 +164,14 @@ describe Banzai::Filter::MilestoneReferenceFilter do
doc = reference_filter("See (#{reference}.)") doc = reference_filter("See (#{reference}.)")
expect(doc.css('a').first.text) expect(doc.css('a').first.text)
.to eq("#{milestone.name} in #{another_project.path_with_namespace}") .to eq("#{milestone.name} in #{another_project.full_path}")
end end
it 'has valid text' do it 'has valid text' do
doc = reference_filter("See (#{reference}.)") doc = reference_filter("See (#{reference}.)")
expect(doc.text) expect(doc.text)
.to eq("See (#{milestone.name} in #{another_project.path_with_namespace}.)") .to eq("See (#{milestone.name} in #{another_project.full_path}.)")
end end
it 'escapes the name attribute' do it 'escapes the name attribute' do
...@@ -180,7 +180,7 @@ describe Banzai::Filter::MilestoneReferenceFilter do ...@@ -180,7 +180,7 @@ describe Banzai::Filter::MilestoneReferenceFilter do
doc = reference_filter("See #{reference}") doc = reference_filter("See #{reference}")
expect(doc.css('a').first.text) expect(doc.css('a').first.text)
.to eq "#{milestone.name} in #{another_project.path_with_namespace}" .to eq "#{milestone.name} in #{another_project.full_path}"
end end
end end
...@@ -189,7 +189,7 @@ describe Banzai::Filter::MilestoneReferenceFilter do ...@@ -189,7 +189,7 @@ describe Banzai::Filter::MilestoneReferenceFilter do
let(:project) { create(:empty_project, :public, namespace: namespace) } let(:project) { create(:empty_project, :public, namespace: namespace) }
let(:another_project) { create(:empty_project, :public, namespace: namespace) } let(:another_project) { create(:empty_project, :public, namespace: namespace) }
let(:milestone) { create(:milestone, project: another_project) } let(:milestone) { create(:milestone, project: another_project) }
let(:reference) { "#{another_project.path_with_namespace}%#{milestone.iid}" } let(:reference) { "#{another_project.full_path}%#{milestone.iid}" }
let!(:result) { reference_filter("See #{reference}") } let!(:result) { reference_filter("See #{reference}") }
it 'points to referenced project milestone page' do it 'points to referenced project milestone page' do
...@@ -257,4 +257,28 @@ describe Banzai::Filter::MilestoneReferenceFilter do ...@@ -257,4 +257,28 @@ describe Banzai::Filter::MilestoneReferenceFilter do
.to eq "#{milestone.name} in #{another_project.path}" .to eq "#{milestone.name} in #{another_project.path}"
end end
end end
describe 'cross project milestone references' do
let(:another_project) { create(:empty_project, :public) }
let(:project_path) { another_project.full_path }
let(:milestone) { create(:milestone, project: another_project) }
let(:reference) { milestone.to_reference(project) }
let!(:result) { reference_filter("See #{reference}") }
it 'points to referenced project milestone page' do
expect(result.css('a').first.attr('href')).to eq urls
.project_milestone_url(another_project, milestone)
end
it 'contains cross project content' do
expect(result.css('a').first.text).to eq "#{milestone.name} in #{project_path}"
end
it 'escapes the name attribute' do
allow_any_instance_of(Milestone).to receive(:title).and_return(%{"></a>whatever<a title="})
doc = reference_filter("See #{reference}")
expect(doc.css('a').first.text).to eq "#{milestone.name} in #{project_path}"
end
end
end end
...@@ -26,7 +26,7 @@ describe Banzai::Filter::RelativeLinkFilter do ...@@ -26,7 +26,7 @@ describe Banzai::Filter::RelativeLinkFilter do
end end
let(:project) { create(:project, :repository) } let(:project) { create(:project, :repository) }
let(:project_path) { project.path_with_namespace } let(:project_path) { project.full_path }
let(:ref) { 'markdown' } let(:ref) { 'markdown' }
let(:commit) { project.commit(ref) } let(:commit) { project.commit(ref) }
let(:project_wiki) { nil } let(:project_wiki) { nil }
......
...@@ -83,7 +83,7 @@ describe Banzai::Filter::SnippetReferenceFilter do ...@@ -83,7 +83,7 @@ describe Banzai::Filter::SnippetReferenceFilter do
let(:namespace) { create(:namespace) } let(:namespace) { create(:namespace) }
let(:project2) { create(:empty_project, :public, namespace: namespace) } let(:project2) { create(:empty_project, :public, namespace: namespace) }
let!(:snippet) { create(:project_snippet, project: project2) } let!(:snippet) { create(:project_snippet, project: project2) }
let(:reference) { "#{project2.path_with_namespace}$#{snippet.id}" } let(:reference) { "#{project2.full_path}$#{snippet.id}" }
it 'links to a valid reference' do it 'links to a valid reference' do
doc = reference_filter("See #{reference}") doc = reference_filter("See #{reference}")
...@@ -116,7 +116,7 @@ describe Banzai::Filter::SnippetReferenceFilter do ...@@ -116,7 +116,7 @@ describe Banzai::Filter::SnippetReferenceFilter do
let(:project) { create(:empty_project, :public, namespace: namespace) } let(:project) { create(:empty_project, :public, namespace: namespace) }
let(:project2) { create(:empty_project, :public, namespace: namespace) } let(:project2) { create(:empty_project, :public, namespace: namespace) }
let!(:snippet) { create(:project_snippet, project: project2) } let!(:snippet) { create(:project_snippet, project: project2) }
let(:reference) { "#{project2.path_with_namespace}$#{snippet.id}" } let(:reference) { "#{project2.full_path}$#{snippet.id}" }
it 'links to a valid reference' do it 'links to a valid reference' do
doc = reference_filter("See #{reference}") doc = reference_filter("See #{reference}")
......
...@@ -14,7 +14,7 @@ describe ExtractsPath do ...@@ -14,7 +14,7 @@ describe ExtractsPath do
repo = double(ref_names: ['master', 'foo/bar/baz', 'v1.0.0', 'v2.0.0', repo = double(ref_names: ['master', 'foo/bar/baz', 'v1.0.0', 'v2.0.0',
'release/app', 'release/app/v1.0.0']) 'release/app', 'release/app/v1.0.0'])
allow(project).to receive(:repository).and_return(repo) allow(project).to receive(:repository).and_return(repo)
allow(project).to receive(:path_with_namespace) allow(project).to receive(:full_path)
.and_return('gitlab/gitlab-ci') .and_return('gitlab/gitlab-ci')
allow(request).to receive(:format=) allow(request).to receive(:format=)
end end
...@@ -29,7 +29,7 @@ describe ExtractsPath do ...@@ -29,7 +29,7 @@ describe ExtractsPath do
it "log tree path has no escape sequences" do it "log tree path has no escape sequences" do
assign_ref_vars assign_ref_vars
expect(@logs_path).to eq("/#{@project.path_with_namespace}/refs/#{ref}/logs_tree/files/ruby/popen.rb") expect(@logs_path).to eq("/#{@project.full_path}/refs/#{ref}/logs_tree/files/ruby/popen.rb")
end end
context 'ref contains %20' do context 'ref contains %20' do
......
...@@ -117,7 +117,7 @@ describe Gitlab::Email::Message::RepositoryPush do ...@@ -117,7 +117,7 @@ describe Gitlab::Email::Message::RepositoryPush do
describe '#subject' do describe '#subject' do
subject { message.subject } subject { message.subject }
it { is_expected.to include "[Git][#{project.path_with_namespace}]" } it { is_expected.to include "[Git][#{project.full_path}]" }
it { is_expected.to include "#{compare.commits.length} commits" } it { is_expected.to include "#{compare.commits.length} commits" }
it { is_expected.to include compare.commits.first.message.split("\n").first } it { is_expected.to include compare.commits.first.message.split("\n").first }
end end
......
...@@ -39,8 +39,8 @@ describe Gitlab::Gfm::UploadsRewriter do ...@@ -39,8 +39,8 @@ describe Gitlab::Gfm::UploadsRewriter do
it 'copies files' do it 'copies files' do
expect(new_files).to all(exist) expect(new_files).to all(exist)
expect(old_paths).not_to match_array new_paths expect(old_paths).not_to match_array new_paths
expect(old_paths).to all(include(old_project.path_with_namespace)) expect(old_paths).to all(include(old_project.full_path))
expect(new_paths).to all(include(new_project.path_with_namespace)) expect(new_paths).to all(include(new_project.full_path))
end end
it 'does not remove old files' do it 'does not remove old files' do
......
...@@ -5,7 +5,7 @@ describe 'forked project import' do ...@@ -5,7 +5,7 @@ describe 'forked project import' do
let!(:project_with_repo) { create(:project, name: 'test-repo-restorer', path: 'test-repo-restorer') } let!(:project_with_repo) { create(:project, name: 'test-repo-restorer', path: 'test-repo-restorer') }
let!(:project) { create(:empty_project, name: 'test-repo-restorer-no-repo', path: 'test-repo-restorer-no-repo') } let!(:project) { create(:empty_project, name: 'test-repo-restorer-no-repo', path: 'test-repo-restorer-no-repo') }
let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" } let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" }
let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.path_with_namespace) } let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.full_path) }
let(:forked_from_project) { create(:project) } let(:forked_from_project) { create(:project) }
let(:fork_link) { create(:forked_project_link, forked_from_project: project_with_repo) } let(:fork_link) { create(:forked_project_link, forked_from_project: project_with_repo) }
let(:repo_saver) { Gitlab::ImportExport::RepoSaver.new(project: project_with_repo, shared: shared) } let(:repo_saver) { Gitlab::ImportExport::RepoSaver.new(project: project_with_repo, shared: shared) }
......
...@@ -2,7 +2,7 @@ require 'spec_helper' ...@@ -2,7 +2,7 @@ require 'spec_helper'
describe Gitlab::ImportExport::ProjectTreeSaver do describe Gitlab::ImportExport::ProjectTreeSaver do
describe 'saves the project tree into a json object' do describe 'saves the project tree into a json object' do
let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.path_with_namespace) } let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.full_path) }
let(:project_tree_saver) { described_class.new(project: project, current_user: user, shared: shared) } let(:project_tree_saver) { described_class.new(project: project, current_user: user, shared: shared) }
let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" } let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" }
let(:user) { create(:user) } let(:user) { create(:user) }
......
...@@ -6,7 +6,7 @@ describe Gitlab::ImportExport::RepoRestorer do ...@@ -6,7 +6,7 @@ describe Gitlab::ImportExport::RepoRestorer do
let!(:project_with_repo) { create(:project, name: 'test-repo-restorer', path: 'test-repo-restorer') } let!(:project_with_repo) { create(:project, name: 'test-repo-restorer', path: 'test-repo-restorer') }
let!(:project) { create(:empty_project) } let!(:project) { create(:empty_project) }
let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" } let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" }
let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.path_with_namespace) } let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.full_path) }
let(:bundler) { Gitlab::ImportExport::RepoSaver.new(project: project_with_repo, shared: shared) } let(:bundler) { Gitlab::ImportExport::RepoSaver.new(project: project_with_repo, shared: shared) }
let(:bundle_path) { File.join(shared.export_path, Gitlab::ImportExport.project_bundle_filename) } let(:bundle_path) { File.join(shared.export_path, Gitlab::ImportExport.project_bundle_filename) }
let(:restorer) do let(:restorer) do
......
...@@ -5,7 +5,7 @@ describe Gitlab::ImportExport::RepoSaver do ...@@ -5,7 +5,7 @@ describe Gitlab::ImportExport::RepoSaver do
let(:user) { create(:user) } let(:user) { create(:user) }
let!(:project) { create(:empty_project, :public, name: 'searchable_project') } let!(:project) { create(:empty_project, :public, name: 'searchable_project') }
let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" } let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" }
let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.path_with_namespace) } let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.full_path) }
let(:bundler) { described_class.new(project: project, shared: shared) } let(:bundler) { described_class.new(project: project, shared: shared) }
before do before do
......
...@@ -5,7 +5,7 @@ describe Gitlab::ImportExport::WikiRepoSaver do ...@@ -5,7 +5,7 @@ describe Gitlab::ImportExport::WikiRepoSaver do
let(:user) { create(:user) } let(:user) { create(:user) }
let!(:project) { create(:empty_project, :public, name: 'searchable_project') } let!(:project) { create(:empty_project, :public, name: 'searchable_project') }
let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" } let(:export_path) { "#{Dir.tmpdir}/project_tree_saver_spec" }
let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.path_with_namespace) } let(:shared) { Gitlab::ImportExport::Shared.new(relative_path: project.full_path) }
let(:wiki_bundler) { described_class.new(project: project, shared: shared) } let(:wiki_bundler) { described_class.new(project: project, shared: shared) }
let!(:project_wiki) { ProjectWiki.new(project, user) } let!(:project_wiki) { ProjectWiki.new(project, user) }
......
...@@ -8,7 +8,7 @@ describe Gitlab::UrlBuilder do ...@@ -8,7 +8,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(commit) url = described_class.build(commit)
expect(url).to eq "#{Settings.gitlab['url']}/#{commit.project.path_with_namespace}/commit/#{commit.id}" expect(url).to eq "#{Settings.gitlab['url']}/#{commit.project.full_path}/commit/#{commit.id}"
end end
end end
...@@ -18,7 +18,7 @@ describe Gitlab::UrlBuilder do ...@@ -18,7 +18,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(issue) url = described_class.build(issue)
expect(url).to eq "#{Settings.gitlab['url']}/#{issue.project.path_with_namespace}/issues/#{issue.iid}" expect(url).to eq "#{Settings.gitlab['url']}/#{issue.project.full_path}/issues/#{issue.iid}"
end end
end end
...@@ -28,7 +28,7 @@ describe Gitlab::UrlBuilder do ...@@ -28,7 +28,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(merge_request) url = described_class.build(merge_request)
expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.path_with_namespace}/merge_requests/#{merge_request.iid}" expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.full_path}/merge_requests/#{merge_request.iid}"
end end
end end
...@@ -39,7 +39,7 @@ describe Gitlab::UrlBuilder do ...@@ -39,7 +39,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(note) url = described_class.build(note)
expect(url).to eq "#{Settings.gitlab['url']}/#{note.project.path_with_namespace}/commit/#{note.commit_id}#note_#{note.id}" expect(url).to eq "#{Settings.gitlab['url']}/#{note.project.full_path}/commit/#{note.commit_id}#note_#{note.id}"
end end
end end
...@@ -49,7 +49,7 @@ describe Gitlab::UrlBuilder do ...@@ -49,7 +49,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(note) url = described_class.build(note)
expect(url).to eq "#{Settings.gitlab['url']}/#{note.project.path_with_namespace}/commit/#{note.commit_id}#note_#{note.id}" expect(url).to eq "#{Settings.gitlab['url']}/#{note.project.full_path}/commit/#{note.commit_id}#note_#{note.id}"
end end
end end
...@@ -60,7 +60,7 @@ describe Gitlab::UrlBuilder do ...@@ -60,7 +60,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(note) url = described_class.build(note)
expect(url).to eq "#{Settings.gitlab['url']}/#{issue.project.path_with_namespace}/issues/#{issue.iid}#note_#{note.id}" expect(url).to eq "#{Settings.gitlab['url']}/#{issue.project.full_path}/issues/#{issue.iid}#note_#{note.id}"
end end
end end
...@@ -71,7 +71,7 @@ describe Gitlab::UrlBuilder do ...@@ -71,7 +71,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(note) url = described_class.build(note)
expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.path_with_namespace}/merge_requests/#{merge_request.iid}#note_#{note.id}" expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.full_path}/merge_requests/#{merge_request.iid}#note_#{note.id}"
end end
end end
...@@ -82,7 +82,7 @@ describe Gitlab::UrlBuilder do ...@@ -82,7 +82,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(note) url = described_class.build(note)
expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.path_with_namespace}/merge_requests/#{merge_request.iid}#note_#{note.id}" expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.full_path}/merge_requests/#{merge_request.iid}#note_#{note.id}"
end end
end end
...@@ -93,7 +93,7 @@ describe Gitlab::UrlBuilder do ...@@ -93,7 +93,7 @@ describe Gitlab::UrlBuilder do
url = described_class.build(note) url = described_class.build(note)
expect(url).to eq "#{Settings.gitlab['url']}/#{project_snippet.project.path_with_namespace}/snippets/#{note.noteable_id}#note_#{note.id}" expect(url).to eq "#{Settings.gitlab['url']}/#{project_snippet.project.full_path}/snippets/#{note.noteable_id}#note_#{note.id}"
end end
end end
......
...@@ -20,7 +20,7 @@ describe MigrateProcessCommitWorkerJobs do ...@@ -20,7 +20,7 @@ describe MigrateProcessCommitWorkerJobs do
.find_including_path(project.id) .find_including_path(project.id)
expect(migration_project[:path_with_namespace]) expect(migration_project[:path_with_namespace])
.to eq(project.path_with_namespace) .to eq(project.full_path)
end end
end end
......
...@@ -44,7 +44,7 @@ describe TurnNestedGroupsIntoRegularGroupsForMysql do ...@@ -44,7 +44,7 @@ describe TurnNestedGroupsIntoRegularGroupsForMysql do
end end
it 'renames projects of the nested group' do it 'renames projects of the nested group' do
expect(updated_project.path_with_namespace) expect(updated_project.full_path)
.to eq("#{parent_group.name}-#{child_group.name}/#{updated_project.path}") .to eq("#{parent_group.name}-#{child_group.name}/#{updated_project.path}")
end end
......
...@@ -161,7 +161,7 @@ eos ...@@ -161,7 +161,7 @@ eos
end end
it 'detects issues that this commit is marked as closing' do it 'detects issues that this commit is marked as closing' do
ext_ref = "#{other_project.path_with_namespace}##{other_issue.iid}" ext_ref = "#{other_project.full_path}##{other_issue.iid}"
allow(commit).to receive_messages( allow(commit).to receive_messages(
safe_message: "Fixes ##{issue.iid} and #{ext_ref}", safe_message: "Fixes ##{issue.iid} and #{ext_ref}",
......
...@@ -250,7 +250,7 @@ describe MergeRequest do ...@@ -250,7 +250,7 @@ describe MergeRequest do
end end
it 'returns a String reference with the full path' do it 'returns a String reference with the full path' do
expect(merge_request.to_reference(full: true)).to eq(project.path_with_namespace + '!1') expect(merge_request.to_reference(full: true)).to eq(project.full_path + '!1')
end end
end end
......
...@@ -105,14 +105,14 @@ describe ProjectLabel do ...@@ -105,14 +105,14 @@ describe ProjectLabel do
context 'using name' do context 'using name' do
it 'returns cross reference with label name' do it 'returns cross reference with label name' do
expect(label.to_reference(project, format: :name)) expect(label.to_reference(project, format: :name))
.to eq %Q(#{label.project.path_with_namespace}~"#{label.name}") .to eq %Q(#{label.project.full_path}~"#{label.name}")
end end
end end
context 'using id' do context 'using id' do
it 'returns cross reference with label id' do it 'returns cross reference with label id' do
expect(label.to_reference(project, format: :id)) expect(label.to_reference(project, format: :id))
.to eq %Q(#{label.project.path_with_namespace}~#{label.id}) .to eq %Q(#{label.project.full_path}~#{label.id})
end end
end end
end end
......
...@@ -31,9 +31,9 @@ describe GitlabIssueTrackerService do ...@@ -31,9 +31,9 @@ describe GitlabIssueTrackerService do
end end
it 'gives the correct path' do it 'gives the correct path' do
expect(service.project_url).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.path_with_namespace}/issues") expect(service.project_url).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.full_path}/issues")
expect(service.new_issue_url).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.path_with_namespace}/issues/new") expect(service.new_issue_url).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.full_path}/issues/new")
expect(service.issue_url(432)).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.path_with_namespace}/issues/432") expect(service.issue_url(432)).to eq("http://#{Gitlab.config.gitlab.host}/gitlab/root/#{project.full_path}/issues/432")
end end
end end
...@@ -43,9 +43,9 @@ describe GitlabIssueTrackerService do ...@@ -43,9 +43,9 @@ describe GitlabIssueTrackerService do
end end
it 'gives the correct path' do it 'gives the correct path' do
expect(service.issue_tracker_path).to eq("/gitlab/root/#{project.path_with_namespace}/issues") expect(service.issue_tracker_path).to eq("/gitlab/root/#{project.full_path}/issues")
expect(service.new_issue_path).to eq("/gitlab/root/#{project.path_with_namespace}/issues/new") expect(service.new_issue_path).to eq("/gitlab/root/#{project.full_path}/issues/new")
expect(service.issue_path(432)).to eq("/gitlab/root/#{project.path_with_namespace}/issues/432") expect(service.issue_path(432)).to eq("/gitlab/root/#{project.full_path}/issues/432")
end end
end end
end end
......
...@@ -306,6 +306,7 @@ describe Project do ...@@ -306,6 +306,7 @@ describe Project do
it { is_expected.to respond_to(:execute_hooks) } it { is_expected.to respond_to(:execute_hooks) }
it { is_expected.to respond_to(:owner) } it { is_expected.to respond_to(:owner) }
it { is_expected.to respond_to(:path_with_namespace) } it { is_expected.to respond_to(:path_with_namespace) }
it { is_expected.to respond_to(:full_path) }
end end
describe 'delegation' do describe 'delegation' do
...@@ -460,7 +461,7 @@ describe Project do ...@@ -460,7 +461,7 @@ describe Project do
end end
it 'returns the address to create a new issue' do it 'returns the address to create a new issue' do
address = "p+#{project.path_with_namespace}+#{user.incoming_email_token}@gl.ab" address = "p+#{project.full_path}+#{user.incoming_email_token}@gl.ab"
expect(project.new_issue_address(user)).to eq(address) expect(project.new_issue_address(user)).to eq(address)
end end
...@@ -1155,6 +1156,33 @@ describe Project do ...@@ -1155,6 +1156,33 @@ describe Project do
end end
end end
describe '#pages_url' do
let(:group) { create :group, name: group_name }
let(:project) { create :empty_project, namespace: group, name: project_name }
let(:domain) { 'Example.com' }
subject { project.pages_url }
before do
allow(Settings.pages).to receive(:host).and_return(domain)
allow(Gitlab.config.pages).to receive(:url).and_return('http://example.com')
end
context 'group page' do
let(:group_name) { 'Group' }
let(:project_name) { 'group.example.com' }
it { is_expected.to eq("http://group.example.com") }
end
context 'project page' do
let(:group_name) { 'Group' }
let(:project_name) { 'Project' }
it { is_expected.to eq("http://group.example.com/project") }
end
end
describe '.search' do describe '.search' do
let(:project) { create(:empty_project, description: 'kitten mittens') } let(:project) { create(:empty_project, description: 'kitten mittens') }
......
...@@ -301,7 +301,7 @@ describe API::Internal do ...@@ -301,7 +301,7 @@ describe API::Internal do
context 'project as /namespace/project' do context 'project as /namespace/project' do
it do it do
pull(key, project_with_repo_path('/' + project.path_with_namespace)) pull(key, project_with_repo_path('/' + project.full_path))
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response["status"]).to be_truthy expect(json_response["status"]).to be_truthy
...@@ -312,7 +312,7 @@ describe API::Internal do ...@@ -312,7 +312,7 @@ describe API::Internal do
context 'project as namespace/project' do context 'project as namespace/project' do
it do it do
pull(key, project_with_repo_path(project.path_with_namespace)) pull(key, project_with_repo_path(project.full_path))
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response["status"]).to be_truthy expect(json_response["status"]).to be_truthy
......
...@@ -453,7 +453,7 @@ describe GitPushService, services: true do ...@@ -453,7 +453,7 @@ describe GitPushService, services: true do
let(:message) { "this is some work.\n\ncloses JIRA-1" } let(:message) { "this is some work.\n\ncloses JIRA-1" }
let(:comment_body) do let(:comment_body) do
{ {
body: "Issue solved with [#{closing_commit.id}|http://#{Gitlab.config.gitlab.host}/#{project.path_with_namespace}/commit/#{closing_commit.id}]." body: "Issue solved with [#{closing_commit.id}|http://#{Gitlab.config.gitlab.host}/#{project.full_path}/commit/#{closing_commit.id}]."
}.to_json }.to_json
end end
......
...@@ -26,7 +26,7 @@ describe Projects::ImportService do ...@@ -26,7 +26,7 @@ describe Projects::ImportService do
result = subject.execute result = subject.execute
expect(result[:status]).to eq :error expect(result[:status]).to eq :error
expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.path_with_namespace} - The repository could not be created." expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.full_path} - The repository could not be created."
end end
end end
...@@ -52,7 +52,7 @@ describe Projects::ImportService do ...@@ -52,7 +52,7 @@ describe Projects::ImportService do
result = subject.execute result = subject.execute
expect(result[:status]).to eq :error expect(result[:status]).to eq :error
expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.path_with_namespace} - Failed to import the repository" expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.full_path} - Failed to import the repository"
end end
it 'does not remove the GitHub remote' do it 'does not remove the GitHub remote' do
...@@ -86,7 +86,7 @@ describe Projects::ImportService do ...@@ -86,7 +86,7 @@ describe Projects::ImportService do
result = subject.execute result = subject.execute
expect(result[:status]).to eq :error expect(result[:status]).to eq :error
expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.path_with_namespace} - Failed to import the repository" expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.full_path} - Failed to import the repository"
end end
end end
end end
...@@ -129,7 +129,7 @@ describe Projects::ImportService do ...@@ -129,7 +129,7 @@ describe Projects::ImportService do
result = subject.execute result = subject.execute
expect(result[:status]).to eq :error expect(result[:status]).to eq :error
expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.path_with_namespace} - The remote data could not be imported." expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.full_path} - The remote data could not be imported."
end end
it 'fails if importer raise an error' do it 'fails if importer raise an error' do
...@@ -139,7 +139,7 @@ describe Projects::ImportService do ...@@ -139,7 +139,7 @@ describe Projects::ImportService do
result = subject.execute result = subject.execute
expect(result[:status]).to eq :error expect(result[:status]).to eq :error
expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.path_with_namespace} - Github: failed to connect API" expect(result[:message]).to eq "Error importing repository #{project.import_url} into #{project.full_path} - Github: failed to connect API"
end end
it 'expires content cache after error' do it 'expires content cache after error' do
......
...@@ -667,7 +667,7 @@ describe SystemNoteService do ...@@ -667,7 +667,7 @@ describe SystemNoteService do
end end
it 'mentions referenced project' do it 'mentions referenced project' do
expect(subject.note).to include new_project.path_with_namespace expect(subject.note).to include new_project.full_path
end end
end end
...@@ -873,7 +873,7 @@ describe SystemNoteService do ...@@ -873,7 +873,7 @@ describe SystemNoteService do
describe "existing reference" do describe "existing reference" do
before do before do
allow(JIRA::Resource::Remotelink).to receive(:all).and_return([]) allow(JIRA::Resource::Remotelink).to receive(:all).and_return([])
message = "[#{author.name}|http://localhost/#{author.username}] mentioned this issue in [a commit of #{project.path_with_namespace}|http://localhost/#{project.path_with_namespace}/commit/#{commit.id}]:\n'#{commit.title.chomp}'" message = "[#{author.name}|http://localhost/#{author.username}] mentioned this issue in [a commit of #{project.full_path}|http://localhost/#{project.path_with_namespace}/commit/#{commit.id}]:\n'#{commit.title.chomp}'"
allow_any_instance_of(JIRA::Resource::Issue).to receive(:comments).and_return([OpenStruct.new(body: message)]) allow_any_instance_of(JIRA::Resource::Issue).to receive(:comments).and_return([OpenStruct.new(body: message)])
end end
......
...@@ -50,7 +50,7 @@ shared_examples 'an email with X-GitLab headers containing project details' do ...@@ -50,7 +50,7 @@ shared_examples 'an email with X-GitLab headers containing project details' do
aggregate_failures do aggregate_failures do
is_expected.to have_header('X-GitLab-Project', /#{project.name}/) is_expected.to have_header('X-GitLab-Project', /#{project.name}/)
is_expected.to have_header('X-GitLab-Project-Id', /#{project.id}/) is_expected.to have_header('X-GitLab-Project-Id', /#{project.id}/)
is_expected.to have_header('X-GitLab-Project-Path', /#{project.path_with_namespace}/) is_expected.to have_header('X-GitLab-Project-Path', /#{project.full_path}/)
end end
end end
end end
......
...@@ -8,7 +8,7 @@ RSpec.shared_examples 'project hook data with deprecateds' do |project_key: :pro ...@@ -8,7 +8,7 @@ RSpec.shared_examples 'project hook data with deprecateds' do |project_key: :pro
expect(data[project_key][:git_ssh_url]).to eq(project.ssh_url_to_repo) expect(data[project_key][:git_ssh_url]).to eq(project.ssh_url_to_repo)
expect(data[project_key][:namespace]).to eq(project.namespace.name) expect(data[project_key][:namespace]).to eq(project.namespace.name)
expect(data[project_key][:visibility_level]).to eq(project.visibility_level) expect(data[project_key][:visibility_level]).to eq(project.visibility_level)
expect(data[project_key][:path_with_namespace]).to eq(project.path_with_namespace) expect(data[project_key][:path_with_namespace]).to eq(project.full_path)
expect(data[project_key][:default_branch]).to eq(project.default_branch) expect(data[project_key][:default_branch]).to eq(project.default_branch)
expect(data[project_key][:homepage]).to eq(project.web_url) expect(data[project_key][:homepage]).to eq(project.web_url)
expect(data[project_key][:url]).to eq(project.url_to_repo) expect(data[project_key][:url]).to eq(project.url_to_repo)
...@@ -27,7 +27,7 @@ RSpec.shared_examples 'project hook data' do |project_key: :project| ...@@ -27,7 +27,7 @@ RSpec.shared_examples 'project hook data' do |project_key: :project|
expect(data[project_key][:git_ssh_url]).to eq(project.ssh_url_to_repo) expect(data[project_key][:git_ssh_url]).to eq(project.ssh_url_to_repo)
expect(data[project_key][:namespace]).to eq(project.namespace.name) expect(data[project_key][:namespace]).to eq(project.namespace.name)
expect(data[project_key][:visibility_level]).to eq(project.visibility_level) expect(data[project_key][:visibility_level]).to eq(project.visibility_level)
expect(data[project_key][:path_with_namespace]).to eq(project.path_with_namespace) expect(data[project_key][:path_with_namespace]).to eq(project.full_path)
expect(data[project_key][:default_branch]).to eq(project.default_branch) expect(data[project_key][:default_branch]).to eq(project.default_branch)
end end
end end
......
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