diff options
-rw-r--r-- | PROCESS.md | 2 | ||||
-rw-r--r-- | app/views/projects/merge_requests/widget/_show.html.haml | 4 | ||||
-rw-r--r-- | changelogs/unreleased/27955-mr-notification-use-pipeline-language.yml | 4 | ||||
-rw-r--r-- | doc/api/merge_requests.md | 9 | ||||
-rw-r--r-- | lib/api/merge_requests.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/chat_commands/presenters/issue_base.rb (renamed from lib/gitlab/chat_commands/presenters/issuable.rb) | 2 | ||||
-rw-r--r-- | lib/gitlab/chat_commands/presenters/issue_new.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/chat_commands/presenters/issue_search.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/chat_commands/presenters/issue_show.rb | 2 | ||||
-rw-r--r-- | spec/features/admin/admin_labels_spec.rb | 11 | ||||
-rw-r--r-- | spec/lib/ci/gitlab_ci_yaml_processor_spec.rb | 10 | ||||
-rw-r--r-- | spec/requests/api/groups_spec.rb | 8 | ||||
-rw-r--r-- | spec/support/matchers/satisfy_matchers.rb | 19 |
13 files changed, 57 insertions, 20 deletions
diff --git a/PROCESS.md b/PROCESS.md index f257c1d5358..fead93bd4cf 100644 --- a/PROCESS.md +++ b/PROCESS.md @@ -59,7 +59,7 @@ star, smile, etc.). Some good tips about code reviews can be found in our ## Feature Freeze -On the 7th of each month, RC1 of the upcoming release is created and deployed to GitLab.com and the stable branch for this release is frozen, which means master is no longer merged into it. +After the 7th (Pacific Standard Time Zone) of each month, RC1 of the upcoming release is created and deployed to GitLab.com and the stable branch for this release is frozen, which means master is no longer merged into it. Merge requests may still be merged into master during this period, but they will go into the _next_ release, unless they are manually cherry-picked into the stable branch. By freezing the stable branches 2 weeks prior to a release, we reduce the risk of a last minute merge request potentially breaking things. diff --git a/app/views/projects/merge_requests/widget/_show.html.haml b/app/views/projects/merge_requests/widget/_show.html.haml index 5de59473840..4c063747857 100644 --- a/app/views/projects/merge_requests/widget/_show.html.haml +++ b/app/views/projects/merge_requests/widget/_show.html.haml @@ -16,13 +16,13 @@ gitlab_icon: "#{asset_path 'gitlab_logo.png'}", ci_status: "#{@merge_request.head_pipeline ? @merge_request.head_pipeline.status : ''}", ci_message: { - normal: "Job {{status}} for \"{{title}}\"", + normal: "Pipeline {{status}} for \"{{title}}\"", preparing: "{{status}} job for \"{{title}}\"" }, ci_enable: #{@project.ci_service ? "true" : "false"}, ci_title: { preparing: "{{status}} job", - normal: "Job {{status}}" + normal: "Pipeline {{status}}" }, ci_sha: "#{@merge_request.head_pipeline ? @merge_request.head_pipeline.short_sha : ''}", ci_pipeline: #{@merge_request.head_pipeline.try(:id).to_json}, diff --git a/changelogs/unreleased/27955-mr-notification-use-pipeline-language.yml b/changelogs/unreleased/27955-mr-notification-use-pipeline-language.yml new file mode 100644 index 00000000000..d9f78db4bec --- /dev/null +++ b/changelogs/unreleased/27955-mr-notification-use-pipeline-language.yml @@ -0,0 +1,4 @@ +--- +title: Show Pipeline(not Job) in MR desktop notification +merge_request: +author: diff --git a/doc/api/merge_requests.md b/doc/api/merge_requests.md index 1cf7632d60c..6ee377125d6 100644 --- a/doc/api/merge_requests.md +++ b/doc/api/merge_requests.md @@ -350,16 +350,17 @@ PUT /projects/:id/merge_requests/:merge_request_id | --------- | ---- | -------- | ----------- | | `id` | string | yes | The ID of a project | | `merge_request_id` | integer | yes | The ID of a merge request | -| `source_branch` | string | yes | The source branch | -| `target_branch` | string | yes | The target branch | -| `title` | string | yes | Title of MR | +| `target_branch` | string | no | The target branch | +| `title` | string | no | Title of MR | | `assignee_id` | integer | no | Assignee user ID | | `description` | string | no | Description of MR | -| `target_project_id` | integer | no | The target project (numeric id) | +| `state_event` | string | no | New state (close/reopen) | | `labels` | string | no | Labels for MR as a comma-separated list | | `milestone_id` | integer | no | The ID of a milestone | | `remove_source_branch` | boolean | no | Flag indicating if a merge request should remove the source branch when merging | +Must include at least one non-required attribute from above. + ```json { "id": 1, diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 782147883c8..8e09a6f7354 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -138,7 +138,7 @@ module API params do optional :title, type: String, allow_blank: false, desc: 'The title of the merge request' optional :target_branch, type: String, allow_blank: false, desc: 'The target branch' - optional :state_event, type: String, values: %w[close reopen merge], + optional :state_event, type: String, values: %w[close reopen], desc: 'Status of the merge request' use :optional_params at_least_one_of :title, :target_branch, :description, :assignee_id, diff --git a/lib/gitlab/chat_commands/presenters/issuable.rb b/lib/gitlab/chat_commands/presenters/issue_base.rb index dfb1c8f6616..a0058407fb2 100644 --- a/lib/gitlab/chat_commands/presenters/issuable.rb +++ b/lib/gitlab/chat_commands/presenters/issue_base.rb @@ -1,7 +1,7 @@ module Gitlab module ChatCommands module Presenters - module Issuable + module IssueBase def color(issuable) issuable.open? ? '#38ae67' : '#d22852' end diff --git a/lib/gitlab/chat_commands/presenters/issue_new.rb b/lib/gitlab/chat_commands/presenters/issue_new.rb index a1a3add56c9..0d31660039a 100644 --- a/lib/gitlab/chat_commands/presenters/issue_new.rb +++ b/lib/gitlab/chat_commands/presenters/issue_new.rb @@ -2,7 +2,7 @@ module Gitlab module ChatCommands module Presenters class IssueNew < Presenters::Base - include Presenters::Issuable + include Presenters::IssueBase def present in_channel_response(new_issue) diff --git a/lib/gitlab/chat_commands/presenters/issue_search.rb b/lib/gitlab/chat_commands/presenters/issue_search.rb index 3478359b91d..73788cf9662 100644 --- a/lib/gitlab/chat_commands/presenters/issue_search.rb +++ b/lib/gitlab/chat_commands/presenters/issue_search.rb @@ -2,7 +2,7 @@ module Gitlab module ChatCommands module Presenters class IssueSearch < Presenters::Base - include Presenters::Issuable + include Presenters::IssueBase def present text = if @resource.count >= 5 diff --git a/lib/gitlab/chat_commands/presenters/issue_show.rb b/lib/gitlab/chat_commands/presenters/issue_show.rb index fe5847ccd15..bd784ad241e 100644 --- a/lib/gitlab/chat_commands/presenters/issue_show.rb +++ b/lib/gitlab/chat_commands/presenters/issue_show.rb @@ -2,7 +2,7 @@ module Gitlab module ChatCommands module Presenters class IssueShow < Presenters::Base - include Presenters::Issuable + include Presenters::IssueBase def present if @resource.confidential? diff --git a/spec/features/admin/admin_labels_spec.rb b/spec/features/admin/admin_labels_spec.rb index eaa42aad0a7..6d6c9165c83 100644 --- a/spec/features/admin/admin_labels_spec.rb +++ b/spec/features/admin/admin_labels_spec.rb @@ -35,15 +35,16 @@ RSpec.describe 'admin issues labels' do it 'deletes all labels', js: true do page.within '.labels' do page.all('.btn-remove').each do |remove| - wait_for_ajax remove.click + wait_for_ajax end end - page.within '.manage-labels-list' do - expect(page).not_to have_content('bug') - expect(page).not_to have_content('feature_label') - end + wait_for_ajax + + expect(page).to have_content("There are no labels yet") + expect(page).not_to have_content('bug') + expect(page).not_to have_content('feature_label') end end diff --git a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb index 008c15c4de3..68ad429608d 100644 --- a/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb +++ b/spec/lib/ci/gitlab_ci_yaml_processor_spec.rb @@ -4,6 +4,16 @@ module Ci describe GitlabCiYamlProcessor, lib: true do let(:path) { 'path' } + describe 'our current .gitlab-ci.yml' do + let(:config) { File.read("#{Rails.root}/.gitlab-ci.yml") } + + it 'is valid' do + error_message = described_class.validation_message(config) + + expect(error_message).to be_nil + end + end + describe '#build_attributes' do describe 'coverage entry' do subject { described_class.new(config, path).build_attributes(:rspec) } diff --git a/spec/requests/api/groups_spec.rb b/spec/requests/api/groups_spec.rb index 15592f1f702..f78bde6f53a 100644 --- a/spec/requests/api/groups_spec.rb +++ b/spec/requests/api/groups_spec.rb @@ -35,7 +35,8 @@ describe API::Groups, api: true do expect(response).to have_http_status(200) expect(json_response).to be_an Array expect(json_response.length).to eq(1) - expect(json_response.first['name']).to eq(group1.name) + expect(json_response) + .to satisfy_one { |group| group['name'] == group1.name } end it "does not include statistics" do @@ -70,7 +71,7 @@ describe API::Groups, api: true do repository_size: 123, lfs_objects_size: 234, build_artifacts_size: 345, - } + }.stringify_keys project1.statistics.update!(attributes) @@ -78,7 +79,8 @@ describe API::Groups, api: true do expect(response).to have_http_status(200) expect(json_response).to be_an Array - expect(json_response.first['statistics']).to eq attributes.stringify_keys + expect(json_response) + .to satisfy_one { |group| group['statistics'] == attributes } end end diff --git a/spec/support/matchers/satisfy_matchers.rb b/spec/support/matchers/satisfy_matchers.rb new file mode 100644 index 00000000000..585915bac93 --- /dev/null +++ b/spec/support/matchers/satisfy_matchers.rb @@ -0,0 +1,19 @@ +# These matchers are a syntactic hack to provide more readable expectations for +# an Enumerable object. +# +# They take advantage of the `all?`, `none?`, and `one?` methods, and the fact +# that RSpec provides a `be_something` matcher for all predicates. +# +# Example: +# +# # Ensure exactly one object in an Array satisfies a condition +# expect(users.one? { |u| u.admin? }).to eq true +# +# # The same thing, but using the `be_one` matcher +# expect(users).to be_one { |u| u.admin? } +# +# # The same thing again, but using `satisfy_one` for improved readability +# expect(users).to satisfy_one { |u| u.admin? } +RSpec::Matchers.alias_matcher :satisfy_all, :be_all +RSpec::Matchers.alias_matcher :satisfy_none, :be_none +RSpec::Matchers.alias_matcher :satisfy_one, :be_one |