Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab/ci/cng/main.gitlab-ci.yml4
-rw-r--r--.gitlab/ci/release-environments/main.gitlab-ci.yml4
-rw-r--r--.gitlab/ci/review-apps/main.gitlab-ci.yml5
-rw-r--r--app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue3
-rw-r--r--app/assets/javascripts/packages_and_registries/container_registry/explorer/components/list_page/image_list_row.vue1
-rw-r--r--app/assets/javascripts/packages_and_registries/dependency_proxy/app.vue2
-rw-r--r--app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue2
-rw-r--r--app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue1
-rw-r--r--app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue5
-rw-r--r--app/helpers/commits_helper.rb10
-rw-r--r--app/views/projects/commits/_commits.html.haml2
-rw-r--r--config/feature_flags/development/advanced_search_decrease_indexing_timeout.yml2
-rw-r--r--doc/api/graphql/reference/index.md3
-rw-r--r--doc/development/feature_flags/index.md14
-rw-r--r--doc/update/index.md2
-rw-r--r--lib/gitlab/github_import.rb2
-rw-r--r--locale/gitlab.pot6
-rw-r--r--qa/qa/page/group/dependency_proxy.rb4
-rw-r--r--qa/qa/page/project/packages/index.rb12
-rw-r--r--qa/qa/page/project/packages/show.rb4
-rw-r--r--qa/qa/page/project/registry/show.rb20
-rw-r--r--spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js1
-rw-r--r--spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap2
-rw-r--r--spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/package_list_row_spec.js.snap1
-rw-r--r--spec/helpers/commits_helper_spec.rb42
-rw-r--r--spec/lib/gitlab/github_import_spec.rb2
-rw-r--r--spec/views/projects/commits/show.html.haml_spec.rb34
27 files changed, 143 insertions, 47 deletions
diff --git a/.gitlab/ci/cng/main.gitlab-ci.yml b/.gitlab/ci/cng/main.gitlab-ci.yml
index 325b06d59cd..bee502e3b0b 100644
--- a/.gitlab/ci/cng/main.gitlab-ci.yml
+++ b/.gitlab/ci/cng/main.gitlab-ci.yml
@@ -9,7 +9,7 @@ stages:
include:
- local: .gitlab/ci/global.gitlab-ci.yml
-review-build-cng-env:
+.review-build-cng-env:
image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-alpine3.16
stage: prepare
needs:
@@ -34,7 +34,7 @@ review-build-cng-env:
expire_in: 7 days
when: always
-review-build-cng:
+.review-build-cng:
stage: prepare
inherit:
variables: false
diff --git a/.gitlab/ci/release-environments/main.gitlab-ci.yml b/.gitlab/ci/release-environments/main.gitlab-ci.yml
index 7eb67509301..ff15673d48d 100644
--- a/.gitlab/ci/release-environments/main.gitlab-ci.yml
+++ b/.gitlab/ci/release-environments/main.gitlab-ci.yml
@@ -3,9 +3,13 @@ include:
- local: .gitlab/ci/cng/main.gitlab-ci.yml
review-build-cng-env:
+ extends:
+ - .review-build-cng-env
allow_failure: true
review-build-cng:
+ extends:
+ - .review-build-cng
needs: ["review-build-cng-env"]
variables:
IMAGE_TAG_EXT: "-${CI_COMMIT_SHORT_SHA}"
diff --git a/.gitlab/ci/review-apps/main.gitlab-ci.yml b/.gitlab/ci/review-apps/main.gitlab-ci.yml
index c5f56076ce7..9955c2cf27a 100644
--- a/.gitlab/ci/review-apps/main.gitlab-ci.yml
+++ b/.gitlab/ci/review-apps/main.gitlab-ci.yml
@@ -30,11 +30,14 @@ dont-interrupt-me:
review-build-cng-env:
extends:
+ - .review-build-cng-env
- .default-retry
- .review:rules:review-build-cng
review-build-cng:
- extends: .review:rules:review-build-cng
+ extends:
+ - .review-build-cng
+ - .review:rules:review-build-cng
needs: ["review-build-cng-env"]
.review-workflow-base:
diff --git a/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue b/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue
index a3f58cc3323..c8a4f32d5a7 100644
--- a/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue
+++ b/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue
@@ -81,7 +81,6 @@ export default {
extraAttrs: {
class: 'gl-text-red-500!',
'data-testid': 'single-delete-button',
- 'data-qa-selector': 'tag_delete_button',
},
action: () => {
this.$emit('delete');
@@ -143,7 +142,6 @@ export default {
<div
v-gl-tooltip="{ title: tag.name }"
data-testid="name"
- data-qa-selector="tag_name_content"
class="gl-text-overflow-ellipsis gl-overflow-hidden gl-white-space-nowrap"
:class="mobileClasses"
>
@@ -201,7 +199,6 @@ export default {
placement="right"
:class="{ 'gl-opacity-0 gl-pointer-events-none': disabled }"
data-testid="additional-actions"
- data-qa-selector="more_actions_menu"
:items="items"
/>
</template>
diff --git a/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/list_page/image_list_row.vue b/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/list_page/image_list_row.vue
index f6f816f435c..d7043626446 100644
--- a/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/list_page/image_list_row.vue
+++ b/app/assets/javascripts/packages_and_registries/container_registry/explorer/components/list_page/image_list_row.vue
@@ -133,7 +133,6 @@ export default {
ref="imageName"
class="gl-text-body gl-font-weight-bold"
data-testid="details-link"
- data-qa-selector="registry_image_content"
:to="{ name: 'details', params: { id } }"
>
{{ imageName }}
diff --git a/app/assets/javascripts/packages_and_registries/dependency_proxy/app.vue b/app/assets/javascripts/packages_and_registries/dependency_proxy/app.vue
index 87a2eb362d5..98cc92222b4 100644
--- a/app/assets/javascripts/packages_and_registries/dependency_proxy/app.vue
+++ b/app/assets/javascripts/packages_and_registries/dependency_proxy/app.vue
@@ -215,7 +215,7 @@ export default {
</template>
</gl-form-input-group>
<template #description>
- <span data-qa-selector="dependency_proxy_count" data-testid="proxy-count">
+ <span data-testid="proxy-count">
<gl-sprintf :message="$options.i18n.blobCountAndSize">
<template #count>{{ group.dependencyProxyBlobCount }}</template>
<template #size>{{ group.dependencyProxyTotalSize }}</template>
diff --git a/app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue b/app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue
index cc52235eaf3..c92208abfc3 100644
--- a/app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue
+++ b/app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue
@@ -84,7 +84,7 @@ export default {
<gl-link
:href="packageLink"
class="gl-text-body gl-min-w-0"
- data-qa-selector="package_link"
+ data-testid="details-link"
:disabled="disabledRow"
>
<gl-truncate :text="packageEntity.name" />
diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue
index c690e8fac43..bca43d0b20a 100644
--- a/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue
+++ b/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue
@@ -135,7 +135,6 @@ export default {
:class="errorPackageStyle"
class="gl-text-body gl-min-w-0"
data-testid="details-link"
- data-qa-selector="package_link"
:to="{ name: 'details', params: { id: packageId } }"
>
<gl-truncate :text="packageEntity.name" />
diff --git a/app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue b/app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue
index d96418571e1..d1982464eb9 100644
--- a/app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue
+++ b/app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue
@@ -221,7 +221,7 @@ export default {
attributes: {
variant: 'danger',
category: 'primary',
- 'data-qa-selector': 'delete_modal_button',
+ 'data-testid': 'delete-modal-button',
},
},
fileDeletePrimaryAction: {
@@ -254,7 +254,6 @@ export default {
v-gl-modal="'delete-modal'"
variant="danger"
category="primary"
- data-qa-selector="delete_button"
data-testid="delete-package"
>
{{ __('Delete') }}
@@ -264,7 +263,7 @@ export default {
<gl-tabs>
<gl-tab :title="__('Detail')">
- <div data-qa-selector="package_information_content">
+ <div data-testid="package-information-content">
<package-history :package-entity="packageEntity" :project-name="projectName" />
<installation-commands :package-entity="packageEntity" />
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb
index 78b722be7d7..42871dcc56f 100644
--- a/app/helpers/commits_helper.rb
+++ b/app/helpers/commits_helper.rb
@@ -143,6 +143,16 @@ module CommitsHelper
end
end
+ def local_committed_date(commit, user)
+ server_timezone = Time.zone
+ user_timezone = user.timezone if user
+ user_timezone = ActiveSupport::TimeZone.new(user_timezone) if user_timezone
+
+ timezone = user_timezone || server_timezone
+
+ commit.committed_date.in_time_zone(timezone).to_date
+ end
+
def cherry_pick_projects_data(project)
[project, project.forked_from_project].compact.map do |project|
{
diff --git a/app/views/projects/commits/_commits.html.haml b/app/views/projects/commits/_commits.html.haml
index a0f47f375f7..8df6bfdd697 100644
--- a/app/views/projects/commits/_commits.html.haml
+++ b/app/views/projects/commits/_commits.html.haml
@@ -7,7 +7,7 @@
- context_commits = @context_commits&.map { |commit| commit.present(current_user: current_user) }
- hidden = @hidden_commit_count
-- commits.chunk { |c| c.committed_date.in_time_zone.to_date }.each do |day, daily_commits|
+- commits.chunk { |commit| local_committed_date(commit, current_user) }.each do |day, daily_commits|
%li.js-commit-header.gl-py-2.gl-border-b{ data: { day: day } }
%span.day.font-weight-bold= l(day, format: '%b %d, %Y')
diff --git a/config/feature_flags/development/advanced_search_decrease_indexing_timeout.yml b/config/feature_flags/development/advanced_search_decrease_indexing_timeout.yml
index a1eb407ed32..bb6b4914b9e 100644
--- a/config/feature_flags/development/advanced_search_decrease_indexing_timeout.yml
+++ b/config/feature_flags/development/advanced_search_decrease_indexing_timeout.yml
@@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/391570
milestone: '15.9'
type: development
group: group::global search
-default_enabled: false
+default_enabled: true
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index 7e0a50a01ae..c7966e3b138 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -24149,7 +24149,8 @@ Represents a vulnerability.
| <a id="vulnerabilitydismissedby"></a>`dismissedBy` | [`UserCore`](#usercore) | User that dismissed the vulnerability. |
| <a id="vulnerabilityexternalissuelinks"></a>`externalIssueLinks` | [`VulnerabilityExternalIssueLinkConnection!`](#vulnerabilityexternalissuelinkconnection) | List of external issue links related to the vulnerability. (see [Connections](#connections)) |
| <a id="vulnerabilityfalsepositive"></a>`falsePositive` | [`Boolean`](#boolean) | Indicates whether the vulnerability is a false positive. |
-| <a id="vulnerabilityhassolutions"></a>`hasSolutions` | [`Boolean`](#boolean) | Indicates whether there is a solution available for this vulnerability. |
+| <a id="vulnerabilityhasremediations"></a>`hasRemediations` | [`Boolean`](#boolean) | Indicates whether there is a remediation available for this vulnerability. |
+| <a id="vulnerabilityhassolutions"></a>`hasSolutions` **{warning-solid}** | [`Boolean`](#boolean) | **Deprecated** in 16.3. Use `hasRemediations`. |
| <a id="vulnerabilityid"></a>`id` | [`ID!`](#id) | GraphQL ID of the vulnerability. |
| <a id="vulnerabilityidentifiers"></a>`identifiers` | [`[VulnerabilityIdentifier!]!`](#vulnerabilityidentifier) | Identifiers of the vulnerability. |
| <a id="vulnerabilitylinks"></a>`links` | [`[VulnerabilityLink!]!`](#vulnerabilitylink) | List of links associated with the vulnerability. |
diff --git a/doc/development/feature_flags/index.md b/doc/development/feature_flags/index.md
index d9eb29a7b7f..7c3b6ff439f 100644
--- a/doc/development/feature_flags/index.md
+++ b/doc/development/feature_flags/index.md
@@ -231,6 +231,20 @@ the feature flag is set to enabled. If the feature contains any database migrati
NOTE:
To create a feature flag that is only used in EE, add the `--ee` flag: `bin/feature-flag --ee`
+### Naming new flags
+
+When choosing a name for a new feature flag, consider the following guidelines:
+
+- A long, descriptive name is better than a short but confusing one.
+- Write the name in snake case (`my_cool_feature_flag`).
+- Avoid using `disable` in the name to avoid having to think (or [document](../documentation/feature_flags.md))
+ with double negatives. Consider starting the name with `hide_`, `remove_`, or `disallow_`.
+
+ In software engineering this problem is known as
+ ["negative names for boolean variables"](https://www.serendipidata.com/posts/naming-guidelines-for-boolean-variables).
+ But we can't forbid negative words altogether, to be able to introduce flags as
+ [disabled by default](#feature-flags-in-gitlab-development), use them to remove a feature by moving it behind a flag, or to [selectively disable a flag by actor](controls.md#selectively-disable-by-actor).
+
### Risk of a broken master (main) branch
WARNING:
diff --git a/doc/update/index.md b/doc/update/index.md
index d49333b1567..8760dbbd406 100644
--- a/doc/update/index.md
+++ b/doc/update/index.md
@@ -16,7 +16,7 @@ The [maintenance policy documentation](../policy/maintenance.md)
has additional information about upgrading, including:
- How to interpret GitLab product versioning.
-- Recommendations on the what release to run.
+- Recommendations on what release to run.
- How we use patch and security patch releases.
- When we backport code changes.
diff --git a/lib/gitlab/github_import.rb b/lib/gitlab/github_import.rb
index 24e77363e1b..3b19b9d16d2 100644
--- a/lib/gitlab/github_import.rb
+++ b/lib/gitlab/github_import.rb
@@ -16,7 +16,7 @@ module Gitlab
}
if token_pool
- ClientPool.new(token_pool: token_pool, **options)
+ ClientPool.new(token_pool: token_pool.append(token_to_use), **options)
else
Client.new(token_to_use, **options)
end
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 3bfce5e0273..14c88b24cfb 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -19771,6 +19771,9 @@ msgstr ""
msgid "For more information, see the File Hooks documentation."
msgstr ""
+msgid "For the GitLab Team to keep your subscription data up to date, this is a reminder to report your license usage on a monthly basis, or at the cadence set in your agreement with GitLab. This allows us to simplify the billing process for overages and renewals. To report your usage data, export your license usage file and email it to %{renewal_service_email}. If you need an updated license, GitLab will send the license to the email address registered in the %{customers_dot}, and you can upload this license to your instance."
+msgstr ""
+
msgid "For the next few releases, you can go to your avatar at any time to turn the new navigation on and off."
msgstr ""
@@ -33270,9 +33273,6 @@ msgstr ""
msgid "People without permission will never get a notification."
msgstr ""
-msgid "Per your subscription agreement with GitLab, you must report your license usage data on a monthly basis. GitLab uses this data to keep your subscription up to date. To report your license usage data, export your license usage file and email it to %{renewal_service_email}. If you need an updated license, GitLab will send the license to the email address registered in the %{customers_dot}, and you can upload this license to your instance."
-msgstr ""
-
msgid "Percent rollout must be an integer number between 0 and 100"
msgstr ""
diff --git a/qa/qa/page/group/dependency_proxy.rb b/qa/qa/page/group/dependency_proxy.rb
index fa37e8eac83..1c06ea061e0 100644
--- a/qa/qa/page/group/dependency_proxy.rb
+++ b/qa/qa/page/group/dependency_proxy.rb
@@ -5,11 +5,11 @@ module QA
module Group
class DependencyProxy < QA::Page::Base
view 'app/assets/javascripts/packages_and_registries/dependency_proxy/app.vue' do
- element :dependency_proxy_count
+ element :proxy_count
end
def has_blob_count?(blob_text)
- has_element?(:dependency_proxy_count, text: blob_text)
+ has_element?(:proxy_count, text: blob_text)
end
end
end
diff --git a/qa/qa/page/project/packages/index.rb b/qa/qa/page/project/packages/index.rb
index e58ffba3cd5..eaa708373bb 100644
--- a/qa/qa/page/project/packages/index.rb
+++ b/qa/qa/page/project/packages/index.rb
@@ -6,27 +6,27 @@ module QA
module Packages
class Index < QA::Page::Base
view 'app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue' do
- element :package_link
+ element :details_link
end
view 'app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue' do
- element :package_link
+ element :details_link
end
def click_package(name)
- click_element(:package_link, text: name)
+ click_element(:details_link, text: name)
end
def has_package?(name)
- has_element?(:package_link, text: name, wait: 20)
+ has_element?(:details_link, text: name, wait: 20)
end
def has_module?(name)
- has_element?(:package_link, text: name, wait: 20)
+ has_element?(:details_link, text: name, wait: 20)
end
def has_no_package?(name)
- has_no_element?(:package_link, text: name)
+ has_no_element?(:details_link, text: name)
end
end
end
diff --git a/qa/qa/page/project/packages/show.rb b/qa/qa/page/project/packages/show.rb
index 5ba9ad7df40..b1a98aa7c43 100644
--- a/qa/qa/page/project/packages/show.rb
+++ b/qa/qa/page/project/packages/show.rb
@@ -6,7 +6,7 @@ module QA
module Packages
class Show < QA::Page::Base
view 'app/assets/javascripts/packages_and_registries/package_registry/pages/details.vue' do
- element :delete_button
+ element :delete_package
element :delete_modal_button
element :package_information_content
end
@@ -16,7 +16,7 @@ module QA
end
def click_delete
- click_element(:delete_button)
+ click_element(:delete_package)
wait_for_animated_element(:delete_modal_button)
click_element(:delete_modal_button)
end
diff --git a/qa/qa/page/project/registry/show.rb b/qa/qa/page/project/registry/show.rb
index 95850f34962..3fca3764a0e 100644
--- a/qa/qa/page/project/registry/show.rb
+++ b/qa/qa/page/project/registry/show.rb
@@ -6,34 +6,34 @@ module QA
module Registry
class Show < QA::Page::Base
view 'app/assets/javascripts/packages_and_registries/container_registry/explorer/components/list_page/image_list_row.vue' do
- element :registry_image_content
+ element :details_link
end
view 'app/assets/javascripts/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row.vue' do
- element :more_actions_menu
- element :tag_delete_button
- element :tag_name_content
+ element :additional_actions
+ element :single_delete_button
+ element :name
end
def has_registry_repository?(name)
- find_element(:registry_image_content, text: name)
+ find_element(:details_link, text: name)
end
def click_on_image(name)
- click_element(:registry_image_content, text: name)
+ click_element(:details_link, text: name)
end
def has_tag?(tag_name)
- has_element?(:tag_name_content, text: tag_name)
+ has_element?(:name, text: tag_name)
end
def has_no_tag?(tag_name)
- has_no_element?(:tag_name_content, text: tag_name)
+ has_no_element?(:name, text: tag_name)
end
def click_delete
- click_element(:more_actions_menu)
- click_element(:tag_delete_button)
+ click_element(:additional_actions)
+ click_element(:single_delete_button)
find_button('Delete').click
end
end
diff --git a/spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js b/spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js
index d4b69d3e8e8..09e2c35d449 100644
--- a/spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js
+++ b/spec/frontend/packages_and_registries/container_registry/explorer/components/details_page/tags_list_row_spec.js
@@ -318,7 +318,6 @@ describe('tags list row', () => {
expect(findDeleteButton().props('item').extraAttrs).toMatchObject({
class: 'gl-text-red-500!',
'data-testid': 'single-delete-button',
- 'data-qa-selector': 'tag_delete_button',
});
expect(findDeleteButton().text()).toBe(REMOVE_TAG_BUTTON_TITLE);
diff --git a/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap b/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap
index 08e2de6c18f..250b33cbb14 100644
--- a/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap
+++ b/spec/frontend/packages_and_registries/infrastructure_registry/components/shared/__snapshots__/package_list_row_spec.js.snap
@@ -24,7 +24,7 @@ exports[`packages_list_row renders 1`] = `
>
<gl-link-stub
class="gl-text-body gl-min-w-0"
- data-qa-selector="package_link"
+ data-testid="details-link"
href="foo"
>
<gl-truncate-stub
diff --git a/spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/package_list_row_spec.js.snap b/spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/package_list_row_spec.js.snap
index 0443fb85dc9..7a488a74dcb 100644
--- a/spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/package_list_row_spec.js.snap
+++ b/spec/frontend/packages_and_registries/package_registry/components/list/__snapshots__/package_list_row_spec.js.snap
@@ -32,7 +32,6 @@ exports[`packages_list_row renders 1`] = `
<router-link-stub
ariacurrentvalue="page"
class="gl-text-body gl-min-w-0"
- data-qa-selector="package_link"
data-testid="details-link"
event="click"
tag="a"
diff --git a/spec/helpers/commits_helper_spec.rb b/spec/helpers/commits_helper_spec.rb
index ff4a312f1b5..49adba22ebe 100644
--- a/spec/helpers/commits_helper_spec.rb
+++ b/spec/helpers/commits_helper_spec.rb
@@ -357,4 +357,46 @@ RSpec.describe CommitsHelper do
it { is_expected.to eq(expected_path) }
end
+
+ describe '#local_committed_date' do
+ let(:commit) { build(:commit, committed_date: time) }
+ let(:user) { build(:user) }
+ let(:time) { Time.find_zone('UTC').parse('2023-01-01') }
+
+ subject { helper.local_committed_date(commit, user).to_s }
+
+ it { is_expected.to eq('2023-01-01') }
+
+ context 'when user has a custom timezone' do
+ let(:user) { build(:user, timezone: 'America/Mexico_City') }
+
+ it 'selects timezone of the user' do
+ is_expected.to eq('2022-12-31')
+ end
+ end
+
+ context "when user doesn't have a preferred timezone" do
+ let(:user) { build(:user, timezone: nil) }
+
+ it 'uses system timezone' do
+ is_expected.to eq('2023-01-01')
+ end
+ end
+
+ context 'when user timezone is not supported' do
+ let(:user) { build(:user, timezone: 'unknown') }
+
+ it 'uses system timezone' do
+ is_expected.to eq('2023-01-01')
+ end
+ end
+
+ context 'when user is missing' do
+ let(:user) { nil }
+
+ it 'uses system timezone' do
+ is_expected.to eq('2023-01-01')
+ end
+ end
+ end
end
diff --git a/spec/lib/gitlab/github_import_spec.rb b/spec/lib/gitlab/github_import_spec.rb
index c4ed4b09f04..898bc40ec1f 100644
--- a/spec/lib/gitlab/github_import_spec.rb
+++ b/spec/lib/gitlab/github_import_spec.rb
@@ -61,7 +61,7 @@ RSpec.describe Gitlab::GithubImport, feature_category: :importers do
expect(described_class::ClientPool)
.to receive(:new)
- .with(token_pool: %w[foo bar], host: nil, parallel: true, per_page: 100)
+ .with(token_pool: %w[foo bar 123], host: nil, parallel: true, per_page: 100)
described_class.new_client_for(project)
end
diff --git a/spec/views/projects/commits/show.html.haml_spec.rb b/spec/views/projects/commits/show.html.haml_spec.rb
index e5e9906a798..9393ba046dc 100644
--- a/spec/views/projects/commits/show.html.haml_spec.rb
+++ b/spec/views/projects/commits/show.html.haml_spec.rb
@@ -3,8 +3,10 @@
require 'spec_helper'
RSpec.describe 'projects/commits/show.html.haml' do
- let(:project) { create(:project, :repository) }
- let(:commits) { [project.commit] }
+ let_it_be(:project) { create(:project, :repository) }
+
+ let(:commits) { [commit] }
+ let(:commit) { project.commit }
let(:path) { 'path/to/doc.md' }
before do
@@ -32,4 +34,32 @@ RSpec.describe 'projects/commits/show.html.haml' do
expect(rendered).to have_link(href: "#{project_commits_path(project, path)}?format=atom")
end
end
+
+ context 'commits date headers' do
+ let(:user) { build(:user, timezone: timezone) }
+ let(:committed_date) { Time.find_zone('UTC').parse('2023-01-01') }
+
+ before do
+ allow(view).to receive(:current_user).and_return(user)
+ allow(commit).to receive(:committed_date).and_return(committed_date)
+
+ render
+ end
+
+ context 'when timezone is UTC' do
+ let(:timezone) { 'UTC' }
+
+ it "renders commit date header in user's timezone" do
+ expect(rendered).to include('data-day="2023-01-01"')
+ end
+ end
+
+ context 'when timezone is UTC-6' do
+ let(:timezone) { 'America/Mexico_City' }
+
+ it "renders commit date header in user's timezone" do
+ expect(rendered).to include('data-day="2022-12-31"')
+ end
+ end
+ end
end