1.19.1
1.20.0
......@@ -78,7 +78,6 @@ function deferredInitialisation() {
initUserPopovers();
if (document.querySelector('.search')) initSearchAutocomplete();
if (document.querySelector('#js-peek')) initPerformanceBar({ container: '#js-peek' });
addSelectOnFocusBehaviour('.js-select-on-focus');
......@@ -145,6 +144,8 @@ document.addEventListener('DOMContentLoaded', () => {
const $sidebarGutterToggle = $('.js-sidebar-toggle');
let bootstrapBreakpoint = bp.getBreakpointSize();
if (document.querySelector('#js-peek')) initPerformanceBar({ container: '#js-peek' });
initLayoutNav();
// Set the default path for all cookies to GitLab's root directory
......
......
......@@ -50,7 +50,7 @@ module Clusters
validates :name, cluster_name: true
validates :cluster_type, presence: true
validates :domain, allow_blank: true, hostname: { allow_numeric_hostname: true, require_valid_tld: true }
validates :domain, allow_blank: true, hostname: { allow_numeric_hostname: true }
validate :restrict_modification, on: :update
validate :no_groups, unless: :group_type?
......
......
......@@ -20,8 +20,8 @@ class CommitCollection
commits.each(&block)
end
def committers
emails = without_merge_commits.map(&:committer_email).uniq
def authors
emails = without_merge_commits.map(&:author_email).uniq
User.by_any_email(emails)
end
......
......
......@@ -286,12 +286,12 @@ class MergeRequest < ActiveRecord::Base
work_in_progress?(title) ? title : "WIP: #{title}"
end
def committers
@committers ||= commits.committers
def commit_authors
@commit_authors ||= commits.authors
end
def authors
User.from_union([committers, User.where(id: self.author_id)])
User.from_union([commit_authors, User.where(id: self.author_id)])
end
# Verifies if title has changed not taking into account WIP prefix
......
......
.text-center
.svg-content
.svg-content.qa-label-svg
= image_tag 'illustrations/priority_labels.svg'
%p Star labels to start sorting by priority
---
title: Fixes incorrect TLD validation errors for Kubernetes cluster domain
merge_request: 25262
author:
type: fixed
......@@ -14,6 +14,10 @@ include:
- [Usage statistics](usage_statistics.md)
- [Visibility and access controls](visibility_and_access_controls.md)
NOTE: **Note:**
You can change the [first day of the week](../../profile/preferences.md) for the entire GitLab instance
in the **Localization** section of **Admin area > Settings > Preferences**.
## GitLab.com admin area settings
Most of the settings under the admin area change the behavior of the whole
......
......
......@@ -14,6 +14,10 @@ module QA
element :label_svg
end
view 'app/views/shared/empty_states/_priority_labels.html.haml' do
element :label_svg
end
def go_to_new_label
# The 'labels.svg' takes a fraction of a second to load after which the "New label" button shifts up a bit
# This can cause webdriver to miss the hit so we wait for the svg to load (implicitly with has_element?)
......
......
......@@ -453,7 +453,7 @@ describe Groups::ClustersController do
end
context 'when domain is invalid' do
let(:domain) { 'not-a-valid-domain' }
let(:domain) { 'http://not-a-valid-domain' }
it 'should not update cluster attributes' do
go
......
......
......@@ -265,12 +265,12 @@ describe Clusters::Cluster do
it { is_expected.to be_valid }
end
context 'when cluster has an invalid domain' do
let(:cluster) { build(:cluster, domain: 'not-valid-domain') }
context 'when cluster is not a valid hostname' do
let(:cluster) { build(:cluster, domain: 'http://not.a.valid.hostname') }
it 'should add an error on domain' do
expect(subject).not_to be_valid
expect(subject.errors[:domain].first).to eq('is not a fully qualified domain name')
expect(subject.errors[:domain].first).to eq('contains invalid characters (valid characters: [a-z0-9\\-])')
end
end
......
......
......@@ -12,26 +12,26 @@ describe CommitCollection do
end
end
describe '.committers' do
describe '.authors' do
it 'returns a relation of users when users are found' do
user = create(:user, email: commit.committer_email.upcase)
user = create(:user, email: commit.author_email.upcase)
collection = described_class.new(project, [commit])
expect(collection.committers).to contain_exactly(user)
expect(collection.authors).to contain_exactly(user)
end
it 'returns empty array when committers cannot be found' do
it 'returns empty array when authors cannot be found' do
collection = described_class.new(project, [commit])
expect(collection.committers).to be_empty
expect(collection.authors).to be_empty
end
it 'excludes authors of merge commits' do
commit = project.commit("60ecb67744cb56576c30214ff52294f8ce2def98")
create(:user, email: commit.committer_email.upcase)
create(:user, email: commit.author_email.upcase)
collection = described_class.new(project, [commit])
expect(collection.committers).to be_empty
expect(collection.authors).to be_empty
end
end
......
......
......@@ -435,6 +435,7 @@ describe MergeRequest do
it 'does not cache issues from external trackers' do
issue = ExternalIssue.new('JIRA-123', subject.project)
commit = double('commit1', safe_message: "Fixes #{issue.to_reference}")
allow(subject).to receive(:commits).and_return([commit])
expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to raise_error
......@@ -1023,23 +1024,23 @@ describe MergeRequest do
end
end
describe '#committers' do
it 'returns all the committers of every commit in the merge request' do
users = subject.commits.map(&:committer_email).uniq.map do |email|
describe '#commit_authors' do
it 'returns all the authors of every commit in the merge request' do
users = subject.commits.map(&:author_email).uniq.map do |email|
create(:user, email: email)
end
expect(subject.committers).to match_array(users)
expect(subject.commit_authors).to match_array(users)
end
it 'returns an empty array if no committer is associated with a user' do
expect(subject.committers).to be_empty
it 'returns an empty array if no author is associated with a user' do
expect(subject.commit_authors).to be_empty
end
end
describe '#authors' do
it 'returns a list with all the committers in the merge request and author' do
users = subject.commits.map(&:committer_email).uniq.map do |email|
it 'returns a list with all the commit authors in the merge request and author' do
users = subject.commits.map(&:author_email).uniq.map do |email|
create(:user, email: email)
end
......
......