diff --git a/app/assets/javascripts/repository/components/breadcrumbs.vue b/app/assets/javascripts/repository/components/breadcrumbs.vue index f6b9ea5d30d7de04e90d458f10520bd2a7ed0968..e1382aa86d9311501914749e8739883929f20b35 100644 --- a/app/assets/javascripts/repository/components/breadcrumbs.vue +++ b/app/assets/javascripts/repository/components/breadcrumbs.vue @@ -104,10 +104,10 @@ export default { return acc.concat({ name, path, - to: `/tree/${this.ref}${path}`, + to: `/-/tree/${this.ref}${path}`, }); }, - [{ name: this.projectShortPath, path: '/', to: `/tree/${this.ref}/` }], + [{ name: this.projectShortPath, path: '/', to: `/-/tree/${this.ref}/` }], ); }, canCreateMrFromFork() { diff --git a/app/assets/javascripts/repository/components/table/parent_row.vue b/app/assets/javascripts/repository/components/table/parent_row.vue index 3c39f4042266fd3b4c9e7889005c3a7aa375a1f5..38aa672bc1c2292688be72f811752af6110c643a 100644 --- a/app/assets/javascripts/repository/components/table/parent_row.vue +++ b/app/assets/javascripts/repository/components/table/parent_row.vue @@ -15,7 +15,7 @@ export default { const splitArray = this.path.split('/'); splitArray.pop(); - return { path: `/tree/${this.commitRef}/${splitArray.join('/')}` }; + return { path: `/-/tree/${this.commitRef}/${splitArray.join('/')}` }; }, }, methods: { diff --git a/app/assets/javascripts/repository/components/table/row.vue b/app/assets/javascripts/repository/components/table/row.vue index cf0457a2abfbb4e7ebb2ae27de10ca891ff7dae7..57dd08c21428601c99d9227e4f08adb7e3a226a4 100644 --- a/app/assets/javascripts/repository/components/table/row.vue +++ b/app/assets/javascripts/repository/components/table/row.vue @@ -84,7 +84,7 @@ export default { }, computed: { routerLinkTo() { - return this.isFolder ? { path: `/tree/${this.ref}/${this.path}` } : null; + return this.isFolder ? { path: `/-/tree/${this.ref}/${this.path}` } : null; }, iconName() { return `fa-${getIconName(this.type, this.path)}`; diff --git a/app/assets/javascripts/repository/router.js b/app/assets/javascripts/repository/router.js index ebf0a7091eadb0645a65c158cdb4a36ba9fe4884..fa544444be8cbd4f0eccaae104312cd4c12b4806 100644 --- a/app/assets/javascripts/repository/router.js +++ b/app/assets/javascripts/repository/router.js @@ -12,7 +12,7 @@ export default function createRouter(base, baseRef) { base: joinPaths(gon.relative_url_root || '', base), routes: [ { - path: `/tree/${baseRef}(/.*)?`, + path: `/-/tree/${baseRef}(/.*)?`, name: 'treePath', component: TreePage, props: route => ({ diff --git a/app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue b/app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue index b874bedab367bd431f88c00c0c1d13f8d1fb1c32..bf3c3666300a632a3d2f76734f8db3280c55d6d1 100644 --- a/app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue +++ b/app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue @@ -79,10 +79,10 @@ export default { return this.projectPath.indexOf('/') === 0 ? '' : `${gon.relative_url_root}/`; }, fullOldPath() { - return `${this.basePath}${this.projectPath}/raw/${this.oldSha}/${this.oldPath}`; + return `${this.basePath}${this.projectPath}/-/raw/${this.oldSha}/${this.oldPath}`; }, fullNewPath() { - return `${this.basePath}${this.projectPath}/raw/${this.newSha}/${this.newPath}`; + return `${this.basePath}${this.projectPath}/-/raw/${this.newSha}/${this.newPath}`; }, }, }; diff --git a/app/helpers/submodule_helper.rb b/app/helpers/submodule_helper.rb index 4b83988e8bb124cfad8b62a663c587e8a33316d1..e5400652458148128955fd7f41d6a80d82637d4f 100644 --- a/app/helpers/submodule_helper.rb +++ b/app/helpers/submodule_helper.rb @@ -43,6 +43,8 @@ def submodule_links_for_url(submodule_item_id, url, repository) elsif github_dot_com_url?(url) standard_links('github.com', namespace, project, submodule_item_id) elsif gitlab_dot_com_url?(url) + # This need to be replaced with /-/tree routing once one is landed on + # GitLab.com. Issue https://gitlab.com/gitlab-org/gitlab/issues/42764 standard_links('gitlab.com', namespace, project, submodule_item_id) else [sanitize_submodule_url(url), nil] diff --git a/app/helpers/tree_helper.rb b/app/helpers/tree_helper.rb index af1919eeb409351cef4162fe6055cd85b6260ab2..0b50b8b1130166ba25750f82ced66a57ed161e63 100644 --- a/app/helpers/tree_helper.rb +++ b/app/helpers/tree_helper.rb @@ -38,13 +38,13 @@ def tree_icon(type, mode, name) # many paths, as with a repository tree that has thousands of items. def fast_project_blob_path(project, blob_path) ActionDispatch::Journey::Router::Utils.escape_path( - File.join(relative_url_root, project.path_with_namespace, 'blob', blob_path) + File.join(relative_url_root, project.path_with_namespace, '-', 'blob', blob_path) ) end def fast_project_tree_path(project, tree_path) ActionDispatch::Journey::Router::Utils.escape_path( - File.join(relative_url_root, project.path_with_namespace, 'tree', tree_path) + File.join(relative_url_root, project.path_with_namespace, '-', 'tree', tree_path) ) end diff --git a/changelogs/unreleased/dz-scope-repository-routes.yml b/changelogs/unreleased/dz-scope-repository-routes.yml new file mode 100644 index 0000000000000000000000000000000000000000..302227dde57e5913b30bca8930d204b1b927ced2 --- /dev/null +++ b/changelogs/unreleased/dz-scope-repository-routes.yml @@ -0,0 +1,5 @@ +--- +title: Move repository routes under - scope +merge_request: 20455 +author: +type: deprecated diff --git a/config/routes/project.rb b/config/routes/project.rb index c29d673f315dc232fd96b8997b7f4ad76734a2fe..d2b9629949fe2ec40dd9227d8585765a32459514 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -546,7 +546,8 @@ :forks, :group_links, :import, :avatar, :mirror, :cycle_analytics, :mattermost, :variables, :triggers, :environments, :protected_environments, :error_tracking, - :serverless, :clusters, :audit_events, :wikis, :merge_requests) + :serverless, :clusters, :audit_events, :wikis, :merge_requests, + :blob, :tree, :raw, :blame, :commits, :create_dir, :find_file, :files) end # rubocop: disable Cop/PutProjectRoutesUnderScope diff --git a/config/routes/repository.rb b/config/routes/repository.rb index 4815575ba9f8fa1d8be87e4d55a7d71ed74ced3e..e59168c6af49623997b81728dfbecd297def01ea 100644 --- a/config/routes/repository.rb +++ b/config/routes/repository.rb @@ -65,7 +65,7 @@ resources :protected_tags, only: [:index, :show, :create, :update, :destroy] end - scope constraints: { id: /[^\0]+/ } do + scope path: '-', constraints: { id: /[^\0]+/ } do scope controller: :blob do get '/new/*id', action: :new, as: :new_blob post '/create/*id', action: :create, as: :create_blob diff --git a/ee/app/assets/javascripts/onboarding/tour_parts.js b/ee/app/assets/javascripts/onboarding/tour_parts.js index a2e269f96064f5dcbab54d3ab213c066c7768561..bfba7fee4b0cd2f5074ecf1cc9570222412108e1 100644 --- a/ee/app/assets/javascripts/onboarding/tour_parts.js +++ b/ee/app/assets/javascripts/onboarding/tour_parts.js @@ -36,7 +36,7 @@ const GUIDED_GITLAB_TOUR = [ }, }, { - forUrl: ({ projectFullPath }) => new RegExp(`${projectFullPath}/tree/master$`, ''), + forUrl: ({ projectFullPath }) => new RegExp(`${projectFullPath}/-/tree/master$`, ''), getHelpContent: ({ projectName }) => [ { text: sprintf( @@ -69,7 +69,7 @@ const GUIDED_GITLAB_TOUR = [ }, }, { - forUrl: ({ projectFullPath }) => new RegExp(`${projectFullPath}/commits/master$`, ''), + forUrl: ({ projectFullPath }) => new RegExp(`${projectFullPath}/-/commits/master$`, ''), getHelpContent: () => [ { text: s__( diff --git a/ee/config/routes/project.rb b/ee/config/routes/project.rb index dc536bc41cedea66e7f5d2af439fade2ea2aeb11..91afac7e2ea1917d8626838803035af15d040f96 100644 --- a/ee/config/routes/project.rb +++ b/ee/config/routes/project.rb @@ -243,7 +243,7 @@ project: params[:project_id] ) - "/#{project_full_path}/tree/#{params[:id]}" + "/#{project_full_path}/-/tree/#{params[:id]}" } end end diff --git a/ee/spec/frontend/environments_dashboard/components/mock_environment.json b/ee/spec/frontend/environments_dashboard/components/mock_environment.json index fa71b66d34336b4c594e17e49b4ee2eb59243f4e..0a04cf3a4bfb589eac154328688d934b21e3f2a7 100644 --- a/ee/spec/frontend/environments_dashboard/components/mock_environment.json +++ b/ee/spec/frontend/environments_dashboard/components/mock_environment.json @@ -12,7 +12,7 @@ "deployed_at": "2019-02-20T16:15:40.122Z", "ref": { "name": "master", - "ref_path": "/root/minimal-ruby-app/tree/master", + "ref_path": "/root/minimal-ruby-app/-/tree/master", "tag": false }, "created_at": "2019-02-20T16:09:12.213Z", diff --git a/ee/spec/helpers/ee/version_check_helper_spec.rb b/ee/spec/helpers/ee/version_check_helper_spec.rb index ccab1addff338e7f7b65832a8eb9a11f0be81475..a55ae43ddfc64490f84ea824f0c4f23dd90669a4 100644 --- a/ee/spec/helpers/ee/version_check_helper_spec.rb +++ b/ee/spec/helpers/ee/version_check_helper_spec.rb @@ -12,7 +12,7 @@ end it 'links to an ee-commit' do - expect(helper.link_to_version).to include('https://gitlab.com/gitlab-org/gitlab/commits/deadbeef') + expect(helper.link_to_version).to include('https://gitlab.com/gitlab-org/gitlab/-/commits/deadbeef') end end diff --git a/ee/spec/lib/gitlab/ci/parsers/security/dependency_list_spec.rb b/ee/spec/lib/gitlab/ci/parsers/security/dependency_list_spec.rb index 207a5fee61cf4d5acd1e0153cffc3c61ef8b6b22..4827073288ce667a5836c5225e18ded8aaed1abf 100644 --- a/ee/spec/lib/gitlab/ci/parsers/security/dependency_list_spec.rb +++ b/ee/spec/lib/gitlab/ci/parsers/security/dependency_list_spec.rb @@ -19,7 +19,7 @@ let(:artifact) { create(:ee_ci_job_artifact, :dependency_list) } it 'parses all files' do - blob_path = "/#{project.full_path}/blob/#{sha}/yarn/yarn.lock" + blob_path = "/#{project.full_path}/-/blob/#{sha}/yarn/yarn.lock" expect(report.dependencies.size).to eq(21) expect(report.dependencies[0][:name]).to eq('mini_portile2') diff --git a/ee/spec/lib/gitlab/ci/parsers/security/formatters/dependency_list_spec.rb b/ee/spec/lib/gitlab/ci/parsers/security/formatters/dependency_list_spec.rb index 892f3c341d8d3e8f4ad37cf0137d3a653ab904ea..806bbb7a0194688332ca5b84b53d23267c253637 100644 --- a/ee/spec/lib/gitlab/ci/parsers/security/formatters/dependency_list_spec.rb +++ b/ee/spec/lib/gitlab/ci/parsers/security/formatters/dependency_list_spec.rb @@ -20,7 +20,7 @@ let(:package_manager) { 'bundler' } let(:file_path) { 'rails/Gemfile.lock' } let(:data) { formatter.format(dependency, package_manager, file_path, parsed_report['vulnerabilities']) } - let(:blob_path) { "/#{project.full_path}/blob/#{sha}/rails/Gemfile.lock" } + let(:blob_path) { "/#{project.full_path}/-/blob/#{sha}/rails/Gemfile.lock" } context 'with secure dependency' do let(:dependency) { parsed_report['dependency_files'][0]['dependencies'][0] } diff --git a/ee/spec/models/ci/build_spec.rb b/ee/spec/models/ci/build_spec.rb index fd7653de302f79604e89bbc1792135f70c93c8e1..17c6f66229dd25df95c98fb7ebf689167e3b5ca1 100644 --- a/ee/spec/models/ci/build_spec.rb +++ b/ee/spec/models/ci/build_spec.rb @@ -245,7 +245,7 @@ it 'parses blobs and add the results to the report' do subject - blob_path = "/#{project.full_path}/blob/#{job.sha}/yarn/yarn.lock" + blob_path = "/#{project.full_path}/-/blob/#{job.sha}/yarn/yarn.lock" mini_portile2 = dependency_list_report.dependencies[0] yarn = dependency_list_report.dependencies[20] diff --git a/ee/spec/requests/jira_routing_spec.rb b/ee/spec/requests/jira_routing_spec.rb index 8a19ab6e1d491ac32706e13e604a1cce3a959d83..80d736eae9c0bea0825747d7d935731089c3bba9 100644 --- a/ee/spec/requests/jira_routing_spec.rb +++ b/ee/spec/requests/jira_routing_spec.rb @@ -30,7 +30,7 @@ def redirects_to_canonical_path(jira_path, redirect_path) '/group/group@sub_group@sub_group_project' | '/group/sub_group/sub_group_project' '/group@sub_group/group@sub_group@sub_group_project' | '/group/sub_group/sub_group_project' '/group/group@sub_group@sub_group_project/commit/1234567' | '/group/sub_group/sub_group_project/commit/1234567' - '/group/group@sub_group@sub_group_project/tree/1234567' | '/group/sub_group/sub_group_project/tree/1234567' + '/group/group@sub_group@sub_group_project/tree/1234567' | '/group/sub_group/sub_group_project/-/tree/1234567' end with_them do @@ -50,7 +50,7 @@ def redirects_to_canonical_path(jira_path, redirect_path) where(:jira_path, :redirect_path) do '/-/jira/group/group_project' | '/group/group_project' '/-/jira/group/group_project/commit/1234567' | '/group/group_project/commit/1234567' - '/-/jira/group/group_project/tree/1234567' | '/group/group_project/tree/1234567' + '/-/jira/group/group_project/tree/1234567' | '/group/group_project/-/tree/1234567' end with_them do diff --git a/lib/banzai/filter/relative_link_filter.rb b/lib/banzai/filter/relative_link_filter.rb index 583b00813197094a2329ed16851498a9cac6d6db..2581a179c79b2072e16cc3ede9eacc2a77f2a62d 100644 --- a/lib/banzai/filter/relative_link_filter.rb +++ b/lib/banzai/filter/relative_link_filter.rb @@ -152,11 +152,18 @@ def process_link_to_repository_attr(html_attr) def rebuild_relative_uri(uri) file_path = nested_file_path_if_exists(uri) + resource_type = uri_type(file_path) + + # Repository routes are under /-/ scope now. + # Since we craft a path without using route helpers we must + # ensure - is added here. + prefix = '-' if %w(tree blob raw commits).include?(resource_type.to_s) uri.path = [ relative_url_root, project.full_path, - uri_type(file_path), + prefix, + resource_type, Addressable::URI.escape(ref).gsub('#', '%23'), Addressable::URI.escape(file_path) ].compact.join('/').squeeze('/').chomp('/') diff --git a/lib/gitlab/dependency_linker/godeps_json_linker.rb b/lib/gitlab/dependency_linker/godeps_json_linker.rb index d24c137793e4fe7e039dc3b284afeb1ff50a0a0f..9166e9091aca486a3f8955ac55f590ba76355770 100644 --- a/lib/gitlab/dependency_linker/godeps_json_linker.rb +++ b/lib/gitlab/dependency_linker/godeps_json_linker.rb @@ -12,10 +12,12 @@ class GodepsJsonLinker < JsonLinker def link_dependencies link_json('ImportPath') do |path| case path + when %r{\A(?github\.com/#{REPO_REGEX})/(?.+)\z} + "https://#{$~[:repo]}/tree/master/#{$~[:path]}" when %r{\A(?gitlab\.com/#{NESTED_REPO_REGEX})\.git/(?.+)\z}, - %r{\A(?git(lab|hub)\.com/#{REPO_REGEX})/(?.+)\z} + %r{\A(?gitlab\.com/#{REPO_REGEX})/(?.+)\z} - "https://#{$~[:repo]}/tree/master/#{$~[:path]}" + "https://#{$~[:repo]}/-/tree/master/#{$~[:path]}" when /\Agolang\.org/ "https://godoc.org/#{path}" else diff --git a/lib/gitlab/middleware/go.rb b/lib/gitlab/middleware/go.rb index f207d91235f431a38c26e731acb78c43f453623e..53508938c496bb097f11b8bb5937b4a650d8fdb0 100644 --- a/lib/gitlab/middleware/go.rb +++ b/lib/gitlab/middleware/go.rb @@ -60,7 +60,7 @@ def go_response(path, branch) end meta_import_tag = tag :meta, name: 'go-import', content: "#{import_prefix} git #{repository_url}" - meta_source_tag = tag :meta, name: 'go-source', content: "#{import_prefix} #{project_url} #{project_url}/tree/#{branch}{/dir} #{project_url}/blob/#{branch}{/dir}/{file}#L{line}" + meta_source_tag = tag :meta, name: 'go-source', content: "#{import_prefix} #{project_url} #{project_url}/-/tree/#{branch}{/dir} #{project_url}/-/blob/#{branch}{/dir}/{file}#L{line}" head_tag = content_tag :head, meta_import_tag + meta_source_tag html_tag = content_tag :html, head_tag + body_tag [html_tag, 200] diff --git a/spec/controllers/concerns/metrics_dashboard_spec.rb b/spec/controllers/concerns/metrics_dashboard_spec.rb index ff2b6fbb8eca368e24f449d10e42cdbf05857cb3..662fb38620866dfd9a3b827ff98d59e21f6f5ebb 100644 --- a/spec/controllers/concerns/metrics_dashboard_spec.rb +++ b/spec/controllers/concerns/metrics_dashboard_spec.rb @@ -72,7 +72,7 @@ it 'includes project_blob_path only for project dashboards' do expect(system_dashboard['project_blob_path']).to be_nil - expect(project_dashboard['project_blob_path']).to eq("/#{project.namespace.path}/#{project.name}/blob/master/.gitlab/dashboards/test.yml") + expect(project_dashboard['project_blob_path']).to eq("/#{project.namespace.path}/#{project.name}/-/blob/master/.gitlab/dashboards/test.yml") end describe 'project permissions' do diff --git a/spec/controllers/projects/blame_controller_spec.rb b/spec/controllers/projects/blame_controller_spec.rb index dd7c0f45dc277b708c81cdcc8cc95eb81eda1bd9..ac8394e3cd44bbbf565570ebdbb87a3ae00472a9 100644 --- a/spec/controllers/projects/blame_controller_spec.rb +++ b/spec/controllers/projects/blame_controller_spec.rb @@ -36,7 +36,7 @@ it 'redirects' do expect(subject) - .to redirect_to("/#{project.full_path}/tree/master") + .to redirect_to("/#{project.full_path}/-/tree/master") end end diff --git a/spec/controllers/projects/blob_controller_spec.rb b/spec/controllers/projects/blob_controller_spec.rb index 78599935910a15ae6f1db79500b9694f588b108c..aa1dcdd9f1d270a70ff50fefad88960cabfd9f83 100644 --- a/spec/controllers/projects/blob_controller_spec.rb +++ b/spec/controllers/projects/blob_controller_spec.rb @@ -33,7 +33,7 @@ it 'redirects' do expect(subject) - .to redirect_to("/#{project.full_path}/tree/master") + .to redirect_to("/#{project.full_path}/-/tree/master") end end @@ -115,7 +115,7 @@ it 'redirects' do expect(subject) - .to redirect_to("/#{project.full_path}/tree/markdown/doc") + .to redirect_to("/#{project.full_path}/-/tree/markdown/doc") end end end diff --git a/spec/controllers/projects/branches_controller_spec.rb b/spec/controllers/projects/branches_controller_spec.rb index 4f8ab6a5def96cbf1b32472b8940c3ee35fcd0a7..bf7ef9dab0c734312286f0e54a5864414e50e67c 100644 --- a/spec/controllers/projects/branches_controller_spec.rb +++ b/spec/controllers/projects/branches_controller_spec.rb @@ -37,7 +37,7 @@ let(:ref) { "master" } it 'redirects' do expect(subject) - .to redirect_to("/#{project.full_path}/tree/merge_branch") + .to redirect_to("/#{project.full_path}/-/tree/merge_branch") end end @@ -46,7 +46,7 @@ let(:ref) { "master" } it 'redirects' do expect(subject) - .to redirect_to("/#{project.full_path}/tree/alert('merge');") + .to redirect_to("/#{project.full_path}/-/tree/alert('merge');") end end @@ -88,7 +88,7 @@ } expect(subject) - .to redirect_to("/#{project.full_path}/tree/1-feature-branch") + .to redirect_to("/#{project.full_path}/-/tree/1-feature-branch") end it 'posts a system note' do diff --git a/spec/controllers/projects/raw_controller_spec.rb b/spec/controllers/projects/raw_controller_spec.rb index bdf1c1a84d3843a3158e589fe15b1cf2af34e55a..391b7ad1648a67ecad57dd3f9c0e1b45cf946f1c 100644 --- a/spec/controllers/projects/raw_controller_spec.rb +++ b/spec/controllers/projects/raw_controller_spec.rb @@ -69,7 +69,7 @@ env: :raw_blob_request_limit, remote_ip: '0.0.0.0', request_method: 'GET', - path: "/#{project.full_path}/raw/#{file_path}" + path: "/#{project.full_path}/-/raw/#{file_path}" } expect(Gitlab::AuthLogger).to receive(:error).with(attributes).once diff --git a/spec/controllers/projects/tree_controller_spec.rb b/spec/controllers/projects/tree_controller_spec.rb index c0c11db5dd632938a4799f6c1485c3df6b49a4de..f89881af5e29a90590f47267a49fa18774ec6be3 100644 --- a/spec/controllers/projects/tree_controller_spec.rb +++ b/spec/controllers/projects/tree_controller_spec.rb @@ -45,7 +45,7 @@ it 'redirects' do expect(subject) - .to redirect_to("/#{project.full_path}/tree/master") + .to redirect_to("/#{project.full_path}/-/tree/master") end end @@ -60,7 +60,7 @@ it 'redirects' do expect(subject) - .to redirect_to("/#{project.full_path}/tree/empty-branch") + .to redirect_to("/#{project.full_path}/-/tree/empty-branch") end end @@ -125,7 +125,7 @@ let(:id) { 'master/README.md' } it 'redirects' do - redirect_url = "/#{project.full_path}/blob/master/README.md" + redirect_url = "/#{project.full_path}/-/blob/master/README.md" expect(subject) .to redirect_to(redirect_url) end @@ -153,7 +153,7 @@ it 'redirects to the new directory' do expect(subject) - .to redirect_to("/#{project.full_path}/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.') end end @@ -164,7 +164,7 @@ it 'does not allow overwriting of existing files' do expect(subject) - .to redirect_to("/#{project.full_path}/tree/master") + .to redirect_to("/#{project.full_path}/-/tree/master") expect(flash[:alert]).to eq('A file with this name already exists') end end diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 5259c612bbd1dd80796000c6cd0a3d7206bd71a1..a1dff0881b6a34455621c710761b9de74c8cae72 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -943,7 +943,7 @@ def update_project(**parameters) end it 'renders JSON body with image links expanded' do - expanded_path = "/#{project_with_repo.full_path}/raw/master/files/images/logo-white.png" + expanded_path = "/#{project_with_repo.full_path}/-/raw/master/files/images/logo-white.png" post :preview_markdown, params: preview_markdown_params diff --git a/spec/frontend/repository/components/table/parent_row_spec.js b/spec/frontend/repository/components/table/parent_row_spec.js index 7020055271fb9abf0c64d225d2d4c627e6694d4e..63f84b2597be965d795227687d35818d9a2f6d15 100644 --- a/spec/frontend/repository/components/table/parent_row_spec.js +++ b/spec/frontend/repository/components/table/parent_row_spec.js @@ -30,8 +30,8 @@ describe('Repository parent row component', () => { it.each` path | to - ${'app'} | ${'/tree/master/'} - ${'app/assets'} | ${'/tree/master/app'} + ${'app'} | ${'/-/tree/master/'} + ${'app/assets'} | ${'/-/tree/master/app'} `('renders link in $path to $to', ({ path, to }) => { factory(path); @@ -46,7 +46,7 @@ describe('Repository parent row component', () => { vm.find('td').trigger('click'); expect($router.push).toHaveBeenCalledWith({ - path: '/tree/master/app', + path: '/-/tree/master/app', }); }); @@ -58,7 +58,7 @@ describe('Repository parent row component', () => { vm.find('a').trigger('click'); expect($router.push).not.toHaveBeenCalledWith({ - path: '/tree/master/app', + path: '/-/tree/master/app', }); }); }); diff --git a/spec/frontend/repository/components/table/row_spec.js b/spec/frontend/repository/components/table/row_spec.js index aa0b9385f1accd845a035add6cb9831715614a95..3e3ce3d321a10f1c9a8d897c6aa9469737ba53f9 100644 --- a/spec/frontend/repository/components/table/row_spec.js +++ b/spec/frontend/repository/components/table/row_spec.js @@ -84,7 +84,7 @@ describe('Repository table row component', () => { vm.trigger('click'); if (pushes) { - expect($router.push).toHaveBeenCalledWith({ path: '/tree/master/test' }); + expect($router.push).toHaveBeenCalledWith({ path: '/-/tree/master/test' }); } else { expect($router.push).not.toHaveBeenCalled(); } diff --git a/spec/frontend/repository/router_spec.js b/spec/frontend/repository/router_spec.js index f61a0ccd1e61756f697aff1d426b67958bdcb809..1efd74a30c2a7dc4f7f7000b10e30694f5beed9f 100644 --- a/spec/frontend/repository/router_spec.js +++ b/spec/frontend/repository/router_spec.js @@ -4,11 +4,11 @@ import createRouter from '~/repository/router'; describe('Repository router spec', () => { it.each` - path | component | componentName - ${'/'} | ${IndexPage} | ${'IndexPage'} - ${'/tree/master'} | ${TreePage} | ${'TreePage'} - ${'/tree/master/app/assets'} | ${TreePage} | ${'TreePage'} - ${'/tree/123/app/assets'} | ${null} | ${'null'} + path | component | componentName + ${'/'} | ${IndexPage} | ${'IndexPage'} + ${'/-/tree/master'} | ${TreePage} | ${'TreePage'} + ${'/-/tree/master/app/assets'} | ${TreePage} | ${'TreePage'} + ${'/-/tree/123/app/assets'} | ${null} | ${'null'} `('sets component as $componentName for path "$path"', ({ path, component }) => { const router = createRouter('', 'master'); diff --git a/spec/helpers/blob_helper_spec.rb b/spec/helpers/blob_helper_spec.rb index 4996e27c2e6146fc46cbef8e4140d130a7f83846..2d0c47236480e6ec7bb5c0015d37ba4b99b87cd1 100644 --- a/spec/helpers/blob_helper_spec.rb +++ b/spec/helpers/blob_helper_spec.rb @@ -56,7 +56,7 @@ stub_feature_flags(web_ide_default: false) link = helper.edit_blob_button(project, 'master', 'README.md') - expect(Capybara.string(link).find_link('Edit')[:href]).to eq("/#{project.full_path}/edit/master/README.md") + expect(Capybara.string(link).find_link('Edit')[:href]).to eq("/#{project.full_path}/-/edit/master/README.md") end it 'returns a link with a Web IDE route' do @@ -69,7 +69,7 @@ stub_feature_flags(web_ide_default: false) link = helper.edit_blob_button(project, 'master', 'README.md', link_opts: { mr_id: 10 }) - expect(Capybara.string(link).find_link('Edit')[:href]).to eq("/#{project.full_path}/edit/master/README.md?mr_id=10") + expect(Capybara.string(link).find_link('Edit')[:href]).to eq("/#{project.full_path}/-/edit/master/README.md?mr_id=10") end end diff --git a/spec/helpers/markup_helper_spec.rb b/spec/helpers/markup_helper_spec.rb index 5ca5f5703cf963316a3b77d4af9d786b8b931e01..384fcd318009c1463dc51ef5cb8da4ff31dbe64b 100644 --- a/spec/helpers/markup_helper_spec.rb +++ b/spec/helpers/markup_helper_spec.rb @@ -101,7 +101,7 @@ let(:requested_path) { 'files/images/README.md' } it 'returns the correct HTML for the image' do - expanded_path = "/#{project.full_path}/raw/master/files/images/#{image_file}" + expanded_path = "/#{project.full_path}/-/raw/master/files/images/#{image_file}" expect(subject.css('a')[0].attr('href')).to eq(expanded_path) expect(subject.css('img')[0].attr('data-src')).to eq(expanded_path) diff --git a/spec/helpers/submodule_helper_spec.rb b/spec/helpers/submodule_helper_spec.rb index fcfce0eaf3103e2d562c1e527f4e9dbbbb68be42..9046c1e9fb4c9f72c188f59d7125ab6513f94bb0 100644 --- a/spec/helpers/submodule_helper_spec.rb +++ b/spec/helpers/submodule_helper_spec.rb @@ -95,7 +95,7 @@ allow(repo).to receive(:project).and_return(project) stub_url('./') - expect(subject).to eq(["/master-project/#{project.path}", "/master-project/#{project.path}/tree/hash"]) + expect(subject).to eq(["/master-project/#{project.path}", "/master-project/#{project.path}/-/tree/hash"]) end end @@ -166,7 +166,7 @@ def expect_relative_link_to_resolve_to(relative_path, expected_path) allow(repo).to receive(:submodule_url_for).and_return(relative_path) result = subject - expect(result).to eq([expected_path, "#{expected_path}/tree/#{submodule_item.id}"]) + expect(result).to eq([expected_path, "#{expected_path}/-/tree/#{submodule_item.id}"]) end it 'handles project under same group' do diff --git a/spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js b/spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js index c743f1f6ad700afcd8152f4e64348e2705f9690e..6a83790093a60a3de12472b3535a1cc07748e3a8 100644 --- a/spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js +++ b/spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js @@ -38,11 +38,11 @@ describe('DiffViewer', () => { setTimeout(() => { expect(vm.$el.querySelector('.deleted img').getAttribute('src')).toBe( - `//raw/DEF/${RED_BOX_IMAGE_URL}`, + `//-/raw/DEF/${RED_BOX_IMAGE_URL}`, ); expect(vm.$el.querySelector('.added img').getAttribute('src')).toBe( - `//raw/ABC/${GREEN_BOX_IMAGE_URL}`, + `//-/raw/ABC/${GREEN_BOX_IMAGE_URL}`, ); done(); diff --git a/spec/lib/banzai/filter/relative_link_filter_spec.rb b/spec/lib/banzai/filter/relative_link_filter_spec.rb index 1efca647b8ba942dc5a8c451757155bd44ab2d08..500df24ece81eabcfbcc8fb3e6ae8c32459a47ff 100644 --- a/spec/lib/banzai/filter/relative_link_filter_spec.rb +++ b/spec/lib/banzai/filter/relative_link_filter_spec.rb @@ -153,7 +153,7 @@ def allow_gitaly_n_plus_1 it 'rebuilds absolute URL for a file in the repo' do doc = filter(link('/doc/api/README.md')) expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/blob/#{ref}/doc/api/README.md" + .to eq "/#{project_path}/-/blob/#{ref}/doc/api/README.md" end it 'does not modify relative URLs in system notes' do @@ -171,13 +171,13 @@ def allow_gitaly_n_plus_1 it 'rebuilds relative URL for a file in the repo' do doc = filter(link('doc/api/README.md')) expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/blob/#{ref}/doc/api/README.md" + .to eq "/#{project_path}/-/blob/#{ref}/doc/api/README.md" end it 'rebuilds relative URL for a file in the repo with leading ./' do doc = filter(link('./doc/api/README.md')) expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/blob/#{ref}/doc/api/README.md" + .to eq "/#{project_path}/-/blob/#{ref}/doc/api/README.md" end it 'rebuilds relative URL for a file in the repo up one directory' do @@ -185,7 +185,7 @@ def allow_gitaly_n_plus_1 doc = filter(relative_link, requested_path: 'doc/update/7.14-to-8.0.md') expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/blob/#{ref}/doc/api/README.md" + .to eq "/#{project_path}/-/blob/#{ref}/doc/api/README.md" end it 'rebuilds relative URL for a file in the repo up multiple directories' do @@ -193,7 +193,7 @@ def allow_gitaly_n_plus_1 doc = filter(relative_link, requested_path: 'doc/foo/bar/baz/README.md') expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/blob/#{ref}/doc/api/README.md" + .to eq "/#{project_path}/-/blob/#{ref}/doc/api/README.md" end it 'rebuilds relative URL for a file in the repository root' do @@ -201,47 +201,47 @@ def allow_gitaly_n_plus_1 doc = filter(relative_link, requested_path: 'doc/some-file.md') expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/blob/#{ref}/README.md" + .to eq "/#{project_path}/-/blob/#{ref}/README.md" end it 'rebuilds relative URL for a file in the repo with an anchor' do doc = filter(link('README.md#section')) expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/blob/#{ref}/README.md#section" + .to eq "/#{project_path}/-/blob/#{ref}/README.md#section" end it 'rebuilds relative URL for a directory in the repo' do doc = filter(link('doc/api/')) expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/tree/#{ref}/doc/api" + .to eq "/#{project_path}/-/tree/#{ref}/doc/api" end it 'rebuilds relative URL for an image in the repo' do doc = filter(image('files/images/logo-black.png')) expect(doc.at_css('img')['src']) - .to eq "/#{project_path}/raw/#{ref}/files/images/logo-black.png" + .to eq "/#{project_path}/-/raw/#{ref}/files/images/logo-black.png" end it 'rebuilds relative URL for link to an image in the repo' do doc = filter(link('files/images/logo-black.png')) expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/raw/#{ref}/files/images/logo-black.png" + .to eq "/#{project_path}/-/raw/#{ref}/files/images/logo-black.png" end it 'rebuilds relative URL for a video in the repo' do doc = filter(video('files/videos/intro.mp4'), commit: project.commit('video'), ref: 'video') expect(doc.at_css('video')['src']) - .to eq "/#{project_path}/raw/video/files/videos/intro.mp4" + .to eq "/#{project_path}/-/raw/video/files/videos/intro.mp4" end it 'rebuilds relative URL for audio in the repo' do doc = filter(audio('files/audio/sample.wav'), commit: project.commit('audio'), ref: 'audio') expect(doc.at_css('audio')['src']) - .to eq "/#{project_path}/raw/audio/files/audio/sample.wav" + .to eq "/#{project_path}/-/raw/audio/files/audio/sample.wav" end it 'does not modify relative URL with an anchor only' do @@ -268,7 +268,7 @@ def allow_gitaly_n_plus_1 allow_any_instance_of(described_class).to receive(:uri_type).and_return(:raw) doc = filter(image(escaped)) - expect(doc.at_css('img')['src']).to eq "/#{project_path}/raw/#{Addressable::URI.escape(ref)}/#{escaped}" + expect(doc.at_css('img')['src']).to eq "/#{project_path}/-/raw/#{Addressable::URI.escape(ref)}/#{escaped}" end context 'when requested path is a file in the repo' do @@ -276,7 +276,7 @@ def allow_gitaly_n_plus_1 it 'rebuilds URL relative to the containing directory' do doc = filter(link('users.md')) - expect(doc.at_css('a')['href']).to eq "/#{project_path}/blob/#{Addressable::URI.escape(ref)}/doc/api/users.md" + expect(doc.at_css('a')['href']).to eq "/#{project_path}/-/blob/#{Addressable::URI.escape(ref)}/doc/api/users.md" end end @@ -285,7 +285,7 @@ def allow_gitaly_n_plus_1 it 'rebuilds URL relative to the directory' do doc = filter(link('users.md')) - expect(doc.at_css('a')['href']).to eq "/#{project_path}/blob/#{Addressable::URI.escape(ref)}/doc/api/users.md" + expect(doc.at_css('a')['href']).to eq "/#{project_path}/-/blob/#{Addressable::URI.escape(ref)}/doc/api/users.md" end end @@ -296,7 +296,7 @@ def allow_gitaly_n_plus_1 it 'correctly escapes the ref' do doc = filter(link('.gitkeep')) - expect(doc.at_css('a')['href']).to eq "/#{project_path}/blob/#{Addressable::URI.escape(ref)}/foo/bar/.gitkeep" + expect(doc.at_css('a')['href']).to eq "/#{project_path}/-/blob/#{Addressable::URI.escape(ref)}/foo/bar/.gitkeep" end end @@ -315,7 +315,7 @@ def allow_gitaly_n_plus_1 doc = filter(link(path)) expect(doc.at_css('a')['href']) - .to eq "/#{project_path}/raw/#{ref_escaped}/files/images/logo-black.png" + .to eq "/#{project_path}/-/raw/#{ref_escaped}/files/images/logo-black.png" end end @@ -326,7 +326,7 @@ def allow_gitaly_n_plus_1 it 'does not escape the space twice' do doc = filter(link('README.md')) - expect(doc.at_css('a')['href']).to eq "/#{project_path}/blob/#{Addressable::URI.escape(ref)}/with%20space/README.md" + expect(doc.at_css('a')['href']).to eq "/#{project_path}/-/blob/#{Addressable::URI.escape(ref)}/with%20space/README.md" end end end diff --git a/spec/lib/gitlab/conflict/file_spec.rb b/spec/lib/gitlab/conflict/file_spec.rb index adf5a232a75c837cbcc28430ad971dc028e5401e..7ecc42ea497feb286a22670ee88875b2a5df9775 100644 --- a/spec/lib/gitlab/conflict/file_spec.rb +++ b/spec/lib/gitlab/conflict/file_spec.rb @@ -258,7 +258,7 @@ def default_regex describe '#as_json' do it 'includes the blob path for the file' do expect(conflict_file.as_json[:blob_path]) - .to eq("/#{project.full_path}/blob/#{our_commit.oid}/files/ruby/regex.rb") + .to eq("/#{project.full_path}/-/blob/#{our_commit.oid}/files/ruby/regex.rb") end it 'includes the blob icon for the file' do diff --git a/spec/lib/gitlab/dependency_linker/godeps_json_linker_spec.rb b/spec/lib/gitlab/dependency_linker/godeps_json_linker_spec.rb index 9f8542a76c9747ca5c2a71420f31c00156dac033..7128689e362312885a170d5815f2a7604432fd60 100644 --- a/spec/lib/gitlab/dependency_linker/godeps_json_linker_spec.rb +++ b/spec/lib/gitlab/dependency_linker/godeps_json_linker_spec.rb @@ -75,8 +75,8 @@ def link(name, url) end it 'links GitLab projects' do - expect(subject).to include(link('gitlab.com/group/project/path', 'https://gitlab.com/group/project/tree/master/path')) - expect(subject).to include(link('gitlab.com/group/subgroup/project.git/path', 'https://gitlab.com/group/subgroup/project/tree/master/path')) + expect(subject).to include(link('gitlab.com/group/project/path', 'https://gitlab.com/group/project/-/tree/master/path')) + expect(subject).to include(link('gitlab.com/group/subgroup/project.git/path', 'https://gitlab.com/group/subgroup/project/-/tree/master/path')) end it 'links Golang packages' do diff --git a/spec/lib/gitlab/middleware/go_spec.rb b/spec/lib/gitlab/middleware/go_spec.rb index 2b90035d1487e39bec4d646cabc523602860b56a..99c2a364dfc4bec52315fb25e26653a54765644a 100644 --- a/spec/lib/gitlab/middleware/go_spec.rb +++ b/spec/lib/gitlab/middleware/go_spec.rb @@ -241,7 +241,7 @@ def expect_response_with_path(response, protocol, path, branch) project_url = "http://#{Gitlab.config.gitlab.host}/#{path}" expect(response[0]).to eq(200) expect(response[1]['Content-Type']).to eq('text/html') - expected_body = %{go get #{Gitlab.config.gitlab.url}/#{path}} + expected_body = %{go get #{Gitlab.config.gitlab.url}/#{path}} expect(response[2].body).to eq([expected_body]) end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index e5c30e4ca4623301acebcae776d7cd7f80fb2e44..6d8b216b883f90545d2be56168c9f4b54e455b10 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -697,7 +697,7 @@ let(:project) { create(:project, :repository) } it 'returns the README' do - expect(project.readme_url).to eq("#{project.web_url}/blob/master/README.md") + expect(project.readme_url).to eq("#{project.web_url}/-/blob/master/README.md") end end end diff --git a/spec/presenters/blob_presenter_spec.rb b/spec/presenters/blob_presenter_spec.rb index 8680e8b9b45bead0e9ba109cc0ee9910609e18cb..ee7bfd1256d98f5d56d6971a793b2d2bb3860cf2 100644 --- a/spec/presenters/blob_presenter_spec.rb +++ b/spec/presenters/blob_presenter_spec.rb @@ -21,7 +21,7 @@ subject { described_class.new(blob) } - it { expect(subject.web_url).to eq("http://localhost/#{project.full_path}/blob/#{blob.commit_id}/#{blob.path}") } + it { expect(subject.web_url).to eq("http://localhost/#{project.full_path}/-/blob/#{blob.commit_id}/#{blob.path}") } end describe '#highlight' do diff --git a/spec/presenters/merge_request_presenter_spec.rb b/spec/presenters/merge_request_presenter_spec.rb index 6ce6f84cf61448981e19a57404ae6585444c6a51..025f083ab275adb1a58b9dea1bb0cd21ea0b059a 100644 --- a/spec/presenters/merge_request_presenter_spec.rb +++ b/spec/presenters/merge_request_presenter_spec.rb @@ -334,7 +334,7 @@ allow(resource).to receive(:target_branch_exists?) { true } is_expected - .to eq("/#{resource.target_project.full_path}/commits/#{resource.target_branch}") + .to eq("/#{resource.target_project.full_path}/-/commits/#{resource.target_branch}") end end @@ -358,7 +358,7 @@ allow(resource).to receive(:source_branch_exists?) { true } is_expected - .to eq("/#{resource.source_project.full_path}/commits/#{resource.source_branch}") + .to eq("/#{resource.source_project.full_path}/-/commits/#{resource.source_branch}") end end @@ -382,7 +382,7 @@ allow(resource).to receive(:target_branch_exists?) { true } is_expected - .to eq("/#{resource.target_project.full_path}/tree/#{resource.target_branch}") + .to eq("/#{resource.target_project.full_path}/-/tree/#{resource.target_branch}") end end @@ -496,7 +496,7 @@ allow(resource).to receive(:source_branch_exists?) { true } is_expected - .to eq("#{resource.source_branch}") + .to eq("#{resource.source_branch}") end it 'escapes html, when source_branch does not exist' do diff --git a/spec/presenters/tree_entry_presenter_spec.rb b/spec/presenters/tree_entry_presenter_spec.rb index d74ee5dc28f4c2973009a6084258c0cd960bda40..0c29fe3e5ff25fd3540faadd42c1fca182f16947 100644 --- a/spec/presenters/tree_entry_presenter_spec.rb +++ b/spec/presenters/tree_entry_presenter_spec.rb @@ -11,6 +11,6 @@ let(:presenter) { described_class.new(tree) } describe '.web_url' do - it { expect(presenter.web_url).to eq("http://localhost/#{project.full_path}/tree/#{tree.commit_id}/#{tree.path}") } + it { expect(presenter.web_url).to eq("http://localhost/#{project.full_path}/-/tree/#{tree.commit_id}/#{tree.path}") } end end diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index cda2dd7d2f49fa14a2b929dcf11e86c01b08905f..1c165f17183d4742bc11c296c4282a4abd080dc8 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -715,7 +715,7 @@ post api('/projects', user), params: project - expect(json_response['readme_url']).to eql("#{Gitlab.config.gitlab.url}/#{json_response['namespace']['full_path']}/somewhere/blob/master/README.md") + expect(json_response['readme_url']).to eql("#{Gitlab.config.gitlab.url}/#{json_response['namespace']['full_path']}/somewhere/-/blob/master/README.md") end it 'sets tag list to a project' do diff --git a/spec/requests/git_http_spec.rb b/spec/requests/git_http_spec.rb index 42b4bd71b88275662beac6a45dc5acc81a34baf4..7424b7ee8d09e1455b187453337a477c943af03b 100644 --- a/spec/requests/git_http_spec.rb +++ b/spec/requests/git_http_spec.rb @@ -834,7 +834,7 @@ def attempt_login(include_password) Blob.decorate(Gitlab::Git::Blob.find(project.repository, 'master', 'bar/branch-test.txt'), project) end - get "/#{project.full_path}/blob/master/info/refs" + get "/#{project.full_path}/-/blob/master/info/refs" end it "returns the file" do @@ -844,7 +844,7 @@ def attempt_login(include_password) context "when the file does not exist" do before do - get "/#{project.full_path}/blob/master/info/refs" + get "/#{project.full_path}/-/blob/master/info/refs" end it "redirects" do diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb index 96956d85de43db02868f62987a3d034e01f94c67..7816b77d14c99708a586b575b073d454c0a5556e 100644 --- a/spec/routing/project_routing_spec.rb +++ b/spec/routing/project_routing_spec.rb @@ -454,11 +454,14 @@ it_behaves_like 'RESTful project resources' do let(:actions) { [:show] } let(:controller) { 'commits' } + let(:controller_path) { '/-/commits' } end it 'to #show' do - expect(get('/gitlab/gitlabhq/commits/master.atom')).to route_to('projects/commits#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master.atom') + expect(get('/gitlab/gitlabhq/-/commits/master.atom')).to route_to('projects/commits#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master.atom') end + + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/commits/master.atom", "/gitlab/gitlabhq/-/commits/master.atom" end # project_project_members GET /:project_id/project_members(.:format) project_members#index @@ -550,62 +553,68 @@ # project_blame GET /:project_id/blame/:id(.:format) blame#show {id: /[^\0]+/, project_id: /[^\/]+/} describe Projects::BlameController, 'routing' do it 'to #show' do - expect(get('/gitlab/gitlabhq/blame/master/app/models/project.rb')).to route_to('projects/blame#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/project.rb') - expect(get('/gitlab/gitlabhq/blame/master/files.scss')).to route_to('projects/blame#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/files.scss') + expect(get('/gitlab/gitlabhq/-/blame/master/app/models/project.rb')).to route_to('projects/blame#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/project.rb') + expect(get('/gitlab/gitlabhq/-/blame/master/files.scss')).to route_to('projects/blame#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/files.scss') newline_file = "new\n\nline.txt" url_encoded_newline_file = ERB::Util.url_encode(newline_file) - assert_routing({ path: "/gitlab/gitlabhq/blame/master/#{url_encoded_newline_file}", + assert_routing({ path: "/gitlab/gitlabhq/-/blame/master/#{url_encoded_newline_file}", method: :get }, { controller: 'projects/blame', action: 'show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: "master/#{newline_file}" }) end + + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/blame/master/readme.md", "/gitlab/gitlabhq/-/blame/master/readme.md" end # project_blob GET /:project_id/blob/:id(.:format) blob#show {id: /[^\0]+/, project_id: /[^\/]+/} describe Projects::BlobController, 'routing' do it 'to #show' do - expect(get('/gitlab/gitlabhq/blob/master/app/models/project.rb')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/project.rb') - expect(get('/gitlab/gitlabhq/blob/master/app/models/compare.rb')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/compare.rb') - expect(get('/gitlab/gitlabhq/blob/master/app/models/diff.js')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/diff.js') - expect(get('/gitlab/gitlabhq/blob/master/files.scss')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/files.scss') - expect(get('/gitlab/gitlabhq/blob/master/blob/index.js')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/blob/index.js') - expect(get('/gitlab/gitlabhq/blob/blob/master/blob/index.js')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'blob/master/blob/index.js') + expect(get('/gitlab/gitlabhq/-/blob/master/app/models/project.rb')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/project.rb') + expect(get('/gitlab/gitlabhq/-/blob/master/app/models/compare.rb')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/compare.rb') + expect(get('/gitlab/gitlabhq/-/blob/master/app/models/diff.js')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/diff.js') + expect(get('/gitlab/gitlabhq/-/blob/master/files.scss')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/files.scss') + expect(get('/gitlab/gitlabhq/-/blob/master/blob/index.js')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/blob/index.js') + expect(get('/gitlab/gitlabhq/-/blob/blob/master/blob/index.js')).to route_to('projects/blob#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'blob/master/blob/index.js') newline_file = "new\n\nline.txt" url_encoded_newline_file = ERB::Util.url_encode(newline_file) - assert_routing({ path: "/gitlab/gitlabhq/blob/blob/master/blob/#{url_encoded_newline_file}", + assert_routing({ path: "/gitlab/gitlabhq/-/blob/blob/master/blob/#{url_encoded_newline_file}", method: :get }, { controller: 'projects/blob', action: 'show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: "blob/master/blob/#{newline_file}" }) end + + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/blob/master/readme.md", "/gitlab/gitlabhq/-/blob/master/readme.md" end # project_tree GET /:project_id/tree/:id(.:format) tree#show {id: /[^\0]+/, project_id: /[^\/]+/} describe Projects::TreeController, 'routing' do it 'to #show' do - expect(get('/gitlab/gitlabhq/tree/master/app/models/project.rb')).to route_to('projects/tree#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/project.rb') - expect(get('/gitlab/gitlabhq/tree/master/files.scss')).to route_to('projects/tree#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/files.scss') - expect(get('/gitlab/gitlabhq/tree/master/tree/files')).to route_to('projects/tree#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/tree/files') - expect(get('/gitlab/gitlabhq/tree/tree/master/tree/files')).to route_to('projects/tree#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'tree/master/tree/files') + expect(get('/gitlab/gitlabhq/-/tree/master/app/models/project.rb')).to route_to('projects/tree#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/project.rb') + expect(get('/gitlab/gitlabhq/-/tree/master/files.scss')).to route_to('projects/tree#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/files.scss') + expect(get('/gitlab/gitlabhq/-/tree/master/tree/files')).to route_to('projects/tree#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/tree/files') + expect(get('/gitlab/gitlabhq/-/tree/tree/master/tree/files')).to route_to('projects/tree#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'tree/master/tree/files') newline_file = "new\n\nline.txt" url_encoded_newline_file = ERB::Util.url_encode(newline_file) - assert_routing({ path: "/gitlab/gitlabhq/tree/master/#{url_encoded_newline_file}", + assert_routing({ path: "/gitlab/gitlabhq/-/tree/master/#{url_encoded_newline_file}", method: :get }, { controller: 'projects/tree', action: 'show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: "master/#{newline_file}" }) end + + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/tree/master/app", "/gitlab/gitlabhq/-/tree/master/app" end # project_find_file GET /:namespace_id/:project_id/find_file/*id(.:format) projects/find_file#show {:id=>/[^\0]+/, :namespace_id=>/[a-zA-Z.0-9_\-]+/, :project_id=>/[a-zA-Z.0-9_\-]+(?/html/} # project_files GET /:namespace_id/:project_id/files/*id(.:format) projects/find_file#list {:id=>/(?:[^.]|\.(?!json$))+/, :namespace_id=>/[a-zA-Z.0-9_\-]+/, :project_id=>/[a-zA-Z.0-9_\-]+(?/json/} describe Projects::FindFileController, 'routing' do it 'to #show' do - expect(get('/gitlab/gitlabhq/find_file/master')).to route_to('projects/find_file#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master') + expect(get('/gitlab/gitlabhq/-/find_file/master')).to route_to('projects/find_file#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master') newline_file = "new\n\nline.txt" url_encoded_newline_file = ERB::Util.url_encode(newline_file) - assert_routing({ path: "/gitlab/gitlabhq/find_file/#{url_encoded_newline_file}", + assert_routing({ path: "/gitlab/gitlabhq/-/find_file/#{url_encoded_newline_file}", method: :get }, { controller: 'projects/find_file', action: 'show', namespace_id: 'gitlab', project_id: 'gitlabhq', @@ -613,26 +622,29 @@ end it 'to #list' do - expect(get('/gitlab/gitlabhq/files/master.json')).to route_to('projects/find_file#list', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master.json') + expect(get('/gitlab/gitlabhq/-/files/master.json')).to route_to('projects/find_file#list', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master.json') newline_file = "new\n\nline.txt" url_encoded_newline_file = ERB::Util.url_encode(newline_file) - assert_routing({ path: "/gitlab/gitlabhq/files/#{url_encoded_newline_file}", + assert_routing({ path: "/gitlab/gitlabhq/-/files/#{url_encoded_newline_file}", method: :get }, { controller: 'projects/find_file', action: 'list', namespace_id: 'gitlab', project_id: 'gitlabhq', id: "#{newline_file}" }) end + + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/find_file/master", "/gitlab/gitlabhq/-/find_file/master" + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/files/master.json", "/gitlab/gitlabhq/-/files/master.json" end describe Projects::BlobController, 'routing' do it 'to #edit' do - expect(get('/gitlab/gitlabhq/edit/master/app/models/project.rb')).to( + expect(get('/gitlab/gitlabhq/-/edit/master/app/models/project.rb')).to( route_to('projects/blob#edit', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/project.rb')) newline_file = "new\n\nline.txt" url_encoded_newline_file = ERB::Util.url_encode(newline_file) - assert_routing({ path: "/gitlab/gitlabhq/edit/master/docs/#{url_encoded_newline_file}", + assert_routing({ path: "/gitlab/gitlabhq/-/edit/master/docs/#{url_encoded_newline_file}", method: :get }, { controller: 'projects/blob', action: 'edit', namespace_id: 'gitlab', project_id: 'gitlabhq', @@ -640,13 +652,13 @@ end it 'to #preview' do - expect(post('/gitlab/gitlabhq/preview/master/app/models/project.rb')).to( + expect(post('/gitlab/gitlabhq/-/preview/master/app/models/project.rb')).to( route_to('projects/blob#preview', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master/app/models/project.rb')) newline_file = "new\n\nline.txt" url_encoded_newline_file = ERB::Util.url_encode(newline_file) - assert_routing({ path: "/gitlab/gitlabhq/edit/master/docs/#{url_encoded_newline_file}", + assert_routing({ path: "/gitlab/gitlabhq/-/edit/master/docs/#{url_encoded_newline_file}", method: :get }, { controller: 'projects/blob', action: 'edit', namespace_id: 'gitlab', project_id: 'gitlabhq', @@ -659,12 +671,14 @@ it 'to #show' do newline_file = "new\n\nline.txt" url_encoded_newline_file = ERB::Util.url_encode(newline_file) - assert_routing({ path: "/gitlab/gitlabhq/raw/master/#{url_encoded_newline_file}", + assert_routing({ path: "/gitlab/gitlabhq/-/raw/master/#{url_encoded_newline_file}", method: :get }, { controller: 'projects/raw', action: 'show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: "master/#{newline_file}" }) end + + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/raw/master/app/models/project.rb", "/gitlab/gitlabhq/-/raw/master/app/models/project.rb" end # project_compare_index GET /:project_id/compare(.:format) compare#index {id: /[^\/]+/, project_id: /[^\/]+/} diff --git a/spec/serializers/blob_entity_spec.rb b/spec/serializers/blob_entity_spec.rb index 7e3a0a87bd57b3bcf272c246addf003cf5422a58..3cd967ed44c20f0b52424d2ebbb48c2ba718dd7a 100644 --- a/spec/serializers/blob_entity_spec.rb +++ b/spec/serializers/blob_entity_spec.rb @@ -23,7 +23,7 @@ mode: "100644", readable_text: true, icon: "file-text-o", - url: "/#{project.full_path}/blob/master/bar/branch-test.txt" + url: "/#{project.full_path}/-/blob/master/bar/branch-test.txt" }) end end diff --git a/spec/serializers/merge_request_poll_widget_entity_spec.rb b/spec/serializers/merge_request_poll_widget_entity_spec.rb index ea9052b40461eb87fa85b3e2413254184a07d93e..0593dd527cc631c01b932a879094fe15867ccf2e 100644 --- a/spec/serializers/merge_request_poll_widget_entity_spec.rb +++ b/spec/serializers/merge_request_poll_widget_entity_spec.rb @@ -60,7 +60,7 @@ project.add_developer(user) expect(subject[:new_blob_path]) - .to eq("/#{resource.project.full_path}/new/#{resource.source_branch}") + .to eq("/#{resource.project.full_path}/-/new/#{resource.source_branch}") end end diff --git a/spec/views/help/index.html.haml_spec.rb b/spec/views/help/index.html.haml_spec.rb index 474a294ce0d3a52e6f575c2ed9bcfacbc23d735e..98040da9d2cbc1bbfb4311f6fb446ab755d53ad2 100644 --- a/spec/views/help/index.html.haml_spec.rb +++ b/spec/views/help/index.html.haml_spec.rb @@ -40,7 +40,7 @@ render expect(rendered).to match '8.0.2' - expect(rendered).to have_link('abcdefg', href: %r{https://gitlab.com/gitlab-org/(gitlab|gitlab-foss)/commits/abcdefg}) + expect(rendered).to have_link('abcdefg', href: %r{https://gitlab.com/gitlab-org/(gitlab|gitlab-foss)/-/commits/abcdefg}) end end end