diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-21 00:08:46 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-21 00:08:46 +0000 |
commit | 6755df108b123ecc8ae330d7c7bf2f04fbf36a81 (patch) | |
tree | 7609bd6c0a9ac607d8f57737a2c27a460b7fcfdd | |
parent | ee7fba4b844935437233f6c5b74545a28bac4298 (diff) | |
download | gitlab-ce-6755df108b123ecc8ae330d7c7bf2f04fbf36a81.tar.gz |
Add latest changes from gitlab-org/gitlab@master
47 files changed, 226 insertions, 181 deletions
@@ -150,7 +150,7 @@ gem 'wikicloth', '0.8.1' gem 'asciidoctor', '~> 2.0.10' gem 'asciidoctor-include-ext', '~> 0.3.1', require: false gem 'asciidoctor-plantuml', '0.0.10' -gem 'rouge', '~> 3.11.0' +gem 'rouge', '~> 3.15.0' gem 'truncato', '~> 0.7.11' gem 'bootstrap_form', '~> 4.2.0' gem 'nokogiri', '~> 1.10.5' diff --git a/Gemfile.lock b/Gemfile.lock index 0bf630b42ef..377213bc882 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -873,7 +873,7 @@ GEM retriable (3.1.2) rinku (2.0.0) rotp (2.1.2) - rouge (3.11.0) + rouge (3.15.0) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) diff --git a/app/assets/javascripts/ide/stores/utils.js b/app/assets/javascripts/ide/stores/utils.js index 47a2e6b5202..06e66da1069 100644 --- a/app/assets/javascripts/ide/stores/utils.js +++ b/app/assets/javascripts/ide/stores/utils.js @@ -163,7 +163,7 @@ export const createCommitPayload = ({ }); export const createNewMergeRequestUrl = (projectUrl, source, target) => - `${projectUrl}/merge_requests/new?merge_request[source_branch]=${source}&merge_request[target_branch]=${target}&nav_source=webide`; + `${projectUrl}/-/merge_requests/new?merge_request[source_branch]=${source}&merge_request[target_branch]=${target}&nav_source=webide`; const sortTreesByTypeAndName = (a, b) => { if (a.type === 'tree' && b.type === 'blob') { diff --git a/app/assets/javascripts/merge_request_tabs.js b/app/assets/javascripts/merge_request_tabs.js index 96c4741fc2e..87de58443e0 100644 --- a/app/assets/javascripts/merge_request_tabs.js +++ b/app/assets/javascripts/merge_request_tabs.js @@ -32,17 +32,17 @@ import { __ } from './locale'; // // <ul class="nav-links merge-request-tabs"> // <li class="notes-tab active"> -// <a data-action="notes" data-target="#notes" data-toggle="tab" href="/foo/bar/merge_requests/1"> +// <a data-action="notes" data-target="#notes" data-toggle="tab" href="/foo/bar/-/merge_requests/1"> // Discussion // </a> // </li> // <li class="commits-tab"> -// <a data-action="commits" data-target="#commits" data-toggle="tab" href="/foo/bar/merge_requests/1/commits"> +// <a data-action="commits" data-target="#commits" data-toggle="tab" href="/foo/bar/-/merge_requests/1/commits"> // Commits // </a> // </li> // <li class="diffs-tab"> -// <a data-action="diffs" data-target="#diffs" data-toggle="tab" href="/foo/bar/merge_requests/1/diffs"> +// <a data-action="diffs" data-target="#diffs" data-toggle="tab" href="/foo/bar/-/merge_requests/1/diffs"> // Diffs // </a> // </li> @@ -260,17 +260,17 @@ export default class MergeRequestTabs { // // Examples: // - // location.pathname # => "/namespace/project/merge_requests/1" + // location.pathname # => "/namespace/project/-/merge_requests/1" // setCurrentAction('diffs') - // location.pathname # => "/namespace/project/merge_requests/1/diffs" + // location.pathname # => "/namespace/project/-/merge_requests/1/diffs" // - // location.pathname # => "/namespace/project/merge_requests/1/diffs" + // location.pathname # => "/namespace/project/-/merge_requests/1/diffs" // setCurrentAction('show') - // location.pathname # => "/namespace/project/merge_requests/1" + // location.pathname # => "/namespace/project/-/merge_requests/1" // - // location.pathname # => "/namespace/project/merge_requests/1/diffs" + // location.pathname # => "/namespace/project/-/merge_requests/1/diffs" // setCurrentAction('commits') - // location.pathname # => "/namespace/project/merge_requests/1/commits" + // location.pathname # => "/namespace/project/-/merge_requests/1/commits" // // Returns the new URL String setCurrentAction(action) { diff --git a/app/models/project_services/chat_message/merge_message.rb b/app/models/project_services/chat_message/merge_message.rb index 46313ba7bec..dc62a4c8908 100644 --- a/app/models/project_services/chat_message/merge_message.rb +++ b/app/models/project_services/chat_message/merge_message.rb @@ -62,7 +62,7 @@ module ChatMessage end def merge_request_url - "#{project_url}/merge_requests/#{merge_request_iid}" + "#{project_url}/-/merge_requests/#{merge_request_iid}" end # overridden in EE diff --git a/app/models/project_services/hipchat_service.rb b/app/models/project_services/hipchat_service.rb index 019bd54f48c..c92e8ecb31c 100644 --- a/app/models/project_services/hipchat_service.rb +++ b/app/models/project_services/hipchat_service.rb @@ -184,7 +184,7 @@ class HipchatService < Service description = obj_attr[:description] title = render_line(obj_attr[:title]) - merge_request_url = "#{project_url}/merge_requests/#{merge_request_id}" + merge_request_url = "#{project_url}/-/merge_requests/#{merge_request_id}" merge_request_link = "<a href=\"#{merge_request_url}\">merge request !#{merge_request_id}</a>" message = ["#{user_name} #{state} #{merge_request_link} in " \ "#{project_link}: <b>#{title}</b>"] diff --git a/bin/secpick b/bin/secpick index 5da47e65ea3..3609567249e 100755 --- a/bin/secpick +++ b/bin/secpick @@ -15,8 +15,8 @@ module Secpick DEFAULT_REMOTE = 'dev'.freeze SECURITY_REMOTE = 'security'.freeze - NEW_MR_URL = 'https://dev.gitlab.org/gitlab/gitlabhq/merge_requests/new'.freeze - SECURITY_MR_URL = 'https://gitlab.com/gitlab-org/security/gitlab/merge_requests/new'.freeze + NEW_MR_URL = 'https://dev.gitlab.org/gitlab/gitlabhq/-/merge_requests/new'.freeze + SECURITY_MR_URL = 'https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/new'.freeze class SecurityFix def initialize diff --git a/changelogs/unreleased/dz-move-project-routes.yml b/changelogs/unreleased/dz-move-project-routes.yml new file mode 100644 index 00000000000..97029f23907 --- /dev/null +++ b/changelogs/unreleased/dz-move-project-routes.yml @@ -0,0 +1,5 @@ +--- +title: Move merge request routes under /-/ scope +merge_request: 21126 +author: +type: deprecated diff --git a/config/routes/project.rb b/config/routes/project.rb index 09e6b733bff..f85267b66b3 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -281,6 +281,8 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do end end + draw :merge_requests + # The wiki and repository routing contains wildcard characters so # its preferable to keep it below all other project routes draw :repository_scoped @@ -339,17 +341,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do end end - # Unscoped route. It will be replaced with redirect to /-/merge_requests/ - # Issue https://gitlab.com/gitlab-org/gitlab/issues/118849 - draw :merge_requests - - # To ensure an old unscoped routing is used for the UI we need to - # add prefix 'as' to the scope routing and place it below original MR routing. - # Issue https://gitlab.com/gitlab-org/gitlab/issues/118849 - scope '-', as: 'scoped' do - draw :merge_requests - end - resources :pipelines, only: [:index, :new, :create, :show, :destroy] do collection do resource :pipelines_settings, path: 'settings', only: [:show, :update] @@ -510,7 +501,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do :forks, :group_links, :import, :avatar, :mirror, :cycle_analytics, :mattermost, :variables, :triggers, :environments, :protected_environments, :error_tracking, - :serverless, :clusters, :audit_events, :wikis) + :serverless, :clusters, :audit_events, :wikis, :merge_requests) end # rubocop: disable Cop/PutProjectRoutesUnderScope diff --git a/doc/api/graphql/index.md b/doc/api/graphql/index.md index f86802d4463..5675895222e 100644 --- a/doc/api/graphql/index.md +++ b/doc/api/graphql/index.md @@ -56,13 +56,16 @@ possible. The GraphQL API includes the following queries at the root level: -1. `project` : Project information, with many of its associations such as issues and merge requests also available. +1. `project` : Project information, with many of its associations such as issues and merge requests. 1. `group` : Basic group information and epics **(ULTIMATE)** are currently supported. 1. `namespace` : Within a namespace it is also possible to fetch `projects`. 1. `currentUser`: Information about the currently logged in user. 1. `metaData`: Metadata about GitLab and the GraphQL API. 1. `snippets`: Snippets visible to the currently logged in user. +New associations and root level objects are constantly being added. +See the [GraphQL API Reference](reference/index.md) for up-to-date information. + Root-level queries are defined in [`app/graphql/types/query_type.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/graphql/types/query_type.rb). diff --git a/doc/user/analytics/code_review_analytics.md b/doc/user/analytics/code_review_analytics.md index 87c29c265bf..513201e639d 100644 --- a/doc/user/analytics/code_review_analytics.md +++ b/doc/user/analytics/code_review_analytics.md @@ -4,31 +4,56 @@ description: "Learn how long your open merge requests have spent in code review, # Code Review Analytics **(STARTER)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/38062) in GitLab ([Starter](https://about.gitlab.com/pricing/)) 12.7. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/38062) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.7. -Want to learn how long your open merge requests have spent in code review? Or what distinguishes your longest-running code reviews? These are some of the questions Code Review Analytics is designed to answer. +Code Review Analytics can be used to answer questions like: + +- How long do open merge requests spend in code review? +- What distinguishes your longest-running code reviews? NOTE: **Note:** -Initially no data will appear. Data will populate as users comment on open merge requests. +Initially no data will appear. Data is populated as users comment on open merge requests. ## Overview -Code Review Analytics displays a collection of merge requests in a table. These are all the open merge requests that are considered to be in code review. This feature considers code review to begin when a merge request receives its first comment from someone other than the author. The rows of the table are sorted by review time so the longest reviews appear at the top. There are also columns to display the author, approvers, comment count, and line -/+ counts. +Code Review Analytics displays a table of open merge requests, which are considered to be in code review. +Code review starts when a merge request receives its first comment from someone other than the author. + +The Code Review Analytics table: + +- Is sorted by review time, so the longest reviews appear at the top. +- Has columns to display the author, approvers, comment count, and line -/+ counts. + +This feature is designed for [development team leaders](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#delaney-development-team-lead) +and others who want to understand broad code review dynamics, and identify patterns to help explain them. -This feature is designed for [development team leaders](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#delaney-development-team-lead) and others who want to understand broad code review dynamics, and identify patterns to help explain them. You can use Code Review Analytics to expose your team's unique challenges with code review, and identify improvements that might substantially accelerate your development cycle. +You can use Code Review Analytics to expose your team's unique challenges with code review, and +identify improvements that might substantially accelerate your development cycle. ## Use cases -Perhaps your team agrees that code review is moving too slow, or the [Cycle Analytics feature](https://docs.gitlab.com/ee/user/analytics/cycle_analytics.html) shows that "Review" is your team's most time-consuming step. You can use Code Review Analytics to see what is currently moving slowest, and analyze the patterns and trends between them. Lots of comments or commits? Maybe the code is too complex. A particular author is involved? Maybe more training is advisable. Few comments and approvers? Maybe your team is understaffed. +Code Review Analytics can be used when: + +- Your team agrees that code review is moving too slow. +- The [Cycle Analytics feature](cycle_analytics.md) shows that reviews are your team's most time-consuming step. + +You can use Code Review Analytics to see what is currently moving slowest, and analyze the patterns +and trends between them. For example: + +- Lots of comments or commits? Maybe the code is too complex. +- A particular author is involved? Maybe more training is required. +- Few comments and approvers? Maybe your team is understaffed. ## Permissions - On [Starter or Bronze tier](https://about.gitlab.com/pricing/) and above. -- By users with [Reporter access] and above. +- By users with Reporter access and above. -## Feature flag +## Disable with feature flag -Code Review Analytics is [currently protected by a feature flag](https://gitlab.com/gitlab-org/gitlab/issues/194165) that defaults to "enabled" - meaning the feature is available. If you experience performance problems or otherwise wish to disable the feature, a GitLab administrator can execute a command in a Rails console: +Code Review Analytics is [currently enabled by a feature flag](https://gitlab.com/gitlab-org/gitlab/issues/194165) +that defaults to ON, meaning the feature is available. If you experience performance problems or +otherwise wish to disable the feature, a GitLab administrator can execute a command in a Rails console: ```ruby Feature.disable(:code_review_analytics) diff --git a/doc/user/analytics/index.md b/doc/user/analytics/index.md index 707ba01eb79..07d756af582 100644 --- a/doc/user/analytics/index.md +++ b/doc/user/analytics/index.md @@ -16,11 +16,11 @@ Once enabled, click on **Analytics** from the top navigation bar. From the centralized analytics workspace, the following analytics are available: - [Code Review Analytics](code_review_analytics.md), enabled with the `code_review_analytics` - [feature flag](../../development/feature_flags/development.html#enabling-a-feature-flag-in-development). **(STARTER)** + [feature flag](../../development/feature_flags/development.md#enabling-a-feature-flag-in-development). **(STARTER)** - [Cycle Analytics](cycle_analytics.md), enabled with the `cycle_analytics` - [feature flag](../../development/feature_flags/development.html#enabling-a-feature-flag-in-development). **(PREMIUM)** + [feature flag](../../development/feature_flags/development.md#enabling-a-feature-flag-in-development). **(PREMIUM)** - [Productivity Analytics](productivity_analytics.md), enabled with the `productivity_analytics` - [feature flag](../../development/feature_flags/development.html#enabling-a-feature-flag-in-development). **(PREMIUM)** + [feature flag](../../development/feature_flags/development.md#enabling-a-feature-flag-in-development). **(PREMIUM)** NOTE: **Note:** Project-level Cycle Analytics are still available at a project's **Project > Cycle Analytics**. diff --git a/public/robots.txt b/public/robots.txt index 130328f5687..6f2396d0869 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -53,11 +53,11 @@ Disallow: /*/*/milestones/new Disallow: /*/*/milestones/*/edit Disallow: /*/*/issues/new Disallow: /*/*/issues/*/edit -Disallow: /*/*/merge_requests/new -Disallow: /*/*/merge_requests/*.patch -Disallow: /*/*/merge_requests/*.diff -Disallow: /*/*/merge_requests/*/edit -Disallow: /*/*/merge_requests/*/diffs +Disallow: /*/*/-/merge_requests/new +Disallow: /*/*/-/merge_requests/*.patch +Disallow: /*/*/-/merge_requests/*.diff +Disallow: /*/*/-/merge_requests/*/edit +Disallow: /*/*/-/merge_requests/*/diffs Disallow: /*/*/project_members/import Disallow: /*/*/labels/new Disallow: /*/*/labels/*/edit diff --git a/spec/frontend/diffs/mock_data/merge_request_diffs.js b/spec/frontend/diffs/mock_data/merge_request_diffs.js index 4bbef146336..f98374d26bd 100644 --- a/spec/frontend/diffs/mock_data/merge_request_diffs.js +++ b/spec/frontend/diffs/mock_data/merge_request_diffs.js @@ -8,7 +8,7 @@ export default [ short_commit_sha: 'de7a8f7f', version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37', compare_path: - '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=de7a8f7f20c3ea2e0bef3ba01cfd41c21f6b4995', + '/gnuwget/wget2/-/merge_requests/6/diffs?diff_id=37&start_sha=de7a8f7f20c3ea2e0bef3ba01cfd41c21f6b4995', }, { base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=36', @@ -19,7 +19,7 @@ export default [ short_commit_sha: 'e78fc18f', version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=36', compare_path: - '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=e78fc18fa37acb2185c59ca94d4a964464feb50e', + '/gnuwget/wget2/-/merge_requests/6/diffs?diff_id=37&start_sha=e78fc18fa37acb2185c59ca94d4a964464feb50e', }, { base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=35', @@ -30,7 +30,7 @@ export default [ short_commit_sha: '48da7e7e', version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=35', compare_path: - '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=48da7e7e9a99d41c852578bd9cb541ca4d864b3e', + '/gnuwget/wget2/-/merge_requests/6/diffs?diff_id=37&start_sha=48da7e7e9a99d41c852578bd9cb541ca4d864b3e', }, { base_version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=20', @@ -41,6 +41,6 @@ export default [ short_commit_sha: '47bac2ed', version_path: '/gnuwget/wget2/merge_requests/6/diffs?diff_id=20', compare_path: - '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37&start_sha=47bac2ed972c5bee344c1cea159a22cd7f711dc0', + '/gnuwget/wget2/-/merge_requests/6/diffs?diff_id=37&start_sha=47bac2ed972c5bee344c1cea159a22cd7f711dc0', }, ]; diff --git a/spec/frontend/notes/mock_data.js b/spec/frontend/notes/mock_data.js index 01cb70d395c..9ed79c61c22 100644 --- a/spec/frontend/notes/mock_data.js +++ b/spec/frontend/notes/mock_data.js @@ -52,7 +52,7 @@ export const noteableDataMock = { time_estimate: 0, title: '14', total_time_spent: 0, - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', updated_at: '2017-08-04T09:53:01.226Z', updated_by_id: 1, web_url: '/gitlab-org/gitlab-foss/issues/26', @@ -101,8 +101,8 @@ export const individualNote = { { name: 'art', user: { id: 1, name: 'Root', username: 'root' } }, ], toggle_award_path: '/gitlab-org/gitlab-foss/notes/1390/toggle_award_emoji', - noteable_note_url: '/group/project/merge_requests/1#note_1', - note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', + note_url: '/group/project/-/merge_requests/1#note_1', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1390&user_id=1', path: '/gitlab-org/gitlab-foss/notes/1390', @@ -161,8 +161,8 @@ export const note = { }, ], toggle_award_path: '/gitlab-org/gitlab-foss/notes/546/toggle_award_emoji', - note_url: '/group/project/merge_requests/1#note_1', - noteable_note_url: '/group/project/merge_requests/1#note_1', + note_url: '/group/project/-/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F7%23note_546&user_id=1', path: '/gitlab-org/gitlab-foss/notes/546', @@ -205,7 +205,7 @@ export const discussionMock = { discussion_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', emoji_awardable: true, award_emoji: [], - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', toggle_award_path: '/gitlab-org/gitlab-foss/notes/1395/toggle_award_emoji', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1395&user_id=1', @@ -253,7 +253,7 @@ export const discussionMock = { emoji_awardable: true, award_emoji: [], toggle_award_path: '/gitlab-org/gitlab-foss/notes/1396/toggle_award_emoji', - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1396&user_id=1', path: '/gitlab-org/gitlab-foss/notes/1396', @@ -299,7 +299,7 @@ export const discussionMock = { discussion_id: '9e3bd2f71a01de45fd166e6719eb380ad9f270b1', emoji_awardable: true, award_emoji: [], - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', toggle_award_path: '/gitlab-org/gitlab-foss/notes/1437/toggle_award_emoji', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1437&user_id=1', @@ -349,7 +349,7 @@ export const loggedOutnoteableData = { can_create_note: false, can_update: false, }, - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', create_note_path: '/gitlab-org/gitlab-foss/notes?target_id=98&target_type=issue', preview_note_path: '/gitlab-org/gitlab-foss/preview_markdown?target_id=98&target_type=Issue', }; @@ -483,7 +483,7 @@ export const INDIVIDUAL_NOTE_RESPONSE_MAP = { }, }, ], - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', toggle_award_path: '/gitlab-org/gitlab-foss/notes/1390/toggle_award_emoji', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1390\u0026user_id=1', @@ -528,7 +528,7 @@ export const INDIVIDUAL_NOTE_RESPONSE_MAP = { discussion_id: '70d5c92a4039a36c70100c6691c18c27e4b0a790', emoji_awardable: true, award_emoji: [], - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', toggle_award_path: '/gitlab-org/gitlab-foss/notes/1391/toggle_award_emoji', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F26%23note_1391\u0026user_id=1', @@ -583,7 +583,7 @@ export const INDIVIDUAL_NOTE_RESPONSE_MAP = { discussion_id: 'a3ed36e29b1957efb3b68c53e2d7a2b24b1df052', emoji_awardable: true, award_emoji: [], - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', toggle_award_path: '/gitlab-org/gitlab-foss/notes/1471/toggle_award_emoji', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F29%23note_1471\u0026user_id=1', @@ -635,7 +635,7 @@ export const DISCUSSION_NOTE_RESPONSE_MAP = { emoji_awardable: true, award_emoji: [], toggle_award_path: '/gitlab-org/gitlab-foss/notes/1471/toggle_award_emoji', - noteable_note_url: '/group/project/merge_requests/1#note_1', + noteable_note_url: '/group/project/-/merge_requests/1#note_1', report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F29%23note_1471\u0026user_id=1', path: '/gitlab-org/gitlab-foss/notes/1471', diff --git a/spec/frontend/performance_bar/components/request_selector_spec.js b/spec/frontend/performance_bar/components/request_selector_spec.js index 871f0485a13..9cc8c5e73f4 100644 --- a/spec/frontend/performance_bar/components/request_selector_spec.js +++ b/spec/frontend/performance_bar/components/request_selector_spec.js @@ -5,7 +5,7 @@ describe('request selector', () => { const requests = [ { id: 'warningReq', - url: 'https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/1/discussions.json', + url: 'https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/1/discussions.json', truncatedUrl: 'discussions.json', hasWarnings: true, }, diff --git a/spec/frontend/performance_bar/stores/performance_bar_store_spec.js b/spec/frontend/performance_bar/stores/performance_bar_store_spec.js index 6b7893cb523..56bab71540c 100644 --- a/spec/frontend/performance_bar/stores/performance_bar_store_spec.js +++ b/spec/frontend/performance_bar/stores/performance_bar_store_spec.js @@ -15,14 +15,14 @@ describe('PerformanceBarStore', () => { }); it('keeps the last two components of the path when the last component is numeric', () => { - store.addRequest('id', 'https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/1'); + store.addRequest('id', 'https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/1'); expect(findUrl('id')).toEqual('merge_requests/1'); }); it('uses the last component of the path', () => { store.addRequest( 'id', - 'https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/1.json?serializer=widget', + 'https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/1.json?serializer=widget', ); expect(findUrl('id')).toEqual('1.json?serializer=widget'); }); diff --git a/spec/helpers/award_emoji_helper_spec.rb b/spec/helpers/award_emoji_helper_spec.rb index 2ad6b68a34c..975f32edd42 100644 --- a/spec/helpers/award_emoji_helper_spec.rb +++ b/spec/helpers/award_emoji_helper_spec.rb @@ -51,7 +51,7 @@ describe AwardEmojiHelper do it 'returns correct url' do @project = merge_request.project - expected_url = "/#{@project.namespace.path}/#{@project.path}/merge_requests/#{merge_request.iid}/toggle_award_emoji" + expected_url = "/#{@project.namespace.path}/#{@project.path}/-/merge_requests/#{merge_request.iid}/toggle_award_emoji" expect(subject).to eq(expected_url) end diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb index 9b28bc19185..fa553710274 100644 --- a/spec/helpers/events_helper_spec.rb +++ b/spec/helpers/events_helper_spec.rb @@ -116,7 +116,7 @@ describe EventsHelper do it 'returns a merge request url' do event.target = create(:note_on_merge_request, note: 'LGTM!') - expect(subject).to eq("#{project_base_url}/merge_requests/#{event.note_target.iid}#note_#{event.target.id}") + expect(subject).to eq("#{project_base_url}/-/merge_requests/#{event.note_target.iid}#note_#{event.target.id}") end end end diff --git a/spec/helpers/labels_helper_spec.rb b/spec/helpers/labels_helper_spec.rb index 3e92436241b..7ad554fd618 100644 --- a/spec/helpers/labels_helper_spec.rb +++ b/spec/helpers/labels_helper_spec.rb @@ -78,13 +78,21 @@ describe LabelsHelper do end context 'with a type argument' do - ['issue', :issue, 'merge_request', :merge_request].each do |type| + ['issue', :issue].each do |type| context "set to #{type}" do it 'links to correct page' do expect(link_to_label(label_presenter, 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 + + ['merge_request', :merge_request].each do |type| + context "set to #{type}" do + it 'links to correct page' do + expect(link_to_label(label_presenter, 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 context 'with a tooltip argument' do diff --git a/spec/javascripts/diffs/components/compare_versions_dropdown_spec.js b/spec/javascripts/diffs/components/compare_versions_dropdown_spec.js index df160d7a363..e0686901483 100644 --- a/spec/javascripts/diffs/components/compare_versions_dropdown_spec.js +++ b/spec/javascripts/diffs/components/compare_versions_dropdown_spec.js @@ -9,7 +9,7 @@ const startVersion = { version_index: 4 }; const mergeRequestVersion = { version_path: '123', }; -const baseVersionPath = '/gnuwget/wget2/merge_requests/6/diffs?diff_id=37'; +const baseVersionPath = '/gnuwget/wget2/-/merge_requests/6/diffs?diff_id=37'; describe('CompareVersionsDropdown', () => { let wrapper; diff --git a/spec/javascripts/diffs/mock_data/diff_discussions.js b/spec/javascripts/diffs/mock_data/diff_discussions.js index 711ab543411..a9b00634104 100644 --- a/spec/javascripts/diffs/mock_data/diff_discussions.js +++ b/spec/javascripts/diffs/mock_data/diff_discussions.js @@ -59,9 +59,10 @@ export default { report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-test%2Fmerge_requests%2F20%23note_1749&user_id=1', path: '/gitlab-org/gitlab-test/notes/1749', - noteable_note_url: 'http://localhost:3000/gitlab-org/gitlab-test/merge_requests/20#note_1749', + noteable_note_url: + 'http://localhost:3000/gitlab-org/gitlab-test/-/merge_requests/20#note_1749', resolve_path: - '/gitlab-org/gitlab-test/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', + '/gitlab-org/gitlab-test/-/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', resolve_with_issue_path: '/gitlab-org/gitlab-test/issues/new?discussion_to_resolve=6b232e05bea388c6b043ccc243ba505faac04ea8&merge_request_to_resolve_discussions_of=20', }, @@ -111,9 +112,10 @@ export default { report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-test%2Fmerge_requests%2F20%23note_1753&user_id=1', path: '/gitlab-org/gitlab-test/notes/1753', - noteable_note_url: 'http://localhost:3000/gitlab-org/gitlab-test/merge_requests/20#note_1753', + noteable_note_url: + 'http://localhost:3000/gitlab-org/gitlab-test/-/merge_requests/20#note_1753', resolve_path: - '/gitlab-org/gitlab-test/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', + '/gitlab-org/gitlab-test/-/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', resolve_with_issue_path: '/gitlab-org/gitlab-test/issues/new?discussion_to_resolve=6b232e05bea388c6b043ccc243ba505faac04ea8&merge_request_to_resolve_discussions_of=20', }, @@ -153,9 +155,10 @@ export default { report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-test%2Fmerge_requests%2F20%23note_1754&user_id=1', path: '/gitlab-org/gitlab-test/notes/1754', - noteable_note_url: 'http://localhost:3000/gitlab-org/gitlab-test/merge_requests/20#note_1754', + noteable_note_url: + 'http://localhost:3000/gitlab-org/gitlab-test/-/merge_requests/20#note_1754', resolve_path: - '/gitlab-org/gitlab-test/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', + '/gitlab-org/gitlab-test/-/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', resolve_with_issue_path: '/gitlab-org/gitlab-test/issues/new?discussion_to_resolve=6b232e05bea388c6b043ccc243ba505faac04ea8&merge_request_to_resolve_discussions_of=20', }, @@ -195,9 +198,10 @@ export default { report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-test%2Fmerge_requests%2F20%23note_1755&user_id=1', path: '/gitlab-org/gitlab-test/notes/1755', - noteable_note_url: 'http://localhost:3000/gitlab-org/gitlab-test/merge_requests/20#note_1755', + noteable_note_url: + 'http://localhost:3000/gitlab-org/gitlab-test/-/merge_requests/20#note_1755', resolve_path: - '/gitlab-org/gitlab-test/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', + '/gitlab-org/gitlab-test/-/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', resolve_with_issue_path: '/gitlab-org/gitlab-test/issues/new?discussion_to_resolve=6b232e05bea388c6b043ccc243ba505faac04ea8&merge_request_to_resolve_discussions_of=20', }, @@ -237,9 +241,10 @@ export default { report_abuse_path: '/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-test%2Fmerge_requests%2F20%23note_1756&user_id=1', path: '/gitlab-org/gitlab-test/notes/1756', - noteable_note_url: 'http://localhost:3000/gitlab-org/gitlab-test/merge_requests/20#note_1756', + noteable_note_url: + 'http://localhost:3000/gitlab-org/gitlab-test/-/merge_requests/20#note_1756', resolve_path: - '/gitlab-org/gitlab-test/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', + '/gitlab-org/gitlab-test/-/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', resolve_with_issue_path: '/gitlab-org/gitlab-test/issues/new?discussion_to_resolve=6b232e05bea388c6b043ccc243ba505faac04ea8&merge_request_to_resolve_discussions_of=20', }, @@ -248,7 +253,7 @@ export default { resolvable: true, resolved: false, resolve_path: - '/gitlab-org/gitlab-test/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', + '/gitlab-org/gitlab-test/-/merge_requests/20/discussions/6b232e05bea388c6b043ccc243ba505faac04ea8/resolve', resolve_with_issue_path: '/gitlab-org/gitlab-test/issues/new?discussion_to_resolve=6b232e05bea388c6b043ccc243ba505faac04ea8&merge_request_to_resolve_discussions_of=20', diff_file: { diff --git a/spec/javascripts/ide/stores/modules/commit/actions_spec.js b/spec/javascripts/ide/stores/modules/commit/actions_spec.js index cbc2401262f..557244e237e 100644 --- a/spec/javascripts/ide/stores/modules/commit/actions_spec.js +++ b/spec/javascripts/ide/stores/modules/commit/actions_spec.js @@ -461,7 +461,7 @@ describe('IDE commit module actions', () => { .dispatch('commit/commitChanges') .then(() => { expect(visitUrl).toHaveBeenCalledWith( - `webUrl/merge_requests/new?merge_request[source_branch]=${ + `webUrl/-/merge_requests/new?merge_request[source_branch]=${ store.getters['commit/placeholderBranchName'] }&merge_request[target_branch]=master&nav_source=webide`, ); diff --git a/spec/javascripts/jobs/components/stages_dropdown_spec.js b/spec/javascripts/jobs/components/stages_dropdown_spec.js index e091aece564..f1a01530104 100644 --- a/spec/javascripts/jobs/components/stages_dropdown_spec.js +++ b/spec/javascripts/jobs/components/stages_dropdown_spec.js @@ -27,7 +27,7 @@ describe('Stages Dropdown', () => { }, merge_request: { iid: 1234, - path: '/root/detached-merge-request-pipelines/merge_requests/1', + path: '/root/detached-merge-request-pipelines/-/merge_requests/1', title: 'Update README.md', source_branch: 'feature-1234', source_branch_path: '/root/detached-merge-request-pipelines/branches/feature-1234', diff --git a/spec/javascripts/merge_request_spec.js b/spec/javascripts/merge_request_spec.js index dc61482fdf3..b6173b9b171 100644 --- a/spec/javascripts/merge_request_spec.js +++ b/spec/javascripts/merge_request_spec.js @@ -17,7 +17,7 @@ describe('MergeRequest', function() { mock = new MockAdapter(axios); mock - .onPatch(`${gl.TEST_HOST}/frontend-fixtures/merge-requests-project/merge_requests/1.json`) + .onPatch(`${gl.TEST_HOST}/frontend-fixtures/merge-requests-project/-/merge_requests/1.json`) .reply(200, {}); this.merge = new MergeRequest(); @@ -75,7 +75,7 @@ describe('MergeRequest', function() { setTimeout(() => { expect(axios.patch).toHaveBeenCalledWith( - `${gl.TEST_HOST}/frontend-fixtures/merge-requests-project/merge_requests/1.json`, + `${gl.TEST_HOST}/frontend-fixtures/merge-requests-project/-/merge_requests/1.json`, { merge_request: { description: '- [ ] Task List Item\n- [ ] \n- [ ] Task List Item 2\n', @@ -93,7 +93,9 @@ describe('MergeRequest', function() { // eslint-disable-next-line jasmine/no-disabled-tests xit('shows an error notification when tasklist update failed', done => { mock - .onPatch(`${gl.TEST_HOST}/frontend-fixtures/merge-requests-project/merge_requests/1.json`) + .onPatch( + `${gl.TEST_HOST}/frontend-fixtures/merge-requests-project/-/merge_requests/1.json`, + ) .reply(409, {}); $('.js-task-list-field').trigger({ diff --git a/spec/javascripts/merge_request_tabs_spec.js b/spec/javascripts/merge_request_tabs_spec.js index 019aa191dc0..cbb61333d77 100644 --- a/spec/javascripts/merge_request_tabs_spec.js +++ b/spec/javascripts/merge_request_tabs_spec.js @@ -146,53 +146,53 @@ describe('MergeRequestTabs', function() { it('changes from commits', function() { setLocation({ - pathname: '/foo/bar/merge_requests/1/commits', + pathname: '/foo/bar/-/merge_requests/1/commits', }); - expect(this.subject('show')).toBe('/foo/bar/merge_requests/1'); - expect(this.subject('diffs')).toBe('/foo/bar/merge_requests/1/diffs'); + expect(this.subject('show')).toBe('/foo/bar/-/merge_requests/1'); + expect(this.subject('diffs')).toBe('/foo/bar/-/merge_requests/1/diffs'); }); it('changes from diffs', function() { setLocation({ - pathname: '/foo/bar/merge_requests/1/diffs', + pathname: '/foo/bar/-/merge_requests/1/diffs', }); - expect(this.subject('show')).toBe('/foo/bar/merge_requests/1'); - expect(this.subject('commits')).toBe('/foo/bar/merge_requests/1/commits'); + expect(this.subject('show')).toBe('/foo/bar/-/merge_requests/1'); + expect(this.subject('commits')).toBe('/foo/bar/-/merge_requests/1/commits'); }); it('changes from diffs.html', function() { setLocation({ - pathname: '/foo/bar/merge_requests/1/diffs.html', + pathname: '/foo/bar/-/merge_requests/1/diffs.html', }); - expect(this.subject('show')).toBe('/foo/bar/merge_requests/1'); - expect(this.subject('commits')).toBe('/foo/bar/merge_requests/1/commits'); + expect(this.subject('show')).toBe('/foo/bar/-/merge_requests/1'); + expect(this.subject('commits')).toBe('/foo/bar/-/merge_requests/1/commits'); }); it('changes from notes', function() { setLocation({ - pathname: '/foo/bar/merge_requests/1', + pathname: '/foo/bar/-/merge_requests/1', }); - expect(this.subject('diffs')).toBe('/foo/bar/merge_requests/1/diffs'); - expect(this.subject('commits')).toBe('/foo/bar/merge_requests/1/commits'); + expect(this.subject('diffs')).toBe('/foo/bar/-/merge_requests/1/diffs'); + expect(this.subject('commits')).toBe('/foo/bar/-/merge_requests/1/commits'); }); it('includes search parameters and hash string', function() { setLocation({ - pathname: '/foo/bar/merge_requests/1/diffs', + pathname: '/foo/bar/-/merge_requests/1/diffs', search: '?view=parallel', hash: '#L15-35', }); - expect(this.subject('show')).toBe('/foo/bar/merge_requests/1?view=parallel#L15-35'); + expect(this.subject('show')).toBe('/foo/bar/-/merge_requests/1?view=parallel#L15-35'); }); it('replaces the current history state', function() { setLocation({ - pathname: '/foo/bar/merge_requests/1', + pathname: '/foo/bar/-/merge_requests/1', }); const newState = this.subject('commits'); @@ -207,10 +207,10 @@ describe('MergeRequestTabs', function() { it('treats "show" like "notes"', function() { setLocation({ - pathname: '/foo/bar/merge_requests/1/commits', + pathname: '/foo/bar/-/merge_requests/1/commits', }); - expect(this.subject('show')).toBe('/foo/bar/merge_requests/1'); + expect(this.subject('show')).toBe('/foo/bar/-/merge_requests/1'); }); }); diff --git a/spec/javascripts/notes/components/note_actions_spec.js b/spec/javascripts/notes/components/note_actions_spec.js index 259122597fb..5d13f587ca7 100644 --- a/spec/javascripts/notes/components/note_actions_spec.js +++ b/spec/javascripts/notes/components/note_actions_spec.js @@ -29,7 +29,7 @@ describe('noteActions', () => { canAwardEmoji: true, canReportAsAbuse: true, noteId: '539', - noteUrl: `${TEST_HOST}/group/project/merge_requests/1#note_1`, + noteUrl: `${TEST_HOST}/group/project/-/merge_requests/1#note_1`, reportAbusePath: `${TEST_HOST}/abuse_reports/new?ref_url=http%3A%2F%2Flocalhost%3A3000%2Fgitlab-org%2Fgitlab-ce%2Fissues%2F7%23note_539&user_id=26`, showReply: false, }; diff --git a/spec/javascripts/search_autocomplete_spec.js b/spec/javascripts/search_autocomplete_spec.js index 1798f9962e2..e9bc1fc51e8 100644 --- a/spec/javascripts/search_autocomplete_spec.js +++ b/spec/javascripts/search_autocomplete_spec.js @@ -18,11 +18,11 @@ describe('Search autocomplete dropdown', () => { const projectIssuesPath = '/gitlab-org/gitlab-foss/issues'; - const projectMRsPath = '/gitlab-org/gitlab-foss/merge_requests'; + const projectMRsPath = '/gitlab-org/gitlab-foss/-/merge_requests'; - const groupIssuesPath = '/groups/gitlab-org/issues'; + const groupIssuesPath = '/groups/gitlab-org/-/issues'; - const groupMRsPath = '/groups/gitlab-org/merge_requests'; + const groupMRsPath = '/groups/gitlab-org/-/merge_requests'; const projectName = 'GitLab Community Edition'; diff --git a/spec/javascripts/vue_mr_widget/mock_data.js b/spec/javascripts/vue_mr_widget/mock_data.js index c7ca93c58cf..4db6b421200 100644 --- a/spec/javascripts/vue_mr_widget/mock_data.js +++ b/spec/javascripts/vue_mr_widget/mock_data.js @@ -146,7 +146,7 @@ export default { }, merge_request: { iid: 1, - path: '/root/detached-merge-request-pipelines/merge_requests/1', + path: '/root/detached-merge-request-pipelines/-/merge_requests/1', title: 'Update README.md', source_branch: 'feature-1', source_branch_path: '/root/detached-merge-request-pipelines/branches/feature-1', @@ -196,7 +196,7 @@ export default { can_be_merged: true, has_ci: true, ci_status: 'success', - pipeline_status_path: '/root/acets-app/merge_requests/22/pipeline_status', + pipeline_status_path: '/root/acets-app/-/merge_requests/22/pipeline_status', issues_links: { closing: '', mentioned_but_not_closing: '', @@ -209,30 +209,30 @@ export default { }, target_branch_path: '/root/acets-app/branches/master', source_branch_path: '/root/acets-app/branches/daaaa', - conflict_resolution_ui_path: '/root/acets-app/merge_requests/22/conflicts', - remove_wip_path: '/root/acets-app/merge_requests/22/remove_wip', - cancel_auto_merge_path: '/root/acets-app/merge_requests/22/cancel_auto_merge', + conflict_resolution_ui_path: '/root/acets-app/-/merge_requests/22/conflicts', + remove_wip_path: '/root/acets-app/-/merge_requests/22/remove_wip', + cancel_auto_merge_path: '/root/acets-app/-/merge_requests/22/cancel_auto_merge', create_issue_to_resolve_discussions_path: '/root/acets-app/issues/new?merge_request_to_resolve_discussions_of=22', - merge_path: '/root/acets-app/merge_requests/22/merge', + merge_path: '/root/acets-app/-/merge_requests/22/merge', cherry_pick_in_fork_path: '/root/acets-app/forks?continue%5Bnotice%5D=You%27re+not+allowed+to+make+changes+to+this+project+directly.+A+fork+of+this+project+has+been+created+that+you+can+make+changes+in%2C+so+you+can+submit+a+merge+request.+Try+to+revert+this+commit+again.&continue%5Bnotice_now%5D=You%27re+not+allowed+to+make+changes+to+this+project+directly.+A+fork+of+this+project+is+being+created+that+you+can+make+changes+in%2C+so+you+can+submit+a+merge+request.&continue%5Bto%5D=%2Froot%2Facets-app%2Fmerge_requests%2F22&namespace_key=1', revert_in_fork_path: '/root/acets-app/forks?continue%5Bnotice%5D=You%27re+not+allowed+to+make+changes+to+this+project+directly.+A+fork+of+this+project+has+been+created+that+you+can+make+changes+in%2C+so+you+can+submit+a+merge+request.+Try+to+cherry-pick+this+commit+again.&continue%5Bnotice_now%5D=You%27re+not+allowed+to+make+changes+to+this+project+directly.+A+fork+of+this+project+is+being+created+that+you+can+make+changes+in%2C+so+you+can+submit+a+merge+request.&continue%5Bto%5D=%2Froot%2Facets-app%2Fmerge_requests%2F22&namespace_key=1', - email_patches_path: '/root/acets-app/merge_requests/22.patch', - plain_diff_path: '/root/acets-app/merge_requests/22.diff', - merge_request_basic_path: '/root/acets-app/merge_requests/22.json?serializer=basic', - merge_request_widget_path: '/root/acets-app/merge_requests/22/widget.json', + email_patches_path: '/root/acets-app/-/merge_requests/22.patch', + plain_diff_path: '/root/acets-app/-/merge_requests/22.diff', + merge_request_basic_path: '/root/acets-app/-/merge_requests/22.json?serializer=basic', + merge_request_widget_path: '/root/acets-app/-/merge_requests/22/widget.json', merge_request_cached_widget_path: '/cached.json', - merge_check_path: '/root/acets-app/merge_requests/22/merge_check', - ci_environments_status_url: '/root/acets-app/merge_requests/22/ci_environments_status', + merge_check_path: '/root/acets-app/-/merge_requests/22/merge_check', + ci_environments_status_url: '/root/acets-app/-/merge_requests/22/ci_environments_status', project_archived: false, default_merge_commit_message_with_description: "Merge branch 'daaaa' into 'master'\n\nUpdate README.md\n\nSee merge request !22", default_squash_commit_message: 'Test squash commit message', diverged_commits_count: 0, only_allow_merge_if_pipeline_succeeds: false, - commit_change_content_path: '/root/acets-app/merge_requests/22/commit_change_content', + commit_change_content_path: '/root/acets-app/-/merge_requests/22/commit_change_content', merge_commit_path: 'http://localhost:3000/root/acets-app/commit/53027d060246c8f47e4a9310fb332aa52f221775', troubleshooting_docs_path: 'help', diff --git a/spec/lib/banzai/filter/repository_link_filter_spec.rb b/spec/lib/banzai/filter/repository_link_filter_spec.rb index c87f452a3df..6945973dfd6 100644 --- a/spec/lib/banzai/filter/repository_link_filter_spec.rb +++ b/spec/lib/banzai/filter/repository_link_filter_spec.rb @@ -156,7 +156,7 @@ describe Banzai::Filter::RepositoryLinkFilter do end it 'does not modify relative URLs in system notes' do - path = "#{project_path}/merge_requests/1/diffs" + path = "#{project_path}/-/merge_requests/1/diffs" doc = filter(link(path), system_note: true) expect(doc.at_css('a')['href']).to eq path diff --git a/spec/lib/gitlab/danger/helper_spec.rb b/spec/lib/gitlab/danger/helper_spec.rb index ae0fcf443c5..2561e763429 100644 --- a/spec/lib/gitlab/danger/helper_spec.rb +++ b/spec/lib/gitlab/danger/helper_spec.rb @@ -335,14 +335,14 @@ describe Gitlab::Danger::Helper do it 'returns false when on a normal merge request' do expect(fake_gitlab).to receive(:mr_json) - .and_return('web_url' => 'https://gitlab.com/gitlab-org/gitlab/merge_requests/1') + .and_return('web_url' => 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/1') expect(helper).not_to be_security_mr end it 'returns true when on a security merge request' do expect(fake_gitlab).to receive(:mr_json) - .and_return('web_url' => 'https://gitlab.com/gitlab-org/security/gitlab/merge_requests/1') + .and_return('web_url' => 'https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/1') expect(helper).to be_security_mr end diff --git a/spec/lib/gitlab/data_builder/pipeline_spec.rb b/spec/lib/gitlab/data_builder/pipeline_spec.rb index 635bf56b72e..86ab7f888ca 100644 --- a/spec/lib/gitlab/data_builder/pipeline_spec.rb +++ b/spec/lib/gitlab/data_builder/pipeline_spec.rb @@ -77,7 +77,7 @@ describe Gitlab::DataBuilder::Pipeline do expect(merge_request_attrs[:target_project_id]).to eq(merge_request.target_project_id) expect(merge_request_attrs[:state]).to eq(merge_request.state) expect(merge_request_attrs[:merge_status]).to eq(merge_request.merge_status) - expect(merge_request_attrs[:url]).to eq("http://localhost/#{merge_request.target_project.full_path}/merge_requests/#{merge_request.iid}") + expect(merge_request_attrs[:url]).to eq("http://localhost/#{merge_request.target_project.full_path}/-/merge_requests/#{merge_request.iid}") end end end diff --git a/spec/lib/gitlab/etag_caching/router_spec.rb b/spec/lib/gitlab/etag_caching/router_spec.rb index e25ce4df4aa..4cbabb5ad8d 100644 --- a/spec/lib/gitlab/etag_caching/router_spec.rb +++ b/spec/lib/gitlab/etag_caching/router_spec.rb @@ -68,7 +68,7 @@ describe Gitlab::EtagCaching::Router do it 'matches new merge request pipelines endpoint' do result = described_class.match( - '/my-group/my-project/merge_requests/new.json' + '/my-group/my-project/-/merge_requests/new.json' ) expect(result).to be_present @@ -77,7 +77,7 @@ describe Gitlab::EtagCaching::Router do it 'matches merge request pipelines endpoint' do result = described_class.match( - '/my-group/my-project/merge_requests/234/pipelines.json' + '/my-group/my-project/-/merge_requests/234/pipelines.json' ) expect(result).to be_present diff --git a/spec/lib/gitlab/internal_post_receive/response_spec.rb b/spec/lib/gitlab/internal_post_receive/response_spec.rb index f43762c9248..d90b85a41ed 100644 --- a/spec/lib/gitlab/internal_post_receive/response_spec.rb +++ b/spec/lib/gitlab/internal_post_receive/response_spec.rb @@ -9,8 +9,8 @@ describe Gitlab::InternalPostReceive::Response do context 'when there are urls_data' do it 'adds a message for each merge request URL' do urls_data = [ - { new_merge_request: false, branch_name: 'foo', url: 'http://example.com/foo/bar/merge_requests/1' }, - { new_merge_request: true, branch_name: 'bar', url: 'http://example.com/foo/bar/merge_requests/new?merge_request%5Bsource_branch%5D=bar' } + { new_merge_request: false, branch_name: 'foo', url: 'http://example.com/foo/bar/-/merge_requests/1' }, + { new_merge_request: true, branch_name: 'bar', url: 'http://example.com/foo/bar/-/merge_requests/new?merge_request%5Bsource_branch%5D=bar' } ] subject.add_merge_request_urls(urls_data) @@ -24,13 +24,13 @@ describe Gitlab::InternalPostReceive::Response do describe '#add_merge_request_url' do context 'when :new_merge_request is false' do it 'adds a basic message to view the existing merge request' do - url_data = { new_merge_request: false, branch_name: 'foo', url: 'http://example.com/foo/bar/merge_requests/1' } + url_data = { new_merge_request: false, branch_name: 'foo', url: 'http://example.com/foo/bar/-/merge_requests/1' } subject.add_merge_request_url(url_data) message = <<~MESSAGE.strip View merge request for foo: - http://example.com/foo/bar/merge_requests/1 + http://example.com/foo/bar/-/merge_requests/1 MESSAGE expect(subject.messages.first.message).to eq(message) @@ -40,13 +40,13 @@ describe Gitlab::InternalPostReceive::Response do context 'when :new_merge_request is true' do it 'adds a basic message to create a new merge request' do - url_data = { new_merge_request: true, branch_name: 'bar', url: 'http://example.com/foo/bar/merge_requests/new?merge_request%5Bsource_branch%5D=bar' } + url_data = { new_merge_request: true, branch_name: 'bar', url: 'http://example.com/foo/bar/-/merge_requests/new?merge_request%5Bsource_branch%5D=bar' } subject.add_merge_request_url(url_data) message = <<~MESSAGE.strip To create a merge request for bar, visit: - http://example.com/foo/bar/merge_requests/new?merge_request%5Bsource_branch%5D=bar + http://example.com/foo/bar/-/merge_requests/new?merge_request%5Bsource_branch%5D=bar MESSAGE expect(subject.messages.first.message).to eq(message) diff --git a/spec/lib/gitlab/url_builder_spec.rb b/spec/lib/gitlab/url_builder_spec.rb index 0aab02b6c4c..d349c2928b0 100644 --- a/spec/lib/gitlab/url_builder_spec.rb +++ b/spec/lib/gitlab/url_builder_spec.rb @@ -55,7 +55,7 @@ describe Gitlab::UrlBuilder do url = described_class.build(merge_request) - expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.full_path}/merge_requests/#{merge_request.iid}" + expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.full_path}/-/merge_requests/#{merge_request.iid}" end end @@ -118,7 +118,7 @@ describe Gitlab::UrlBuilder do url = described_class.build(note) - expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.full_path}/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 @@ -129,7 +129,7 @@ describe Gitlab::UrlBuilder do url = described_class.build(note) - expect(url).to eq "#{Settings.gitlab['url']}/#{merge_request.project.full_path}/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 diff --git a/spec/models/project_services/chat_message/merge_message_spec.rb b/spec/models/project_services/chat_message/merge_message_spec.rb index b56eb19dd55..150ee6f7472 100644 --- a/spec/models/project_services/chat_message/merge_message_spec.rb +++ b/spec/models/project_services/chat_message/merge_message_spec.rb @@ -52,7 +52,7 @@ describe ChatMessage::MergeMessage do context 'open' do it 'returns a message regarding opening of merge requests' do expect(subject.pretext).to eq( - 'Test User (test.user) opened <http://somewhere.com/merge_requests/100|!100 *Merge Request title*> in <http://somewhere.com|project_name>') + 'Test User (test.user) opened <http://somewhere.com/-/merge_requests/100|!100 *Merge Request title*> in <http://somewhere.com|project_name>') expect(subject.attachments).to be_empty end end @@ -63,7 +63,7 @@ describe ChatMessage::MergeMessage do end it 'returns a message regarding closing of merge requests' do expect(subject.pretext).to eq( - 'Test User (test.user) closed <http://somewhere.com/merge_requests/100|!100 *Merge Request title*> in <http://somewhere.com|project_name>') + 'Test User (test.user) closed <http://somewhere.com/-/merge_requests/100|!100 *Merge Request title*> in <http://somewhere.com|project_name>') expect(subject.attachments).to be_empty end end @@ -77,12 +77,12 @@ describe ChatMessage::MergeMessage do context 'open' do it 'returns a message regarding opening of merge requests' do expect(subject.pretext).to eq( - 'Test User (test.user) opened [!100 *Merge Request title*](http://somewhere.com/merge_requests/100) in [project_name](http://somewhere.com)') + 'Test User (test.user) opened [!100 *Merge Request title*](http://somewhere.com/-/merge_requests/100) in [project_name](http://somewhere.com)') expect(subject.attachments).to be_empty expect(subject.activity).to eq({ title: 'Merge Request opened by Test User (test.user)', subtitle: 'in [project_name](http://somewhere.com)', - text: '[!100 *Merge Request title*](http://somewhere.com/merge_requests/100)', + text: '[!100 *Merge Request title*](http://somewhere.com/-/merge_requests/100)', image: 'http://someavatar.com' }) end @@ -95,12 +95,12 @@ describe ChatMessage::MergeMessage do it 'returns a message regarding closing of merge requests' do expect(subject.pretext).to eq( - 'Test User (test.user) closed [!100 *Merge Request title*](http://somewhere.com/merge_requests/100) in [project_name](http://somewhere.com)') + 'Test User (test.user) closed [!100 *Merge Request title*](http://somewhere.com/-/merge_requests/100) in [project_name](http://somewhere.com)') expect(subject.attachments).to be_empty expect(subject.activity).to eq({ title: 'Merge Request closed by Test User (test.user)', subtitle: 'in [project_name](http://somewhere.com)', - text: '[!100 *Merge Request title*](http://somewhere.com/merge_requests/100)', + text: '[!100 *Merge Request title*](http://somewhere.com/-/merge_requests/100)', image: 'http://someavatar.com' }) end diff --git a/spec/presenters/merge_request_presenter_spec.rb b/spec/presenters/merge_request_presenter_spec.rb index ce437090d43..6ce6f84cf61 100644 --- a/spec/presenters/merge_request_presenter_spec.rb +++ b/spec/presenters/merge_request_presenter_spec.rb @@ -101,7 +101,7 @@ describe MergeRequestPresenter do allow(presenter).to receive_message_chain(:conflicts, :can_be_resolved_by?).with(user) { true } expect(path) - .to eq("/#{project.full_path}/merge_requests/#{resource.iid}/conflicts") + .to eq("/#{project.full_path}/-/merge_requests/#{resource.iid}/conflicts") end end end @@ -179,7 +179,7 @@ describe MergeRequestPresenter do it 'returns correct link with correct text' do is_expected - .to match("#{project.full_path}/merge_requests/#{resource.iid}/assign_related_issues") + .to match("#{project.full_path}/-/merge_requests/#{resource.iid}/assign_related_issues") is_expected .to match("Assign yourself to this issue") @@ -192,7 +192,7 @@ describe MergeRequestPresenter do it 'returns correct link with correct text' do is_expected - .to match("#{project.full_path}/merge_requests/#{resource.iid}/assign_related_issues") + .to match("#{project.full_path}/-/merge_requests/#{resource.iid}/assign_related_issues") is_expected .to match("Assign yourself to these issues") @@ -221,7 +221,7 @@ describe MergeRequestPresenter do .with(user) .and_return(true) - is_expected.to eq("/#{resource.project.full_path}/merge_requests/#{resource.iid}/cancel_auto_merge") + is_expected.to eq("/#{resource.project.full_path}/-/merge_requests/#{resource.iid}/cancel_auto_merge") end end @@ -248,7 +248,7 @@ describe MergeRequestPresenter do .and_return(true) is_expected - .to eq("/#{resource.project.full_path}/merge_requests/#{resource.iid}/merge") + .to eq("/#{resource.project.full_path}/-/merge_requests/#{resource.iid}/merge") end end @@ -312,7 +312,7 @@ describe MergeRequestPresenter do project.add_maintainer(user) is_expected - .to eq("/#{resource.project.full_path}/merge_requests/#{resource.iid}/remove_wip") + .to eq("/#{resource.project.full_path}/-/merge_requests/#{resource.iid}/remove_wip") end end @@ -535,7 +535,7 @@ describe MergeRequestPresenter do it 'returns path' do is_expected - .to eq("/#{project.full_path}/merge_requests/#{resource.iid}/rebase") + .to eq("/#{project.full_path}/-/merge_requests/#{resource.iid}/rebase") end end diff --git a/spec/requests/api/internal/base_spec.rb b/spec/requests/api/internal/base_spec.rb index 01a5930f8fb..dd93d5a6f5f 100644 --- a/spec/requests/api/internal/base_spec.rb +++ b/spec/requests/api/internal/base_spec.rb @@ -858,7 +858,7 @@ describe API::Internal::Base do message = <<~MESSAGE.strip To create a merge request for #{branch_name}, visit: - http://#{Gitlab.config.gitlab.host}/#{project.full_path}/merge_requests/new?merge_request%5Bsource_branch%5D=#{branch_name} + http://#{Gitlab.config.gitlab.host}/#{project.full_path}/-/merge_requests/new?merge_request%5Bsource_branch%5D=#{branch_name} MESSAGE expect(json_response['messages']).to include(build_basic_message(message)) @@ -921,7 +921,7 @@ describe API::Internal::Base do message = <<~MESSAGE.strip View merge request for #{branch_name}: - http://#{Gitlab.config.gitlab.host}/#{project.full_path}/merge_requests/1 + http://#{Gitlab.config.gitlab.host}/#{project.full_path}/-/merge_requests/1 MESSAGE expect(json_response['messages']).to include(build_basic_message(message)) diff --git a/spec/requests/api/releases_spec.rb b/spec/requests/api/releases_spec.rb index d3fe4c22b1d..ae95b54a590 100644 --- a/spec/requests/api/releases_spec.rb +++ b/spec/requests/api/releases_spec.rb @@ -76,7 +76,7 @@ describe API::Releases do mr_uri = URI.parse(links['merge_requests_url']) issue_uri = URI.parse(links['issues_url']) - expect(mr_uri.path).to eq("#{path_base}/merge_requests") + expect(mr_uri.path).to eq("#{path_base}/-/merge_requests") expect(issue_uri.path).to eq("#{path_base}/issues") expect(mr_uri.query).to eq(expected_query) expect(issue_uri.query).to eq(expected_query) diff --git a/spec/requests/projects/merge_requests_discussions_spec.rb b/spec/requests/projects/merge_requests_discussions_spec.rb index 5945561aa7b..ffc98d09e5c 100644 --- a/spec/requests/projects/merge_requests_discussions_spec.rb +++ b/spec/requests/projects/merge_requests_discussions_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe 'merge requests discussions' do # Further tests can be found at merge_requests_controller_spec.rb - describe 'GET /:namespace/:project/merge_requests/:iid/discussions' do + describe 'GET /:namespace/:project/-/merge_requests/:iid/discussions' do let(:project) { create(:project, :repository) } let(:user) { project.owner } let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) } diff --git a/spec/requests/user_activity_spec.rb b/spec/requests/user_activity_spec.rb index 15666e00b9f..3cd4911098a 100644 --- a/spec/requests/user_activity_spec.rb +++ b/spec/requests/user_activity_spec.rb @@ -26,8 +26,8 @@ describe 'Update of user activity' do '/dashboard/todos', '/group/project/issues', '/group/project/issues/10', - '/group/project/merge_requests', - '/group/project/merge_requests/15' + '/group/project/-/merge_requests', + '/group/project/-/merge_requests/15' ] context 'without an authenticated user' do diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb index efd7d3f3742..8a1d34b2ecc 100644 --- a/spec/routing/project_routing_spec.rb +++ b/spec/routing/project_routing_spec.rb @@ -292,26 +292,26 @@ describe 'project routing' do describe Projects::MergeRequestsController, 'routing' do it 'to #commits' do - expect(get('/gitlab/gitlabhq/merge_requests/1/commits.json')).to route_to('projects/merge_requests#commits', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'json') + expect(get('/gitlab/gitlabhq/-/merge_requests/1/commits.json')).to route_to('projects/merge_requests#commits', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'json') end it 'to #pipelines' do - expect(get('/gitlab/gitlabhq/merge_requests/1/pipelines.json')).to route_to('projects/merge_requests#pipelines', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'json') + expect(get('/gitlab/gitlabhq/-/merge_requests/1/pipelines.json')).to route_to('projects/merge_requests#pipelines', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'json') end it 'to #merge' do - expect(post('/gitlab/gitlabhq/merge_requests/1/merge')).to route_to( + expect(post('/gitlab/gitlabhq/-/merge_requests/1/merge')).to route_to( 'projects/merge_requests#merge', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1' ) end it 'to #show' do - expect(get('/gitlab/gitlabhq/merge_requests/1.diff')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'diff') - expect(get('/gitlab/gitlabhq/merge_requests/1.patch')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'patch') - expect(get('/gitlab/gitlabhq/merge_requests/1/diffs')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', tab: 'diffs') - expect(get('/gitlab/gitlabhq/merge_requests/1/commits')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', tab: 'commits') - expect(get('/gitlab/gitlabhq/merge_requests/1/pipelines')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', tab: 'pipelines') + expect(get('/gitlab/gitlabhq/-/merge_requests/1.diff')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'diff') + expect(get('/gitlab/gitlabhq/-/merge_requests/1.patch')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'patch') + expect(get('/gitlab/gitlabhq/-/merge_requests/1/diffs')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', tab: 'diffs') + expect(get('/gitlab/gitlabhq/-/merge_requests/1/commits')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', tab: 'commits') + expect(get('/gitlab/gitlabhq/-/merge_requests/1/pipelines')).to route_to('projects/merge_requests#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', tab: 'pipelines') end it 'to #show from scoped route' do @@ -323,46 +323,52 @@ describe 'project routing' do it_behaves_like 'RESTful project resources' do let(:controller) { 'merge_requests' } let(:actions) { [:index, :edit, :show, :update] } + let(:controller_path) { '/-/merge_requests' } end + + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/merge_requests", "/gitlab/gitlabhq/-/merge_requests" + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/merge_requests/1/diffs", "/gitlab/gitlabhq/-/merge_requests/1/diffs" end describe Projects::MergeRequests::CreationsController, 'routing' do it 'to #new' do - expect(get('/gitlab/gitlabhq/merge_requests/new')).to route_to('projects/merge_requests/creations#new', namespace_id: 'gitlab', project_id: 'gitlabhq') - expect(get('/gitlab/gitlabhq/merge_requests/new/diffs')).to route_to('projects/merge_requests/creations#new', namespace_id: 'gitlab', project_id: 'gitlabhq', tab: 'diffs') - expect(get('/gitlab/gitlabhq/merge_requests/new/pipelines')).to route_to('projects/merge_requests/creations#new', namespace_id: 'gitlab', project_id: 'gitlabhq', tab: 'pipelines') + expect(get('/gitlab/gitlabhq/-/merge_requests/new')).to route_to('projects/merge_requests/creations#new', namespace_id: 'gitlab', project_id: 'gitlabhq') + expect(get('/gitlab/gitlabhq/-/merge_requests/new/diffs')).to route_to('projects/merge_requests/creations#new', namespace_id: 'gitlab', project_id: 'gitlabhq', tab: 'diffs') + expect(get('/gitlab/gitlabhq/-/merge_requests/new/pipelines')).to route_to('projects/merge_requests/creations#new', namespace_id: 'gitlab', project_id: 'gitlabhq', tab: 'pipelines') end it 'to #create' do - expect(post('/gitlab/gitlabhq/merge_requests')).to route_to('projects/merge_requests/creations#create', namespace_id: 'gitlab', project_id: 'gitlabhq') + expect(post('/gitlab/gitlabhq/-/merge_requests')).to route_to('projects/merge_requests/creations#create', namespace_id: 'gitlab', project_id: 'gitlabhq') end it 'to #branch_from' do - expect(get('/gitlab/gitlabhq/merge_requests/new/branch_from')).to route_to('projects/merge_requests/creations#branch_from', namespace_id: 'gitlab', project_id: 'gitlabhq') + expect(get('/gitlab/gitlabhq/-/merge_requests/new/branch_from')).to route_to('projects/merge_requests/creations#branch_from', namespace_id: 'gitlab', project_id: 'gitlabhq') end it 'to #branch_to' do - expect(get('/gitlab/gitlabhq/merge_requests/new/branch_to')).to route_to('projects/merge_requests/creations#branch_to', namespace_id: 'gitlab', project_id: 'gitlabhq') + expect(get('/gitlab/gitlabhq/-/merge_requests/new/branch_to')).to route_to('projects/merge_requests/creations#branch_to', namespace_id: 'gitlab', project_id: 'gitlabhq') end it 'to #pipelines' do - expect(get('/gitlab/gitlabhq/merge_requests/new/pipelines.json')).to route_to('projects/merge_requests/creations#pipelines', namespace_id: 'gitlab', project_id: 'gitlabhq', format: 'json') + expect(get('/gitlab/gitlabhq/-/merge_requests/new/pipelines.json')).to route_to('projects/merge_requests/creations#pipelines', namespace_id: 'gitlab', project_id: 'gitlabhq', format: 'json') end it 'to #diffs' do - expect(get('/gitlab/gitlabhq/merge_requests/new/diffs.json')).to route_to('projects/merge_requests/creations#diffs', namespace_id: 'gitlab', project_id: 'gitlabhq', format: 'json') + expect(get('/gitlab/gitlabhq/-/merge_requests/new/diffs.json')).to route_to('projects/merge_requests/creations#diffs', namespace_id: 'gitlab', project_id: 'gitlabhq', format: 'json') end + + it_behaves_like 'redirecting a legacy project path', "/gitlab/gitlabhq/merge_requests/new", "/gitlab/gitlabhq/-/merge_requests/new" end describe Projects::MergeRequests::DiffsController, 'routing' do it 'to #show' do - expect(get('/gitlab/gitlabhq/merge_requests/1/diffs.json')).to route_to('projects/merge_requests/diffs#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'json') + expect(get('/gitlab/gitlabhq/-/merge_requests/1/diffs.json')).to route_to('projects/merge_requests/diffs#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1', format: 'json') end end describe Projects::MergeRequests::ConflictsController, 'routing' do it 'to #show' do - expect(get('/gitlab/gitlabhq/merge_requests/1/conflicts')).to route_to('projects/merge_requests/conflicts#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1') + expect(get('/gitlab/gitlabhq/-/merge_requests/1/conflicts')).to route_to('projects/merge_requests/conflicts#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: '1') end end # raw_project_snippet GET /:project_id/snippets/:id/raw(.:format) snippets#raw diff --git a/spec/serializers/merge_request_widget_entity_spec.rb b/spec/serializers/merge_request_widget_entity_spec.rb index 22232682be1..80f59ef90ca 100644 --- a/spec/serializers/merge_request_widget_entity_spec.rb +++ b/spec/serializers/merge_request_widget_entity_spec.rb @@ -45,12 +45,12 @@ describe MergeRequestWidgetEntity do it 'has email_patches_path' do expect(subject[:email_patches_path]) - .to eq("/#{resource.project.full_path}/merge_requests/#{resource.iid}.patch") + .to eq("/#{resource.project.full_path}/-/merge_requests/#{resource.iid}.patch") end it 'has plain_diff_path' do expect(subject[:plain_diff_path]) - .to eq("/#{resource.project.full_path}/merge_requests/#{resource.iid}.diff") + .to eq("/#{resource.project.full_path}/-/merge_requests/#{resource.iid}.diff") end describe 'when source project is deleted' do diff --git a/spec/serializers/paginated_diff_entity_spec.rb b/spec/serializers/paginated_diff_entity_spec.rb index 7432e072318..77569aaa4bc 100644 --- a/spec/serializers/paginated_diff_entity_spec.rb +++ b/spec/serializers/paginated_diff_entity_spec.rb @@ -26,7 +26,7 @@ describe PaginatedDiffEntity do expect(subject[:pagination]).to eq( current_page: 2, next_page: 3, - next_page_href: "/#{merge_request.project.full_path}/merge_requests/#{merge_request.iid}/diffs_batch.json?page=3", + next_page_href: "/#{merge_request.project.full_path}/-/merge_requests/#{merge_request.iid}/diffs_batch.json?page=3", total_pages: 7 ) end diff --git a/spec/services/ci/expire_pipeline_cache_service_spec.rb b/spec/services/ci/expire_pipeline_cache_service_spec.rb index c0226654fd9..7b9d6ed4f41 100644 --- a/spec/services/ci/expire_pipeline_cache_service_spec.rb +++ b/spec/services/ci/expire_pipeline_cache_service_spec.rb @@ -11,7 +11,7 @@ describe Ci::ExpirePipelineCacheService do describe '#execute' do it 'invalidates Etag caching for project pipelines path' do pipelines_path = "/#{project.full_path}/pipelines.json" - new_mr_pipelines_path = "/#{project.full_path}/merge_requests/new.json" + new_mr_pipelines_path = "/#{project.full_path}/-/merge_requests/new.json" pipeline_path = "/#{project.full_path}/pipelines/#{pipeline.id}.json" expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(pipelines_path) @@ -24,7 +24,7 @@ describe Ci::ExpirePipelineCacheService do it 'invalidates Etag caching for merge request pipelines if pipeline runs on any commit of that source branch' do pipeline = create(:ci_empty_pipeline, status: 'created', project: project, ref: 'master') merge_request = create(:merge_request, source_project: project, source_branch: pipeline.ref) - merge_request_pipelines_path = "/#{project.full_path}/merge_requests/#{merge_request.iid}/pipelines.json" + merge_request_pipelines_path = "/#{project.full_path}/-/merge_requests/#{merge_request.iid}/pipelines.json" allow_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch) expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(merge_request_pipelines_path) diff --git a/spec/services/merge_requests/get_urls_service_spec.rb b/spec/services/merge_requests/get_urls_service_spec.rb index bb8a1873dac..8cc627b64d9 100644 --- a/spec/services/merge_requests/get_urls_service_spec.rb +++ b/spec/services/merge_requests/get_urls_service_spec.rb @@ -8,8 +8,8 @@ describe MergeRequests::GetUrlsService do let(:project) { create(:project, :public, :repository) } let(:service) { described_class.new(project) } let(:source_branch) { "merge-test" } - let(:new_merge_request_url) { "http://#{Gitlab.config.gitlab.host}/#{project.full_path}/merge_requests/new?merge_request%5Bsource_branch%5D=#{source_branch}" } - let(:show_merge_request_url) { "http://#{Gitlab.config.gitlab.host}/#{project.full_path}/merge_requests/#{merge_request.iid}" } + let(:new_merge_request_url) { "http://#{Gitlab.config.gitlab.host}/#{project.full_path}/-/merge_requests/new?merge_request%5Bsource_branch%5D=#{source_branch}" } + let(:show_merge_request_url) { "http://#{Gitlab.config.gitlab.host}/#{project.full_path}/-/merge_requests/#{merge_request.iid}" } let(:new_branch_changes) { "#{Gitlab::Git::BLANK_SHA} 570e7b2abdd848b95f2f578043fc23bd6f6fd24d refs/heads/#{source_branch}" } let(:deleted_branch_changes) { "d14d6c0abdd253381df51a723d58691b2ee1ab08 #{Gitlab::Git::BLANK_SHA} refs/heads/#{source_branch}" } let(:existing_branch_changes) { "d14d6c0abdd253381df51a723d58691b2ee1ab08 570e7b2abdd848b95f2f578043fc23bd6f6fd24d refs/heads/#{source_branch}" } @@ -134,7 +134,7 @@ describe MergeRequests::GetUrlsService do let(:new_branch_changes) { "#{Gitlab::Git::BLANK_SHA} 570e7b2abdd848b95f2f578043fc23bd6f6fd24d refs/heads/new_branch" } let(:existing_branch_changes) { "d14d6c0abdd253381df51a723d58691b2ee1ab08 570e7b2abdd848b95f2f578043fc23bd6f6fd24d refs/heads/markdown" } let(:changes) { "#{new_branch_changes}\n#{existing_branch_changes}" } - let(:new_merge_request_url) { "http://#{Gitlab.config.gitlab.host}/#{project.full_path}/merge_requests/new?merge_request%5Bsource_branch%5D=new_branch" } + let(:new_merge_request_url) { "http://#{Gitlab.config.gitlab.host}/#{project.full_path}/-/merge_requests/new?merge_request%5Bsource_branch%5D=new_branch" } it 'returns 2 urls for both creating new and showing merge request' do result = service.execute(changes) diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb index 4ba22af85f0..40772297cce 100644 --- a/spec/services/system_note_service_spec.rb +++ b/spec/services/system_note_service_spec.rb @@ -314,7 +314,7 @@ describe SystemNoteService do url = if type == 'commit' "#{Settings.gitlab.base_url}/#{project.namespace.path}/#{project.path}/commit/#{commit.id}" else - "#{Settings.gitlab.base_url}/#{project.namespace.path}/#{project.path}/merge_requests/#{merge_request.iid}" + "#{Settings.gitlab.base_url}/#{project.namespace.path}/#{project.path}/-/merge_requests/#{merge_request.iid}" end link = double(object: { 'url' => url }) |