summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.rubocop_todo/layout/space_inside_block_braces.yml200
-rw-r--r--app/services/packages/debian/extract_metadata_service.rb8
-rw-r--r--app/services/projects/create_service.rb28
-rw-r--r--app/uploaders/object_storage.rb10
-rw-r--r--app/views/admin/hooks/edit.html.haml4
-rw-r--r--app/views/projects/hook_logs/_index.html.haml11
-rw-r--r--app/views/projects/hooks/edit.html.haml2
-rw-r--r--app/views/projects/settings/integrations/edit.html.haml3
-rw-r--r--app/views/shared/hook_logs/_index.html.haml (renamed from app/views/admin/hook_logs/_index.html.haml)0
-rw-r--r--doc/administration/raketasks/project_import_export.md41
-rw-r--r--doc/development/documentation/structure.md58
-rw-r--r--doc/development/migration_style_guide.md2
-rw-r--r--doc/security/two_factor_authentication.md7
-rw-r--r--qa/qa/service/praefect_manager.rb2
-rw-r--r--qa/qa/specs/features/api/3_create/gitaly/distributed_reads_spec.rb9
-rw-r--r--qa/qa/specs/features/api/3_create/gitaly/praefect_repo_sync_spec.rb1
-rw-r--r--spec/controllers/projects/hooks_controller_spec.rb2
-rw-r--r--spec/services/auto_merge/base_service_spec.rb2
-rw-r--r--spec/services/auto_merge_service_spec.rb4
-rw-r--r--spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb2
-rw-r--r--spec/services/ci/create_pipeline_service/rules_spec.rb4
-rw-r--r--spec/services/ci/deployments/destroy_service_spec.rb2
-rw-r--r--spec/services/ci/parse_dotenv_artifact_service_spec.rb2
-rw-r--r--spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb2
-rw-r--r--spec/services/ci/process_build_service_spec.rb2
-rw-r--r--spec/services/ci/runners/register_runner_service_spec.rb2
-rw-r--r--spec/services/ci/runners/update_runner_service_spec.rb2
-rw-r--r--spec/services/ci/stuck_builds/drop_pending_service_spec.rb4
-rw-r--r--spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb2
-rw-r--r--spec/services/clusters/integrations/create_service_spec.rb2
-rw-r--r--spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb2
-rw-r--r--spec/services/deployments/create_for_build_service_spec.rb2
-rw-r--r--spec/services/git/branch_push_service_spec.rb2
-rw-r--r--spec/services/groups/destroy_service_spec.rb4
-rw-r--r--spec/services/groups/merge_requests_count_service_spec.rb2
-rw-r--r--spec/services/groups/open_issues_count_service_spec.rb2
-rw-r--r--spec/services/groups/update_service_spec.rb2
-rw-r--r--spec/services/groups/update_statistics_service_spec.rb2
-rw-r--r--spec/services/import/fogbugz_service_spec.rb2
-rw-r--r--spec/services/import/validate_remote_git_endpoint_service_spec.rb2
-rw-r--r--spec/services/issues/referenced_merge_requests_service_spec.rb2
-rw-r--r--spec/services/jira_import/start_import_service_spec.rb2
-rw-r--r--spec/services/lfs/push_service_spec.rb2
-rw-r--r--spec/services/markdown_content_rewriter_service_spec.rb2
-rw-r--r--spec/services/members/invite_service_spec.rb6
-rw-r--r--spec/services/merge_requests/push_options_handler_service_spec.rb22
-rw-r--r--spec/services/merge_requests/refresh_service_spec.rb2
-rw-r--r--spec/services/merge_requests/update_service_spec.rb2
-rw-r--r--spec/services/milestones/transfer_service_spec.rb8
-rw-r--r--spec/services/notes/copy_service_spec.rb2
-rw-r--r--spec/services/notification_service_spec.rb6
-rw-r--r--spec/services/packages/composer/create_package_service_spec.rb2
-rw-r--r--spec/services/packages/create_dependency_service_spec.rb2
-rw-r--r--spec/services/packages/debian/extract_deb_metadata_service_spec.rb2
-rw-r--r--spec/services/packages/debian/extract_metadata_service_spec.rb7
-rw-r--r--spec/services/packages/debian/parse_debian822_service_spec.rb8
-rw-r--r--spec/services/packages/debian/sign_distribution_service_spec.rb2
-rw-r--r--spec/services/packages/helm/process_file_service_spec.rb2
-rw-r--r--spec/services/packages/npm/create_package_service_spec.rb8
-rw-r--r--spec/services/packages/rubygems/dependency_resolver_service_spec.rb14
-rw-r--r--spec/services/pages/delete_service_spec.rb4
-rw-r--r--spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb2
-rw-r--r--spec/services/projects/create_service_spec.rb33
-rw-r--r--spec/services/projects/enable_deploy_key_service_spec.rb2
-rw-r--r--spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb2
-rw-r--r--spec/services/projects/lfs_pointers/lfs_download_service_spec.rb2
-rw-r--r--spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb6
-rw-r--r--spec/services/projects/participants_service_spec.rb6
-rw-r--r--spec/services/projects/update_statistics_service_spec.rb2
-rw-r--r--spec/services/quick_actions/interpret_service_spec.rb2
-rw-r--r--spec/services/releases/destroy_service_spec.rb2
-rw-r--r--spec/services/releases/update_service_spec.rb2
-rw-r--r--spec/services/resource_access_tokens/create_service_spec.rb2
-rw-r--r--spec/services/search/group_service_spec.rb2
-rw-r--r--spec/services/snippets/update_service_spec.rb2
-rw-r--r--spec/services/suggestions/apply_service_spec.rb2
-rw-r--r--spec/services/system_note_service_spec.rb4
-rw-r--r--spec/services/system_notes/merge_requests_service_spec.rb4
-rw-r--r--spec/services/system_notes/time_tracking_service_spec.rb8
-rw-r--r--spec/services/terraform/remote_state_handler_spec.rb2
-rw-r--r--spec/services/timelogs/delete_service_spec.rb4
-rw-r--r--spec/services/todo_service_spec.rb4
-rw-r--r--spec/services/todos/destroy/design_service_spec.rb8
-rw-r--r--spec/services/web_hook_service_spec.rb4
-rw-r--r--spec/services/work_items/create_service_spec.rb4
-rw-r--r--spec/services/work_items/parent_links/create_service_spec.rb4
-rw-r--r--spec/services/work_items/parent_links/destroy_service_spec.rb2
-rw-r--r--spec/services/work_items/widgets/description_service/update_service_spec.rb2
-rw-r--r--spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb18
-rw-r--r--spec/uploaders/object_storage_spec.rb18
90 files changed, 288 insertions, 416 deletions
diff --git a/.rubocop_todo/layout/space_inside_block_braces.yml b/.rubocop_todo/layout/space_inside_block_braces.yml
index 4714e3e64bf..85c980c6509 100644
--- a/.rubocop_todo/layout/space_inside_block_braces.yml
+++ b/.rubocop_todo/layout/space_inside_block_braces.yml
@@ -71,14 +71,6 @@ Layout/SpaceInsideBlockBraces:
- 'ee/spec/finders/status_page/incidents_finder_spec.rb'
- 'ee/spec/frontend/fixtures/epic.rb'
- 'ee/spec/frontend/fixtures/projects.rb'
- - 'ee/spec/graphql/ee/resolvers/namespace_projects_resolver_spec.rb'
- - 'ee/spec/graphql/mutations/boards/epics/create_spec.rb'
- - 'ee/spec/graphql/mutations/compliance_management/frameworks/destroy_spec.rb'
- - 'ee/spec/graphql/mutations/dast_site_validations/revoke_spec.rb'
- - 'ee/spec/graphql/mutations/incident_management/escalation_policy/create_spec.rb'
- - 'ee/spec/graphql/mutations/releases/update_spec.rb'
- - 'ee/spec/graphql/mutations/vulnerabilities/destroy_external_issue_link_spec.rb'
- - 'ee/spec/graphql/resolvers/iterations_resolver_spec.rb'
- 'ee/spec/helpers/ee/projects/pipeline_helper_spec.rb'
- 'ee/spec/helpers/ee/projects/security/dast_configuration_helper_spec.rb'
- 'ee/spec/helpers/ee/registrations_helper_spec.rb'
@@ -115,80 +107,9 @@ Layout/SpaceInsideBlockBraces:
- 'ee/spec/models/vulnerabilities/feedback_spec.rb'
- 'ee/spec/models/vulnerabilities/finding_spec.rb'
- 'ee/spec/presenters/epic_issue_presenter_spec.rb'
- - 'ee/spec/requests/api/analytics/code_review_analytics_spec.rb'
- - 'ee/spec/requests/api/analytics/group_activity_analytics_spec.rb'
- - 'ee/spec/requests/api/ci/minutes_spec.rb'
- - 'ee/spec/requests/api/epic_links_spec.rb'
- - 'ee/spec/requests/api/graphql/boards/board_lists_query_spec.rb'
- - 'ee/spec/requests/api/graphql/group/epic/epic_aggregate_query_spec.rb'
- - 'ee/spec/requests/api/graphql/group/epic/epic_issues_spec.rb'
- - 'ee/spec/requests/api/graphql/group_query_spec.rb'
- - 'ee/spec/requests/api/graphql/iteration_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/dast_site_validations/revoke_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/epic_tree/reorder_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/incident_management/oncall_rotation/update_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/releases/create_spec.rb'
- - 'ee/spec/requests/api/graphql/mutations/releases/update_spec.rb'
- - 'ee/spec/requests/api/graphql/project/dast_profiles_spec.rb'
- - 'ee/spec/requests/api/graphql/project/dast_site_validations_spec.rb'
- - 'ee/spec/requests/api/graphql/project/issues_spec.rb'
- - 'ee/spec/requests/api/graphql/projects/compliance_frameworks_spec.rb'
- - 'ee/spec/requests/api/group_variables_spec.rb'
- - 'ee/spec/requests/api/internal/base_spec.rb'
- - 'ee/spec/requests/api/managed_licenses_spec.rb'
- - 'ee/spec/requests/api/members_spec.rb'
- - 'ee/spec/requests/api/projects_spec.rb'
- - 'ee/spec/requests/api/protected_branches_spec.rb'
- - 'ee/spec/requests/api/releases_spec.rb'
- - 'ee/spec/requests/groups/contribution_analytics_spec.rb'
- - 'ee/spec/requests/lfs_http_spec.rb'
- - 'ee/spec/requests/projects/security/policies_controller_spec.rb'
- 'ee/spec/serializers/member_user_entity_spec.rb'
- 'ee/spec/serializers/merge_request_poll_widget_entity_spec.rb'
- 'ee/spec/serializers/vulnerabilities/finding_reports_comparer_entity_spec.rb'
- - 'ee/spec/services/audit_events/register_runner_audit_event_service_spec.rb'
- - 'ee/spec/services/audit_events/unregister_runner_audit_event_service_spec.rb'
- - 'ee/spec/services/auto_merge/add_to_merge_train_when_pipeline_succeeds_service_spec.rb'
- - 'ee/spec/services/auto_merge/merge_train_service_spec.rb'
- - 'ee/spec/services/ci/runners/register_runner_service_spec.rb'
- - 'ee/spec/services/ee/design_management/delete_designs_service_spec.rb'
- - 'ee/spec/services/ee/design_management/save_designs_service_spec.rb'
- - 'ee/spec/services/ee/issuable/bulk_update_service_spec.rb'
- - 'ee/spec/services/ee/notes/quick_actions_service_spec.rb'
- - 'ee/spec/services/ee/notification_service_spec.rb'
- - 'ee/spec/services/ee/vulnerability_feedback_module/update_service_spec.rb'
- - 'ee/spec/services/epic_issues/create_service_spec.rb'
- - 'ee/spec/services/epics/create_service_spec.rb'
- - 'ee/spec/services/epics/descendant_count_service_spec.rb'
- - 'ee/spec/services/epics/transfer_service_spec.rb'
- - 'ee/spec/services/geo/container_repository_sync_service_spec.rb'
- - 'ee/spec/services/geo/framework_repository_sync_service_spec.rb'
- - 'ee/spec/services/geo/hashed_storage_attachments_event_store_spec.rb'
- - 'ee/spec/services/geo/repository_sync_service_spec.rb'
- - 'ee/spec/services/geo/wiki_sync_service_spec.rb'
- - 'ee/spec/services/gitlab_subscriptions/activate_service_spec.rb'
- - 'ee/spec/services/gitlab_subscriptions/apply_trial_service_spec.rb'
- - 'ee/spec/services/group_saml/sign_up_service_spec.rb'
- - 'ee/spec/services/groups/epics_count_service_spec.rb'
- - 'ee/spec/services/groups/memberships/export_service_spec.rb'
- - 'ee/spec/services/iterations/cadences/create_iterations_in_advance_service_spec.rb'
- - 'ee/spec/services/merge_trains/check_status_service_spec.rb'
- - 'ee/spec/services/personal_access_tokens/groups/update_lifetime_service_spec.rb'
- - 'ee/spec/services/projects/destroy_service_spec.rb'
- - 'ee/spec/services/projects/update_mirror_service_spec.rb'
- - 'ee/spec/services/quick_actions/interpret_service_spec.rb'
- - 'ee/spec/services/requirements_management/create_requirement_service_spec.rb'
- - 'ee/spec/services/requirements_management/update_requirement_service_spec.rb'
- - 'ee/spec/services/resource_access_tokens/create_service_spec.rb'
- - 'ee/spec/services/search/group_service_spec.rb'
- - 'ee/spec/services/security/ingestion/tasks/ingest_findings_spec.rb'
- - 'ee/spec/services/security/security_orchestration_policies/policy_commit_service_spec.rb'
- - 'ee/spec/services/sitemap/create_service_spec.rb'
- - 'ee/spec/services/software_license_policies/update_service_spec.rb'
- - 'ee/spec/services/status_page/publish_attachments_service_spec.rb'
- - 'ee/spec/services/system_notes/epics_service_spec.rb'
- - 'ee/spec/services/vulnerability_external_issue_links/create_service_spec.rb'
- - 'ee/spec/services/vulnerability_feedback/destroy_service_spec.rb'
- 'ee/spec/support/shared_examples/features/ultimate_trial_callout_shared_examples.rb'
- 'ee/spec/support/shared_examples/requests/api/project_approval_rules_api_shared_examples.rb'
- 'ee/spec/support/shared_examples/services/base_sync_service_shared_examples.rb'
@@ -287,18 +208,6 @@ Layout/SpaceInsideBlockBraces:
- 'spec/frontend/fixtures/raw.rb'
- 'spec/frontend/fixtures/snippet.rb'
- 'spec/frontend/fixtures/todos.rb'
- - 'spec/graphql/mutations/merge_requests/set_labels_spec.rb'
- - 'spec/graphql/mutations/releases/create_spec.rb'
- - 'spec/graphql/mutations/releases/delete_spec.rb'
- - 'spec/graphql/mutations/releases/update_spec.rb'
- - 'spec/graphql/resolvers/ci/runner_jobs_resolver_spec.rb'
- - 'spec/graphql/resolvers/group_members/notification_email_resolver_spec.rb'
- - 'spec/graphql/resolvers/project_jobs_resolver_spec.rb'
- - 'spec/graphql/resolvers/projects/grafana_integration_resolver_spec.rb'
- - 'spec/graphql/resolvers/projects_resolver_spec.rb'
- - 'spec/graphql/types/ci/job_token_scope_type_spec.rb'
- - 'spec/graphql/types/issue_type_spec.rb'
- - 'spec/graphql/types/user_type_spec.rb'
- 'spec/helpers/application_settings_helper_spec.rb'
- 'spec/helpers/blob_helper_spec.rb'
- 'spec/helpers/gitlab_script_tag_helper_spec.rb'
@@ -374,118 +283,9 @@ Layout/SpaceInsideBlockBraces:
- 'spec/presenters/packages/conan/package_presenter_spec.rb'
- 'spec/presenters/packages/nuget/packages_metadata_presenter_spec.rb'
- 'spec/presenters/project_presenter_spec.rb'
- - 'spec/requests/api/branches_spec.rb'
- - 'spec/requests/api/ci/jobs_spec.rb'
- - 'spec/requests/api/ci/runner/jobs_request_post_spec.rb'
- - 'spec/requests/api/ci/runner/jobs_trace_spec.rb'
- - 'spec/requests/api/ci/secure_files_spec.rb'
- - 'spec/requests/api/ci/triggers_spec.rb'
- - 'spec/requests/api/ci/variables_spec.rb'
- - 'spec/requests/api/commits_spec.rb'
- - 'spec/requests/api/conan_instance_packages_spec.rb'
- - 'spec/requests/api/conan_project_packages_spec.rb'
- - 'spec/requests/api/dependency_proxy_spec.rb'
- - 'spec/requests/api/go_proxy_spec.rb'
- - 'spec/requests/api/graphql/boards/board_list_issues_query_spec.rb'
- - 'spec/requests/api/graphql/boards/board_lists_query_spec.rb'
- - 'spec/requests/api/graphql/group/dependency_proxy_manifests_spec.rb'
- - 'spec/requests/api/graphql/mutations/award_emojis/add_spec.rb'
- - 'spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb'
- - 'spec/requests/api/graphql/mutations/releases/create_spec.rb'
- - 'spec/requests/api/graphql/mutations/releases/update_spec.rb'
- - 'spec/requests/api/graphql/mutations/snippets/create_spec.rb'
- - 'spec/requests/api/graphql/namespace/root_storage_statistics_spec.rb'
- - 'spec/requests/api/graphql/packages/conan_spec.rb'
- - 'spec/requests/api/graphql/packages/helm_spec.rb'
- - 'spec/requests/api/graphql/packages/package_spec.rb'
- - 'spec/requests/api/graphql/project/base_service_spec.rb'
- - 'spec/requests/api/graphql/project/jira_import_spec.rb'
- - 'spec/requests/api/group_variables_spec.rb'
- - 'spec/requests/api/groups_spec.rb'
- - 'spec/requests/api/helpers_spec.rb'
- - 'spec/requests/api/internal/base_spec.rb'
- - 'spec/requests/api/markdown_spec.rb'
- - 'spec/requests/api/maven_packages_spec.rb'
- - 'spec/requests/api/metrics/dashboard/annotations_spec.rb'
- - 'spec/requests/api/notes_spec.rb'
- - 'spec/requests/api/npm_project_packages_spec.rb'
- - 'spec/requests/api/nuget_group_packages_spec.rb'
- - 'spec/requests/api/pages/pages_spec.rb'
- - 'spec/requests/api/pages_domains_spec.rb'
- - 'spec/requests/api/personal_access_tokens_spec.rb'
- - 'spec/requests/api/project_hooks_spec.rb'
- - 'spec/requests/api/project_templates_spec.rb'
- - 'spec/requests/api/projects_spec.rb'
- - 'spec/requests/api/pypi_packages_spec.rb'
- - 'spec/requests/api/release/links_spec.rb'
- - 'spec/requests/api/releases_spec.rb'
- - 'spec/requests/api/snippets_spec.rb'
- - 'spec/requests/api/unleash_spec.rb'
- - 'spec/requests/git_http_spec.rb'
- - 'spec/requests/groups/milestones_controller_spec.rb'
- - 'spec/requests/lfs_http_spec.rb'
- - 'spec/requests/oauth/tokens_controller_spec.rb'
- 'spec/rubocop/cop/migration/create_table_with_foreign_keys_spec.rb'
- 'spec/serializers/cluster_entity_spec.rb'
- 'spec/serializers/import/provider_repo_serializer_spec.rb'
- - 'spec/services/auto_merge/base_service_spec.rb'
- - 'spec/services/auto_merge_service_spec.rb'
- - 'spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb'
- - 'spec/services/ci/parse_dotenv_artifact_service_spec.rb'
- - 'spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb'
- - 'spec/services/ci/process_build_service_spec.rb'
- - 'spec/services/ci/runners/register_runner_service_spec.rb'
- - 'spec/services/ci/runners/update_runner_service_spec.rb'
- - 'spec/services/ci/stuck_builds/drop_pending_service_spec.rb'
- - 'spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb'
- - 'spec/services/clusters/integrations/create_service_spec.rb'
- - 'spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb'
- - 'spec/services/deployments/create_for_build_service_spec.rb'
- - 'spec/services/git/branch_push_service_spec.rb'
- - 'spec/services/groups/destroy_service_spec.rb'
- - 'spec/services/groups/merge_requests_count_service_spec.rb'
- - 'spec/services/groups/update_service_spec.rb'
- - 'spec/services/groups/update_statistics_service_spec.rb'
- - 'spec/services/import/validate_remote_git_endpoint_service_spec.rb'
- - 'spec/services/issues/referenced_merge_requests_service_spec.rb'
- - 'spec/services/jira_import/start_import_service_spec.rb'
- - 'spec/services/lfs/push_service_spec.rb'
- - 'spec/services/members/invite_service_spec.rb'
- - 'spec/services/merge_requests/push_options_handler_service_spec.rb'
- - 'spec/services/merge_requests/refresh_service_spec.rb'
- - 'spec/services/merge_requests/update_service_spec.rb'
- - 'spec/services/milestones/transfer_service_spec.rb'
- - 'spec/services/notes/copy_service_spec.rb'
- - 'spec/services/notification_service_spec.rb'
- - 'spec/services/packages/composer/create_package_service_spec.rb'
- - 'spec/services/packages/create_dependency_service_spec.rb'
- - 'spec/services/packages/debian/extract_deb_metadata_service_spec.rb'
- - 'spec/services/packages/debian/parse_debian822_service_spec.rb'
- - 'spec/services/packages/debian/sign_distribution_service_spec.rb'
- - 'spec/services/packages/helm/process_file_service_spec.rb'
- - 'spec/services/packages/npm/create_package_service_spec.rb'
- - 'spec/services/packages/rubygems/dependency_resolver_service_spec.rb'
- - 'spec/services/pages/delete_service_spec.rb'
- - 'spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb'
- - 'spec/services/projects/enable_deploy_key_service_spec.rb'
- - 'spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb'
- - 'spec/services/projects/lfs_pointers/lfs_download_service_spec.rb'
- - 'spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb'
- - 'spec/services/projects/participants_service_spec.rb'
- - 'spec/services/projects/update_statistics_service_spec.rb'
- - 'spec/services/quick_actions/interpret_service_spec.rb'
- - 'spec/services/releases/destroy_service_spec.rb'
- - 'spec/services/releases/update_service_spec.rb'
- - 'spec/services/resource_access_tokens/create_service_spec.rb'
- - 'spec/services/search/group_service_spec.rb'
- - 'spec/services/snippets/update_service_spec.rb'
- - 'spec/services/suggestions/apply_service_spec.rb'
- - 'spec/services/system_notes/merge_requests_service_spec.rb'
- - 'spec/services/terraform/remote_state_handler_spec.rb'
- - 'spec/services/todo_service_spec.rb'
- - 'spec/services/todos/destroy/design_service_spec.rb'
- - 'spec/services/todos/destroy/entity_leave_service_spec.rb'
- - 'spec/services/web_hook_service_spec.rb'
- 'spec/support/helpers/cycle_analytics_helpers.rb'
- 'spec/support/redis/redis_shared_examples.rb'
- 'spec/support/shared_contexts/features/integrations/integrations_shared_context.rb'
diff --git a/app/services/packages/debian/extract_metadata_service.rb b/app/services/packages/debian/extract_metadata_service.rb
index f94587919b9..eb8227d1296 100644
--- a/app/services/packages/debian/extract_metadata_service.rb
+++ b/app/services/packages/debian/extract_metadata_service.rb
@@ -61,12 +61,12 @@ module Packages
def fields
strong_memoize(:fields) do
if file_type_debian?
- package_file.file.use_file do |file_path|
- ::Packages::Debian::ExtractDebMetadataService.new(file_path).execute
+ package_file.file.use_open_file(unlink_early: false) do |file|
+ ::Packages::Debian::ExtractDebMetadataService.new(file.file_path).execute
end
elsif file_type_meta?
- package_file.file.use_file do |file_path|
- ::Packages::Debian::ParseDebian822Service.new(File.read(file_path)).execute.each_value.first
+ package_file.file.use_open_file do |file|
+ ::Packages::Debian::ParseDebian822Service.new(file.read).execute.each_value.first
end
end
end
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index 9bc8bb428fb..6381ee67ce7 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -26,7 +26,7 @@ module Projects
return ::Projects::CreateFromTemplateService.new(current_user, params).execute
end
- @project = Project.new(params)
+ @project = Project.new(params.merge(creator: current_user))
validate_import_source_enabled!
@@ -45,20 +45,14 @@ module Projects
set_project_name_from_path
# get namespace id
- namespace_id = params[:namespace_id]
-
- if namespace_id
- # Find matching namespace and check if it allowed
- # for current user if namespace_id passed.
- unless current_user.can?(:create_projects, parent_namespace)
- @project.namespace_id = nil
- deny_namespace
- return @project
- end
- else
- # Set current user namespace if namespace_id is nil
- @project.namespace_id = current_user.namespace_id
- end
+ namespace_id = params[:namespace_id] || current_user.namespace_id
+ @project.namespace_id = namespace_id.to_i
+
+ @project.check_personal_projects_limit
+ return @project if @project.errors.any?
+
+ validate_create_permissions
+ return @project if @project.errors.any?
@relations_block&.call(@project)
yield(@project) if block_given?
@@ -92,7 +86,9 @@ module Projects
protected
- def deny_namespace
+ def validate_create_permissions
+ return if current_user.can?(:create_projects, parent_namespace)
+
@project.errors.add(:namespace, "is not valid")
end
diff --git a/app/uploaders/object_storage.rb b/app/uploaders/object_storage.rb
index 891df5180d8..063aca7937c 100644
--- a/app/uploaders/object_storage.rb
+++ b/app/uploaders/object_storage.rb
@@ -224,6 +224,10 @@ module ObjectStorage
def initialize(file)
@file = file
end
+
+ def file_path
+ @file.path
+ end
end
# allow to configure and overwrite the filename
@@ -275,9 +279,9 @@ module ObjectStorage
end
end
- def use_open_file(&blk)
+ def use_open_file(unlink_early: true)
Tempfile.open(path) do |file|
- file.unlink
+ file.unlink if unlink_early
file.binmode
if file_storage?
@@ -291,6 +295,8 @@ module ObjectStorage
file.seek(0, IO::SEEK_SET)
yield OpenFile.new(file)
+ ensure
+ file.unlink unless unlink_early
end
end
diff --git a/app/views/admin/hooks/edit.html.haml b/app/views/admin/hooks/edit.html.haml
index e8176e9f8bb..224afbff39a 100644
--- a/app/views/admin/hooks/edit.html.haml
+++ b/app/views/admin/hooks/edit.html.haml
@@ -15,6 +15,6 @@
= render 'shared/web_hooks/test_button', hook: @hook
= link_to _('Delete'), admin_hook_path(@hook), method: :delete, class: 'btn gl-button btn-danger float-right', aria: { label: s_('Webhooks|Delete webhook') }, data: { confirm: s_('Webhooks|Are you sure you want to delete this webhook?'), confirm_btn_variant: 'danger' }
- %hr
+%hr
- = render partial: 'admin/hook_logs/index', locals: { hook: @hook, hook_logs: @hook_logs }
+= render partial: 'shared/hook_logs/index', locals: { hook: @hook, hook_logs: @hook_logs }
diff --git a/app/views/projects/hook_logs/_index.html.haml b/app/views/projects/hook_logs/_index.html.haml
deleted file mode 100644
index 6a46b0b3510..00000000000
--- a/app/views/projects/hook_logs/_index.html.haml
+++ /dev/null
@@ -1,11 +0,0 @@
-- docs_link_url = help_page_path('user/project/integrations/webhooks', anchor: 'troubleshoot-webhooks')
-- link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: docs_link_url }
-- link_end = '</a>'.html_safe
-
-.row.gl-mt-3.gl-mb-3
- .col-lg-3
- %h4.gl-mt-0
- = _('Recent events')
- %p= _('GitLab events trigger webhooks. Use the request details of a webhook to help troubleshoot problems. %{link_start}How do I troubleshoot?%{link_end}').html_safe % { link_start: link_start, link_end: link_end }
- .col-lg-9
- = render partial: 'shared/hook_logs/recent_deliveries_table', locals: { hook: hook, hook_logs: hook_logs }
diff --git a/app/views/projects/hooks/edit.html.haml b/app/views/projects/hooks/edit.html.haml
index 74af65904cd..b350455807d 100644
--- a/app/views/projects/hooks/edit.html.haml
+++ b/app/views/projects/hooks/edit.html.haml
@@ -18,4 +18,4 @@
%hr
-= render partial: 'projects/hook_logs/index', locals: { hook: @hook, hook_logs: @hook_logs, project: @project }
+= render partial: 'shared/hook_logs/index', locals: { hook: @hook, hook_logs: @hook_logs, project: @project }
diff --git a/app/views/projects/settings/integrations/edit.html.haml b/app/views/projects/settings/integrations/edit.html.haml
index a250daafdbb..46276e6c6c9 100644
--- a/app/views/projects/settings/integrations/edit.html.haml
+++ b/app/views/projects/settings/integrations/edit.html.haml
@@ -6,4 +6,5 @@
= render 'form', integration: @integration
- if @web_hook_logs
- = render partial: 'projects/hook_logs/index', locals: { hook: @integration.service_hook, hook_logs: @web_hook_logs, project: @project }
+ %hr
+ = render partial: 'shared/hook_logs/index', locals: { hook: @integration.service_hook, hook_logs: @web_hook_logs, project: @project }
diff --git a/app/views/admin/hook_logs/_index.html.haml b/app/views/shared/hook_logs/_index.html.haml
index 6a46b0b3510..6a46b0b3510 100644
--- a/app/views/admin/hook_logs/_index.html.haml
+++ b/app/views/shared/hook_logs/_index.html.haml
diff --git a/doc/administration/raketasks/project_import_export.md b/doc/administration/raketasks/project_import_export.md
index f623d4e4526..f3a9845d129 100644
--- a/doc/administration/raketasks/project_import_export.md
+++ b/doc/administration/raketasks/project_import_export.md
@@ -17,11 +17,7 @@ GitLab provides Rake tasks relating to project import and export. For more infor
You can query an import through the [Project import/export API](../../api/project_import_export.md#import-status).
As described in the API documentation, the query may return an import error or exceptions.
-## Import large projects
-
-If you have a larger project, consider using a Rake task, as described in our [developer documentation](../../development/import_project.md#importing-via-a-rake-task).
-
-## Import/export tasks
+## Import/export Rake tasks
The GitLab import/export version can be checked by using the following command:
@@ -57,3 +53,38 @@ Note the following:
- The exports are stored in a temporary directory and are deleted every
24 hours by a specific worker.
+
+### Import large projects using a Rake task
+
+If you have a larger project, consider using a Rake task as described in our [developer documentation](../../development/import_project.md#importing-via-a-rake-task).
+
+### Export using a Rake task
+
+> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25598) in GitLab 12.9.
+
+You can use a Rake task to export large project.
+
+Parameters:
+
+| Attribute | Type | Required | Description |
+| --------- | ---- | -------- | ----------- |
+| `username` | string | yes | User name |
+| `namespace_path` | string | yes | Namespace path |
+| `project_path` | string | yes | Project name |
+| `archive_path` | string | yes | Path to file to store the export project tarball |
+
+```shell
+gitlab-rake "gitlab:import_export:export[username, namespace_path, project_path, archive_path]"
+```
+
+## Troubleshooting
+
+If you are having trouble with import/export, you can enable debug mode using the same Rake task:
+
+```shell
+# Import
+IMPORT_DEBUG=true gitlab-rake "gitlab:import_export:import[root, group/subgroup, testingprojectimport, /path/to/file_to_import.tar.gz]"
+
+# Export
+EXPORT_DEBUG=true gitlab-rake "gitlab:import_export:export[root, group/subgroup, projectnametoexport, /tmp/export_file.tar.gz]"
+```
diff --git a/doc/development/documentation/structure.md b/doc/development/documentation/structure.md
index a02046d4466..47eb9ad5144 100644
--- a/doc/development/documentation/structure.md
+++ b/doc/development/documentation/structure.md
@@ -148,35 +148,57 @@ Avoid these heading titles:
## Troubleshooting
-Troubleshooting can be one of two categories:
+Troubleshooting topics should be the last topics on a page. They can also be on a standalone page that includes only troubleshooting information.
-- **Troubleshooting task.** This information is written the same way as a [standard task](#task).
+Troubleshooting can be one of three categories:
+
+- **An introductory topic.** This topic introduces the troubleshooting section of a page.
+ For example:
+
+ ```markdown
+ ## Troubleshooting
+
+ When working with <x feature>, you might encounter the following issues.
+ ```
+
+- **Troubleshooting task.** The title should be similar to a [standard task](#task).
For example, "Run debug tools" or "Verify syntax."
-- **Troubleshooting reference.** This information has a specific format.
-Troubleshooting reference information should be in this format:
+- **Troubleshooting reference.** This information includes the error message. For example:
-```markdown
-# Title (the error message or a description of it)
+ ```markdown
+ ### The error message or a description of it
-You might get an error that states <error message>.
+ You might get an error that states <error message>.
-This issue occurs when...
+ This issue occurs when...
-The workaround is...
-```
+ The workaround is...
+ ```
-If multiple causes or workarounds exist, consider putting them into a table format.
+ If multiple causes or workarounds exist, consider putting them into a table format.
### Troubleshooting headings
-For the heading:
+For the heading of a **Troubleshooting reference** topic:
- Consider including at least a partial error message.
- Use fewer than 70 characters.
If you do not put the full error in the title, include it in the body text.
+### Related topics
+
+If inline links are not sufficient, you can create a topic called **Related topics**
+and include an unordered list of related topics. This topic should be above the Troubleshooting section.
+
+```markdown
+# Related topics
+
+- [Configure your pipeline](link-to-topic)
+- [Trigger a pipeline manually](link-to-topic)
+```
+
## General heading text guidelines
In general, for heading text:
@@ -272,18 +294,6 @@ If you need to add more than one task,
consider using subsections for each distinct task.
```
-### Related topics
-
-If inline links are not sufficient, you can create a topic called **Related topics**
-and include an unordered list of related topics. This topic should be above the Troubleshooting section.
-
-```markdown
-# Related topics
-
-- [Configure your pipeline](link-to-topic)
-- [Trigger a pipeline manually](link-to-topic)
-```
-
### Topics and resources pages
This page has a list of links that point to important sections
diff --git a/doc/development/migration_style_guide.md b/doc/development/migration_style_guide.md
index f69b2c686aa..d8b6456469a 100644
--- a/doc/development/migration_style_guide.md
+++ b/doc/development/migration_style_guide.md
@@ -581,7 +581,7 @@ end
Verify the index is not being used anymore with this Thanos query:
```sql
-sum(rate(pg_stat_user_indexes_idx_tup_read{env="gprd", indexrelname="index_ci_name", type="patroni-ci"}[5m]))
+sum by (type)(rate(pg_stat_user_indexes_idx_scan{env="gprd", indexrelname="index_groups_on_parent_id_id"}[5m]))
```
Note that it is not necessary to check if the index exists prior to
diff --git a/doc/security/two_factor_authentication.md b/doc/security/two_factor_authentication.md
index 008aef69691..48f9cadd11b 100644
--- a/doc/security/two_factor_authentication.md
+++ b/doc/security/two_factor_authentication.md
@@ -142,7 +142,12 @@ The one-time password (OTP) verification can be done using a command:
ssh git@<hostname> 2fa_verify
```
-After the OTP is verified, Git over SSH operations can be used for a session duration of
+In GitLab 15.3 and later, users can authenticate by either:
+
+- Entering the correct OTP.
+- Responding to a device push notification, if [FortiAuthenticator is enabled](../user/profile/account/two_factor_authentication.md#enable-one-time-password-using-fortiauthenticator).
+
+After the successful authentication, Git over SSH operations can be used for a session duration of
15 minutes (default) with the associated SSH key.
### Security limitation
diff --git a/qa/qa/service/praefect_manager.rb b/qa/qa/service/praefect_manager.rb
index e500745c4f1..c332e7a6198 100644
--- a/qa/qa/service/praefect_manager.rb
+++ b/qa/qa/service/praefect_manager.rb
@@ -101,7 +101,7 @@ module QA
wait_until_shell_command_matches(
"docker inspect -f {{.State.Running}} #{name}",
/true/,
- sleep_interval: 3,
+ sleep_interval: 1,
max_duration: 180,
retry_on_exception: true
)
diff --git a/qa/qa/specs/features/api/3_create/gitaly/distributed_reads_spec.rb b/qa/qa/specs/features/api/3_create/gitaly/distributed_reads_spec.rb
index 150378016e1..2b96c35415e 100644
--- a/qa/qa/specs/features/api/3_create/gitaly/distributed_reads_spec.rb
+++ b/qa/qa/specs/features/api/3_create/gitaly/distributed_reads_spec.rb
@@ -20,11 +20,6 @@ module QA
praefect_manager.wait_for_replication(project.id)
end
- after do
- # Leave the cluster in a suitable state for subsequent tests
- praefect_manager.start_all_nodes
- end
-
it 'reads from each node', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347833' do
pre_read_data = praefect_manager.query_read_distribution
@@ -42,14 +37,12 @@ module QA
context 'when a node is unhealthy' do
before do
- praefect_manager.start_all_nodes
praefect_manager.stop_secondary_node
- praefect_manager.wait_for_secondary_node_health_check_failure
end
after do
# Leave the cluster in a suitable state for subsequent tests
- praefect_manager.start_all_nodes
+ praefect_manager.start_secondary_node
end
it 'does not read from the unhealthy node', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/347834' do
diff --git a/qa/qa/specs/features/api/3_create/gitaly/praefect_repo_sync_spec.rb b/qa/qa/specs/features/api/3_create/gitaly/praefect_repo_sync_spec.rb
index e27f37abedf..47be7e0620b 100644
--- a/qa/qa/specs/features/api/3_create/gitaly/praefect_repo_sync_spec.rb
+++ b/qa/qa/specs/features/api/3_create/gitaly/praefect_repo_sync_spec.rb
@@ -15,7 +15,6 @@ module QA
end
after do
- praefect_manager.start_all_nodes
praefect_manager.remove_repo_from_disk(repo1["relative_path"])
praefect_manager.remove_repo_from_disk(repo2["relative_path"])
praefect_manager.remove_repository_from_praefect_database(repo1["relative_path"])
diff --git a/spec/controllers/projects/hooks_controller_spec.rb b/spec/controllers/projects/hooks_controller_spec.rb
index a275bc28631..ba7b712964c 100644
--- a/spec/controllers/projects/hooks_controller_spec.rb
+++ b/spec/controllers/projects/hooks_controller_spec.rb
@@ -98,7 +98,7 @@ RSpec.describe Projects::HooksController do
def it_renders_correctly
expect(response).to have_gitlab_http_status(:ok)
expect(response).to render_template(:edit)
- expect(response).to render_template('projects/hook_logs/_index')
+ expect(response).to render_template('shared/hook_logs/_index')
end
end
diff --git a/spec/services/auto_merge/base_service_spec.rb b/spec/services/auto_merge/base_service_spec.rb
index 3f535b83788..6c804a14620 100644
--- a/spec/services/auto_merge/base_service_spec.rb
+++ b/spec/services/auto_merge/base_service_spec.rb
@@ -254,7 +254,7 @@ RSpec.describe AutoMerge::BaseService do
subject { service.abort(merge_request, reason) }
let(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) }
- let(:reason) { 'an error'}
+ let(:reason) { 'an error' }
it_behaves_like 'Canceled or Dropped'
diff --git a/spec/services/auto_merge_service_spec.rb b/spec/services/auto_merge_service_spec.rb
index 335c608c206..043b413acff 100644
--- a/spec/services/auto_merge_service_spec.rb
+++ b/spec/services/auto_merge_service_spec.rb
@@ -97,7 +97,7 @@ RSpec.describe AutoMergeService do
end
context 'when strategy is not present' do
- let(:strategy) { }
+ let(:strategy) {}
it 'returns nil' do
is_expected.to be_nil
@@ -140,7 +140,7 @@ RSpec.describe AutoMergeService do
end
context 'when strategy is not specified' do
- let(:strategy) { }
+ let(:strategy) {}
it 'chooses the most preferred strategy' do
is_expected.to eq(:merge_when_pipeline_succeeds)
diff --git a/spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb b/spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb
index 9add096d782..7c698242921 100644
--- a/spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb
+++ b/spec/services/ci/create_pipeline_service/evaluate_runner_tags_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec.describe Ci::CreatePipelineService do
let_it_be(:group) { create(:group, :private) }
- let_it_be(:group_variable) { create(:ci_group_variable, group: group, key: 'RUNNER_TAG', value: 'group')}
+ let_it_be(:group_variable) { create(:ci_group_variable, group: group, key: 'RUNNER_TAG', value: 'group') }
let_it_be(:project) { create(:project, :repository, group: group) }
let_it_be(:user) { create(:user) }
diff --git a/spec/services/ci/create_pipeline_service/rules_spec.rb b/spec/services/ci/create_pipeline_service/rules_spec.rb
index 88cec0cde9a..6e48141226d 100644
--- a/spec/services/ci/create_pipeline_service/rules_spec.rb
+++ b/spec/services/ci/create_pipeline_service/rules_spec.rb
@@ -557,7 +557,7 @@ RSpec.describe Ci::CreatePipelineService do
end
context 'when the compare_to ref exists' do
- let(:compare_to) { 'feature_1'}
+ let(:compare_to) { 'feature_1' }
context 'when the rule matches' do
it 'creates job1 and job2' do
@@ -609,7 +609,7 @@ RSpec.describe Ci::CreatePipelineService do
EOY
end
- let(:compare_to) { 'feature_1'}
+ let(:compare_to) { 'feature_1' }
context 'when the rule matches' do
it 'creates job1' do
diff --git a/spec/services/ci/deployments/destroy_service_spec.rb b/spec/services/ci/deployments/destroy_service_spec.rb
index e33d9e00d5f..60a57c05728 100644
--- a/spec/services/ci/deployments/destroy_service_spec.rb
+++ b/spec/services/ci/deployments/destroy_service_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe ::Ci::Deployments::DestroyService do
let_it_be(:project) { create(:project, :repository) }
let(:environment) { create(:environment, project: project) }
- let(:commits) { project.repository.commits(nil, { limit: 3 })}
+ let(:commits) { project.repository.commits(nil, { limit: 3 }) }
let!(:deploy) do
create(
:deployment,
diff --git a/spec/services/ci/parse_dotenv_artifact_service_spec.rb b/spec/services/ci/parse_dotenv_artifact_service_spec.rb
index aaab849cd93..7b3af33ac72 100644
--- a/spec/services/ci/parse_dotenv_artifact_service_spec.rb
+++ b/spec/services/ci/parse_dotenv_artifact_service_spec.rb
@@ -292,7 +292,7 @@ RSpec.describe Ci::ParseDotenvArtifactService do
end
context 'when build does not have a dotenv artifact' do
- let!(:artifact) { }
+ let!(:artifact) {}
it 'raises an error' do
expect { subject }.to raise_error(ArgumentError)
diff --git a/spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb b/spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb
index 7868629d34d..289e004fcce 100644
--- a/spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb
+++ b/spec/services/ci/pipeline_processing/atomic_processing_service/status_collection_spec.rb
@@ -87,7 +87,7 @@ RSpec.describe Ci::PipelineProcessing::AtomicProcessingService::StatusCollection
describe '#processing_processables' do
it 'returns processables marked as processing' do
- expect(collection.processing_processables.map { |processable| processable[:id]} )
+ expect(collection.processing_processables.map { |processable| processable[:id] } )
.to contain_exactly(build_a.id, build_b.id, test_a.id, test_b.id, deploy.id)
end
end
diff --git a/spec/services/ci/process_build_service_spec.rb b/spec/services/ci/process_build_service_spec.rb
index b54fc45d36a..2fcb4ce73ff 100644
--- a/spec/services/ci/process_build_service_spec.rb
+++ b/spec/services/ci/process_build_service_spec.rb
@@ -101,7 +101,7 @@ RSpec.describe Ci::ProcessBuildService, '#execute' do
context 'when build has delayed option' do
before do
- allow(Ci::BuildScheduleWorker).to receive(:perform_at) { }
+ allow(Ci::BuildScheduleWorker).to receive(:perform_at) {}
end
let(:build) { create(:ci_build, :created, :schedulable, user: user, project: project) }
diff --git a/spec/services/ci/runners/register_runner_service_spec.rb b/spec/services/ci/runners/register_runner_service_spec.rb
index 03dcf851e53..f233075224b 100644
--- a/spec/services/ci/runners/register_runner_service_spec.rb
+++ b/spec/services/ci/runners/register_runner_service_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec.describe ::Ci::Runners::RegisterRunnerService, '#execute' do
let(:registration_token) { 'abcdefg123456' }
- let(:token) { }
+ let(:token) {}
let(:args) { {} }
before do
diff --git a/spec/services/ci/runners/update_runner_service_spec.rb b/spec/services/ci/runners/update_runner_service_spec.rb
index b02ea8f58b0..e008fde9982 100644
--- a/spec/services/ci/runners/update_runner_service_spec.rb
+++ b/spec/services/ci/runners/update_runner_service_spec.rb
@@ -38,7 +38,7 @@ RSpec.describe Ci::Runners::UpdateRunnerService do
end
context 'with cost factor params' do
- let(:params) { { public_projects_minutes_cost_factor: 1.1, private_projects_minutes_cost_factor: 2.2 }}
+ let(:params) { { public_projects_minutes_cost_factor: 1.1, private_projects_minutes_cost_factor: 2.2 } }
it 'updates the runner cost factors' do
expect(update).to be_truthy
diff --git a/spec/services/ci/stuck_builds/drop_pending_service_spec.rb b/spec/services/ci/stuck_builds/drop_pending_service_spec.rb
index ebc57af77a0..a452a65829a 100644
--- a/spec/services/ci/stuck_builds/drop_pending_service_spec.rb
+++ b/spec/services/ci/stuck_builds/drop_pending_service_spec.rb
@@ -9,8 +9,8 @@ RSpec.describe Ci::StuckBuilds::DropPendingService do
create(:ci_build, pipeline: pipeline, runner: runner)
end
- let(:created_at) { }
- let(:updated_at) { }
+ let(:created_at) {}
+ let(:updated_at) {}
subject(:service) { described_class.new }
diff --git a/spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb b/spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb
index 1416fab3d25..a4f9f97fffc 100644
--- a/spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb
+++ b/spec/services/ci/stuck_builds/drop_scheduled_service_spec.rb
@@ -44,7 +44,7 @@ RSpec.describe Ci::StuckBuilds::DropScheduledService do
end
context 'when there are no stale scheduled builds' do
- let(:job) { }
+ let(:job) {}
it 'does not drop the stale scheduled build yet' do
expect { service.execute }.not_to raise_error
diff --git a/spec/services/clusters/integrations/create_service_spec.rb b/spec/services/clusters/integrations/create_service_spec.rb
index 016511a3c01..9104e07504d 100644
--- a/spec/services/clusters/integrations/create_service_spec.rb
+++ b/spec/services/clusters/integrations/create_service_spec.rb
@@ -68,7 +68,7 @@ RSpec.describe Clusters::Integrations::CreateService, '#execute' do
end
it 'errors' do
- expect { service.execute}.to raise_error(ArgumentError)
+ expect { service.execute }.to raise_error(ArgumentError)
end
end
diff --git a/spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb b/spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb
index a4f018aec0c..064f9e42e96 100644
--- a/spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb
+++ b/spec/services/clusters/kubernetes/create_or_update_service_account_service_spec.rb
@@ -136,7 +136,7 @@ RSpec.describe Clusters::Kubernetes::CreateOrUpdateServiceAccountService do
context 'With RBAC enabled cluster' do
let(:rbac) { true }
- let(:role_binding_name) { "gitlab-#{namespace}"}
+ let(:role_binding_name) { "gitlab-#{namespace}" }
before do
cluster.platform_kubernetes.rbac!
diff --git a/spec/services/deployments/create_for_build_service_spec.rb b/spec/services/deployments/create_for_build_service_spec.rb
index 38d94580512..a2e1acadcc1 100644
--- a/spec/services/deployments/create_for_build_service_spec.rb
+++ b/spec/services/deployments/create_for_build_service_spec.rb
@@ -41,7 +41,7 @@ RSpec.describe Deployments::CreateForBuildService do
end
context 'when the corresponding environment does not exist' do
- let!(:environment) { }
+ let!(:environment) {}
it 'does not create a deployment record' do
expect { subject }.not_to change { Deployment.count }
diff --git a/spec/services/git/branch_push_service_spec.rb b/spec/services/git/branch_push_service_spec.rb
index 8d41b20c8a9..36a723db9e8 100644
--- a/spec/services/git/branch_push_service_spec.rb
+++ b/spec/services/git/branch_push_service_spec.rb
@@ -573,7 +573,7 @@ RSpec.describe Git::BranchPushService, services: true do
before do
allow(project).to receive(:default_branch).and_return('feature')
- expect(project).to receive(:change_head) { 'feature'}
+ expect(project).to receive(:change_head) { 'feature' }
end
it 'push to first branch updates HEAD' do
diff --git a/spec/services/groups/destroy_service_spec.rb b/spec/services/groups/destroy_service_spec.rb
index f43f64fdf89..f6f395052a8 100644
--- a/spec/services/groups/destroy_service_spec.rb
+++ b/spec/services/groups/destroy_service_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe Groups::DestroyService do
let!(:group) { create(:group) }
let!(:nested_group) { create(:group, parent: group) }
let!(:project) { create(:project, :repository, :legacy_storage, namespace: group) }
- let!(:notification_setting) { create(:notification_setting, source: group)}
+ let!(:notification_setting) { create(:notification_setting, source: group) }
let(:gitlab_shell) { Gitlab::Shell.new }
let(:remove_path) { group.path + "+#{group.id}+deleted" }
@@ -271,7 +271,7 @@ RSpec.describe Groups::DestroyService do
end
context 'the shared_with group is deleted' do
- let!(:group2_subgroup) { create(:group, :private, parent: group2)}
+ let!(:group2_subgroup) { create(:group, :private, parent: group2) }
let!(:group2_subgroup_project) { create(:project, :private, group: group2_subgroup) }
it 'updates project authorizations so users of both groups lose access', :aggregate_failures do
diff --git a/spec/services/groups/merge_requests_count_service_spec.rb b/spec/services/groups/merge_requests_count_service_spec.rb
index 10c7ba5fca4..8bd350d6f0e 100644
--- a/spec/services/groups/merge_requests_count_service_spec.rb
+++ b/spec/services/groups/merge_requests_count_service_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec.describe Groups::MergeRequestsCountService, :use_clean_rails_memory_store_caching do
let_it_be(:user) { create(:user) }
- let_it_be(:group) { create(:group, :public)}
+ let_it_be(:group) { create(:group, :public) }
let_it_be(:project) { create(:project, :repository, namespace: group) }
let_it_be(:merge_request) { create(:merge_request, source_project: project, target_project: project) }
diff --git a/spec/services/groups/open_issues_count_service_spec.rb b/spec/services/groups/open_issues_count_service_spec.rb
index fca09bfdebe..923caa6c150 100644
--- a/spec/services/groups/open_issues_count_service_spec.rb
+++ b/spec/services/groups/open_issues_count_service_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe Groups::OpenIssuesCountService, :use_clean_rails_memory_store_caching do
- let_it_be(:group) { create(:group, :public)}
+ let_it_be(:group) { create(:group, :public) }
let_it_be(:project) { create(:project, :public, namespace: group) }
let_it_be(:user) { create(:user) }
let_it_be(:issue) { create(:issue, :opened, project: project) }
diff --git a/spec/services/groups/update_service_spec.rb b/spec/services/groups/update_service_spec.rb
index 856dd4a2567..92957abc918 100644
--- a/spec/services/groups/update_service_spec.rb
+++ b/spec/services/groups/update_service_spec.rb
@@ -371,7 +371,7 @@ RSpec.describe Groups::UpdateService do
end
it "hasn't changed the path" do
- expect { service.execute}.not_to change { internal_group.reload.path}
+ expect { service.execute }.not_to change { internal_group.reload.path }
end
end
end
diff --git a/spec/services/groups/update_statistics_service_spec.rb b/spec/services/groups/update_statistics_service_spec.rb
index 5bef51c2727..84b18b670a7 100644
--- a/spec/services/groups/update_statistics_service_spec.rb
+++ b/spec/services/groups/update_statistics_service_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe Groups::UpdateStatisticsService do
let(:statistics) { %w(wiki_size) }
- subject(:service) { described_class.new(group, statistics: statistics)}
+ subject(:service) { described_class.new(group, statistics: statistics) }
describe '#execute', :aggregate_failures do
context 'when group is nil' do
diff --git a/spec/services/import/fogbugz_service_spec.rb b/spec/services/import/fogbugz_service_spec.rb
index c9477dba7a5..7b86c5c45b0 100644
--- a/spec/services/import/fogbugz_service_spec.rb
+++ b/spec/services/import/fogbugz_service_spec.rb
@@ -119,7 +119,7 @@ RSpec.describe Import::FogbugzService do
let(:error_messages_array) { instance_double(Array, join: "something went wrong") }
let(:errors_double) { instance_double(ActiveModel::Errors, full_messages: error_messages_array, :[] => nil) }
let(:project_double) { instance_double(Project, persisted?: false, errors: errors_double) }
- let(:project_creator) { instance_double(Gitlab::FogbugzImport::ProjectCreator, execute: project_double )}
+ let(:project_creator) { instance_double(Gitlab::FogbugzImport::ProjectCreator, execute: project_double ) }
before do
allow(Gitlab::FogbugzImport::ProjectCreator).to receive(:new).and_return(project_creator)
diff --git a/spec/services/import/validate_remote_git_endpoint_service_spec.rb b/spec/services/import/validate_remote_git_endpoint_service_spec.rb
index 9dc862b6ca3..221ac2cd73a 100644
--- a/spec/services/import/validate_remote_git_endpoint_service_spec.rb
+++ b/spec/services/import/validate_remote_git_endpoint_service_spec.rb
@@ -25,7 +25,7 @@ RSpec.describe Import::ValidateRemoteGitEndpointService do
end
context 'when uri is using git:// protocol' do
- subject { described_class.new(url: 'git://demo.host/repo')}
+ subject { described_class.new(url: 'git://demo.host/repo') }
it 'returns success' do
result = subject.execute
diff --git a/spec/services/issues/referenced_merge_requests_service_spec.rb b/spec/services/issues/referenced_merge_requests_service_spec.rb
index dc55ba8ebea..16166c1fa33 100644
--- a/spec/services/issues/referenced_merge_requests_service_spec.rb
+++ b/spec/services/issues/referenced_merge_requests_service_spec.rb
@@ -106,7 +106,7 @@ RSpec.describe Issues::ReferencedMergeRequestsService do
end
describe '#closed_by_merge_requests' do
- let(:closed_issue) { build(:issue, :closed, project: project)}
+ let(:closed_issue) { build(:issue, :closed, project: project) }
it 'returns the open merge requests that close this issue' do
create_closing_mr(source_project: project, state: 'closed')
diff --git a/spec/services/jira_import/start_import_service_spec.rb b/spec/services/jira_import/start_import_service_spec.rb
index 510f58f0e75..c0db3012a30 100644
--- a/spec/services/jira_import/start_import_service_spec.rb
+++ b/spec/services/jira_import/start_import_service_spec.rb
@@ -136,7 +136,7 @@ RSpec.describe JiraImport::StartImportService do
end
context 'when multiple Jira imports for same Jira project' do
- let!(:jira_imports) { create_list(:jira_import_state, 3, :finished, project: project, jira_project_key: fake_key)}
+ let!(:jira_imports) { create_list(:jira_import_state, 3, :finished, project: project, jira_project_key: fake_key) }
it 'creates Jira label title with correct number' do
jira_import = subject.payload[:import_data]
diff --git a/spec/services/lfs/push_service_spec.rb b/spec/services/lfs/push_service_spec.rb
index e1564ca2359..f52bba94eea 100644
--- a/spec/services/lfs/push_service_spec.rb
+++ b/spec/services/lfs/push_service_spec.rb
@@ -98,7 +98,7 @@ RSpec.describe Lfs::PushService do
end
def batch_spec(*objects, upload: true, verify: false)
- { 'transfer' => 'basic', 'objects' => objects.map {|o| object_spec(o, upload: upload) } }
+ { 'transfer' => 'basic', 'objects' => objects.map { |o| object_spec(o, upload: upload) } }
end
def object_spec(object, upload: true, verify: false)
diff --git a/spec/services/markdown_content_rewriter_service_spec.rb b/spec/services/markdown_content_rewriter_service_spec.rb
index 91a117536ca..d94289856cf 100644
--- a/spec/services/markdown_content_rewriter_service_spec.rb
+++ b/spec/services/markdown_content_rewriter_service_spec.rb
@@ -8,7 +8,7 @@ RSpec.describe MarkdownContentRewriterService do
let_it_be(:target_parent) { create(:project, :public) }
let(:content) { 'My content' }
- let(:issue) { create(:issue, project: source_parent, description: content)}
+ let(:issue) { create(:issue, project: source_parent, description: content) }
describe '#initialize' do
it 'raises an error if source_parent is not a Project' do
diff --git a/spec/services/members/invite_service_spec.rb b/spec/services/members/invite_service_spec.rb
index d25c8996931..6dbe161ee02 100644
--- a/spec/services/members/invite_service_spec.rb
+++ b/spec/services/members/invite_service_spec.rb
@@ -455,7 +455,7 @@ RSpec.describe Members::InviteService, :aggregate_failures, :clean_gitlab_redis_
end
context 'when access_level is lower than inheriting member' do
- let(:params) { { user_id: group_member.user_id, access_level: ProjectMember::GUEST }}
+ let(:params) { { user_id: group_member.user_id, access_level: ProjectMember::GUEST } }
it 'does not add the member and returns an error' do
msg = "Access level should be greater than or equal " \
@@ -467,7 +467,7 @@ RSpec.describe Members::InviteService, :aggregate_failures, :clean_gitlab_redis_
end
context 'when access_level is the same as the inheriting member' do
- let(:params) { { user_id: group_member.user_id, access_level: ProjectMember::DEVELOPER }}
+ let(:params) { { user_id: group_member.user_id, access_level: ProjectMember::DEVELOPER } }
it 'adds the member with correct access_level' do
expect_to_create_members(count: 1)
@@ -477,7 +477,7 @@ RSpec.describe Members::InviteService, :aggregate_failures, :clean_gitlab_redis_
end
context 'when access_level is greater than the inheriting member' do
- let(:params) { { user_id: group_member.user_id, access_level: ProjectMember::MAINTAINER }}
+ let(:params) { { user_id: group_member.user_id, access_level: ProjectMember::MAINTAINER } }
it 'adds the member with correct access_level' do
expect_to_create_members(count: 1)
diff --git a/spec/services/merge_requests/push_options_handler_service_spec.rb b/spec/services/merge_requests/push_options_handler_service_spec.rb
index 338057f23d5..391377ad801 100644
--- a/spec/services/merge_requests/push_options_handler_service_spec.rb
+++ b/spec/services/merge_requests/push_options_handler_service_spec.rb
@@ -179,7 +179,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
end
@@ -231,7 +231,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can set the merge request to merge when pipeline succeeds'
@@ -284,7 +284,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can remove the source branch when it is merged'
@@ -337,7 +337,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can set the target of a merge request'
@@ -390,7 +390,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can set the title of a merge request'
@@ -443,7 +443,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can set the description of a merge request'
@@ -503,7 +503,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can set the draft of a merge request'
@@ -564,7 +564,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can change labels of a merge request', 2
@@ -617,7 +617,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can change labels of a merge request', 1
@@ -672,7 +672,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
context 'with an existing branch that has a merge request open' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can set the milestone of a merge request'
@@ -713,7 +713,7 @@ RSpec.describe MergeRequests::PushOptionsHandlerService do
shared_examples 'with an existing branch that has a merge request open in foss' do
let(:changes) { existing_branch_changes }
- let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch)}
+ let!(:merge_request) { create(:merge_request, source_project: project, source_branch: source_branch) }
it_behaves_like 'a service that does not create a merge request'
it_behaves_like 'a service that can change assignees of a merge request', 1
diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb
index 4b7dd84474a..09d06b8b2ab 100644
--- a/spec/services/merge_requests/refresh_service_spec.rb
+++ b/spec/services/merge_requests/refresh_service_spec.rb
@@ -185,7 +185,7 @@ RSpec.describe MergeRequests::RefreshService do
end
context 'when pipeline exists for the source branch' do
- let!(:pipeline) { create(:ci_empty_pipeline, ref: @merge_request.source_branch, project: @project, sha: @commits.first.sha)}
+ let!(:pipeline) { create(:ci_empty_pipeline, ref: @merge_request.source_branch, project: @project, sha: @commits.first.sha) }
subject { service.new(project: @project, current_user: @user).execute(@oldrev, @newrev, 'refs/heads/master') }
diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb
index 212f75d853f..a4cd9ed608b 100644
--- a/spec/services/merge_requests/update_service_spec.rb
+++ b/spec/services/merge_requests/update_service_spec.rb
@@ -91,7 +91,7 @@ RSpec.describe MergeRequests::UpdateService, :mailer do
context 'usage counters' do
let(:merge_request2) { create(:merge_request) }
- let(:draft_merge_request) { create(:merge_request, :draft_merge_request)}
+ let(:draft_merge_request) { create(:merge_request, :draft_merge_request) }
it 'update as expected' do
expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter)
diff --git a/spec/services/milestones/transfer_service_spec.rb b/spec/services/milestones/transfer_service_spec.rb
index afbc9c7dca2..b15d90d685c 100644
--- a/spec/services/milestones/transfer_service_spec.rb
+++ b/spec/services/milestones/transfer_service_spec.rb
@@ -11,9 +11,9 @@ RSpec.describe Milestones::TransferService do
let(:new_group) { create(:group) }
let(:old_group) { create(:group) }
let(:project) { create(:project, namespace: old_group) }
- let(:group_milestone) { create(:milestone, group: old_group)}
- let(:group_milestone2) { create(:milestone, group: old_group)}
- let(:project_milestone) { create(:milestone, project: project)}
+ let(:group_milestone) { create(:milestone, group: old_group) }
+ let(:group_milestone2) { create(:milestone, group: old_group) }
+ let(:project_milestone) { create(:milestone, project: project) }
let!(:issue_with_group_milestone) { create(:issue, project: project, milestone: group_milestone) }
let!(:issue_with_project_milestone) { create(:issue, project: project, milestone: project_milestone) }
let!(:mr_with_group_milestone) { create(:merge_request, source_project: project, source_branch: 'branch-1', milestone: group_milestone) }
@@ -43,7 +43,7 @@ RSpec.describe Milestones::TransferService do
context 'when milestone is from an ancestor group' do
let(:old_group_ancestor) { create(:group) }
let(:old_group) { create(:group, parent: old_group_ancestor) }
- let(:group_milestone) { create(:milestone, group: old_group_ancestor)}
+ let(:group_milestone) { create(:milestone, group: old_group_ancestor) }
it 'recreates the missing group milestones at project level' do
expect { service.execute }.to change(project.milestones, :count).by(1)
diff --git a/spec/services/notes/copy_service_spec.rb b/spec/services/notes/copy_service_spec.rb
index ea47087b88f..f146a49e929 100644
--- a/spec/services/notes/copy_service_spec.rb
+++ b/spec/services/notes/copy_service_spec.rb
@@ -138,7 +138,7 @@ RSpec.describe Notes::CopyService do
context 'notes with upload' do
let(:uploader) { build(:file_uploader, project: from_noteable.project) }
- let(:text) { "Simple text with image: #{uploader.markdown_link} "}
+ let(:text) { "Simple text with image: #{uploader.markdown_link} " }
let!(:note) { create(:note, noteable: from_noteable, note: text, project: from_noteable.project) }
it 'rewrites note content correctly' do
diff --git a/spec/services/notification_service_spec.rb b/spec/services/notification_service_spec.rb
index 98fe8a40c61..b0b0ee8f879 100644
--- a/spec/services/notification_service_spec.rb
+++ b/spec/services/notification_service_spec.rb
@@ -2006,19 +2006,19 @@ RSpec.describe NotificationService, :mailer do
context 'participating' do
it_behaves_like 'participating by assignee notification' do
- let(:participant) { create(:user, username: 'user-participant')}
+ let(:participant) { create(:user, username: 'user-participant') }
let(:issuable) { merge_request }
let(:notification_trigger) { notification.new_merge_request(merge_request, @u_disabled) }
end
it_behaves_like 'participating by note notification' do
- let(:participant) { create(:user, username: 'user-participant')}
+ let(:participant) { create(:user, username: 'user-participant') }
let(:issuable) { merge_request }
let(:notification_trigger) { notification.new_merge_request(merge_request, @u_disabled) }
end
context 'by author' do
- let(:participant) { create(:user, username: 'user-participant')}
+ let(:participant) { create(:user, username: 'user-participant') }
before do
merge_request.author = participant
diff --git a/spec/services/packages/composer/create_package_service_spec.rb b/spec/services/packages/composer/create_package_service_spec.rb
index b04a6c8382f..26429a7b5d9 100644
--- a/spec/services/packages/composer/create_package_service_spec.rb
+++ b/spec/services/packages/composer/create_package_service_spec.rb
@@ -88,7 +88,7 @@ RSpec.describe Packages::Composer::CreatePackageService do
end
context 'belonging to another project' do
- let(:other_project) { create(:project)}
+ let(:other_project) { create(:project) }
let!(:other_package) { create(:composer_package, name: package_name, version: 'dev-master', project: other_project) }
it 'fails with an error' do
diff --git a/spec/services/packages/create_dependency_service_spec.rb b/spec/services/packages/create_dependency_service_spec.rb
index 55414ea68fe..f95e21cd045 100644
--- a/spec/services/packages/create_dependency_service_spec.rb
+++ b/spec/services/packages/create_dependency_service_spec.rb
@@ -3,7 +3,7 @@ require 'spec_helper'
RSpec.describe Packages::CreateDependencyService do
describe '#execute' do
- let_it_be(:namespace) {create(:namespace)}
+ let_it_be(:namespace) { create(:namespace) }
let_it_be(:version) { '1.0.1' }
let_it_be(:package_name) { "@#{namespace.path}/my-app" }
diff --git a/spec/services/packages/debian/extract_deb_metadata_service_spec.rb b/spec/services/packages/debian/extract_deb_metadata_service_spec.rb
index ee3f3d179dc..66a9ca5f9e0 100644
--- a/spec/services/packages/debian/extract_deb_metadata_service_spec.rb
+++ b/spec/services/packages/debian/extract_deb_metadata_service_spec.rb
@@ -31,7 +31,7 @@ RSpec.describe Packages::Debian::ExtractDebMetadataService do
let(:file_name) { 'README.md' }
it 'raise error' do
- expect {subject.execute}.to raise_error(described_class::CommandFailedError, /is not a Debian format archive/i)
+ expect { subject.execute }.to raise_error(described_class::CommandFailedError, /is not a Debian format archive/i)
end
end
end
diff --git a/spec/services/packages/debian/extract_metadata_service_spec.rb b/spec/services/packages/debian/extract_metadata_service_spec.rb
index e3911dbbfe0..02c81ad1644 100644
--- a/spec/services/packages/debian/extract_metadata_service_spec.rb
+++ b/spec/services/packages/debian/extract_metadata_service_spec.rb
@@ -11,15 +11,10 @@ RSpec.describe Packages::Debian::ExtractMetadataService do
end
RSpec.shared_examples 'Test Debian ExtractMetadata Service' do |expected_file_type, expected_architecture, expected_fields|
- it "returns file_type #{expected_file_type.inspect}" do
+ it "returns file_type #{expected_file_type.inspect}, architecture #{expected_architecture.inspect} and fields #{expected_fields.nil? ? '' : 'including '}#{expected_fields.inspect}", :aggregate_failures do
expect(subject[:file_type]).to eq(expected_file_type)
- end
-
- it "returns architecture #{expected_architecture.inspect}" do
expect(subject[:architecture]).to eq(expected_architecture)
- end
- it "returns fields #{expected_fields.nil? ? '' : 'including '}#{expected_fields.inspect}" do
if expected_fields.nil?
expect(subject[:fields]).to be_nil
else
diff --git a/spec/services/packages/debian/parse_debian822_service_spec.rb b/spec/services/packages/debian/parse_debian822_service_spec.rb
index cad4e81f350..ff146fda250 100644
--- a/spec/services/packages/debian/parse_debian822_service_spec.rb
+++ b/spec/services/packages/debian/parse_debian822_service_spec.rb
@@ -102,7 +102,7 @@ RSpec.describe Packages::Debian::ParseDebian822Service do
let(:input) { ' continuation' }
it 'raise error' do
- expect {subject.execute}.to raise_error(described_class::InvalidDebian822Error, 'Parse error. Unexpected continuation line')
+ expect { subject.execute }.to raise_error(described_class::InvalidDebian822Error, 'Parse error. Unexpected continuation line')
end
end
@@ -116,7 +116,7 @@ RSpec.describe Packages::Debian::ParseDebian822Service do
end
it 'raise error' do
- expect {subject.execute}.to raise_error(described_class::InvalidDebian822Error, "Duplicate field 'Source' in section 'Package: libsample0'")
+ expect { subject.execute }.to raise_error(described_class::InvalidDebian822Error, "Duplicate field 'Source' in section 'Package: libsample0'")
end
end
@@ -128,7 +128,7 @@ RSpec.describe Packages::Debian::ParseDebian822Service do
end
it 'raise error' do
- expect {subject.execute}.to raise_error(described_class::InvalidDebian822Error, 'Parse error on line Hello')
+ expect { subject.execute }.to raise_error(described_class::InvalidDebian822Error, 'Parse error on line Hello')
end
end
@@ -142,7 +142,7 @@ RSpec.describe Packages::Debian::ParseDebian822Service do
end
it 'raise error' do
- expect {subject.execute}.to raise_error(described_class::InvalidDebian822Error, "Duplicate section 'Package: libsample0'")
+ expect { subject.execute }.to raise_error(described_class::InvalidDebian822Error, "Duplicate section 'Package: libsample0'")
end
end
end
diff --git a/spec/services/packages/debian/sign_distribution_service_spec.rb b/spec/services/packages/debian/sign_distribution_service_spec.rb
index 2aec0e50636..fc070b6e45e 100644
--- a/spec/services/packages/debian/sign_distribution_service_spec.rb
+++ b/spec/services/packages/debian/sign_distribution_service_spec.rb
@@ -30,7 +30,7 @@ RSpec.describe Packages::Debian::SignDistributionService do
end
context 'with an existing key' do
- let!(:key) { create("debian_#{container_type}_distribution_key", distribution: distribution)}
+ let!(:key) { create("debian_#{container_type}_distribution_key", distribution: distribution) }
it 'returns the content signed', :aggregate_failures do
expect(Packages::Debian::GenerateDistributionKeyService).not_to receive(:new)
diff --git a/spec/services/packages/helm/process_file_service_spec.rb b/spec/services/packages/helm/process_file_service_spec.rb
index d22c1de2335..1be0153a4a5 100644
--- a/spec/services/packages/helm/process_file_service_spec.rb
+++ b/spec/services/packages/helm/process_file_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Packages::Helm::ProcessFileService do
- let(:package) { create(:helm_package, without_package_files: true, status: 'processing')}
+ let(:package) { create(:helm_package, without_package_files: true, status: 'processing') }
let!(:package_file) { create(:helm_package_file, without_loaded_metadatum: true, package: package) }
let(:channel) { 'stable' }
let(:service) { described_class.new(channel, package_file) }
diff --git a/spec/services/packages/npm/create_package_service_spec.rb b/spec/services/packages/npm/create_package_service_spec.rb
index 5b41055397b..a3e59913918 100644
--- a/spec/services/packages/npm/create_package_service_spec.rb
+++ b/spec/services/packages/npm/create_package_service_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Packages::Npm::CreatePackageService do
- let(:namespace) {create(:namespace)}
+ let(:namespace) { create(:namespace) }
let(:project) { create(:project, namespace: namespace) }
let(:user) { create(:user) }
let(:version) { '1.0.1' }
@@ -129,7 +129,7 @@ RSpec.describe Packages::Npm::CreatePackageService do
end
describe 'max file size validation' do
- let(:max_file_size) { 5.bytes}
+ let(:max_file_size) { 5.bytes }
shared_examples_for 'max file size validation failure' do
it 'returns a 400 error', :aggregate_failures do
@@ -160,7 +160,7 @@ RSpec.describe Packages::Npm::CreatePackageService do
end
context "when encoded package data is padded with '='" do
- let(:max_file_size) { 4.bytes}
+ let(:max_file_size) { 4.bytes }
# 'Hello' (size = 5 bytes) => 'SGVsbG8='
let(:encoded_package_data) { 'SGVsbG8=' }
@@ -168,7 +168,7 @@ RSpec.describe Packages::Npm::CreatePackageService do
end
context "when encoded package data is padded with '=='" do
- let(:max_file_size) { 3.bytes}
+ let(:max_file_size) { 3.bytes }
# 'Hell' (size = 4 bytes) => 'SGVsbA=='
let(:encoded_package_data) { 'SGVsbA==' }
diff --git a/spec/services/packages/rubygems/dependency_resolver_service_spec.rb b/spec/services/packages/rubygems/dependency_resolver_service_spec.rb
index f23ed0e5fbc..bb84e0cd361 100644
--- a/spec/services/packages/rubygems/dependency_resolver_service_spec.rb
+++ b/spec/services/packages/rubygems/dependency_resolver_service_spec.rb
@@ -47,9 +47,9 @@ RSpec.describe Packages::Rubygems::DependencyResolverService do
end
context 'package with dependencies' do
- let(:dependency_link) { create(:packages_dependency_link, :rubygems, package: package)}
- let(:dependency_link2) { create(:packages_dependency_link, :rubygems, package: package)}
- let(:dependency_link3) { create(:packages_dependency_link, :rubygems, package: package)}
+ let(:dependency_link) { create(:packages_dependency_link, :rubygems, package: package) }
+ let(:dependency_link2) { create(:packages_dependency_link, :rubygems, package: package) }
+ let(:dependency_link3) { create(:packages_dependency_link, :rubygems, package: package) }
it 'returns a set of dependencies' do
expected_result = [{
@@ -68,11 +68,11 @@ RSpec.describe Packages::Rubygems::DependencyResolverService do
end
context 'package with multiple versions' do
- let(:dependency_link) { create(:packages_dependency_link, :rubygems, package: package)}
- let(:dependency_link2) { create(:packages_dependency_link, :rubygems, package: package)}
- let(:dependency_link3) { create(:packages_dependency_link, :rubygems, package: package)}
+ let(:dependency_link) { create(:packages_dependency_link, :rubygems, package: package) }
+ let(:dependency_link2) { create(:packages_dependency_link, :rubygems, package: package) }
+ let(:dependency_link3) { create(:packages_dependency_link, :rubygems, package: package) }
let(:package2) { create(:package, project: project, name: package.name, version: '9.9.9') }
- let(:dependency_link4) { create(:packages_dependency_link, :rubygems, package: package2)}
+ let(:dependency_link4) { create(:packages_dependency_link, :rubygems, package: package2) }
it 'returns a set of dependencies' do
expected_result = [{
diff --git a/spec/services/pages/delete_service_spec.rb b/spec/services/pages/delete_service_spec.rb
index 29d9a47c72e..8b9e72ac9b1 100644
--- a/spec/services/pages/delete_service_spec.rb
+++ b/spec/services/pages/delete_service_spec.rb
@@ -5,8 +5,8 @@ require 'spec_helper'
RSpec.describe Pages::DeleteService do
let_it_be(:admin) { create(:admin) }
- let(:project) { create(:project, path: "my.project")}
- let(:service) { described_class.new(project, admin)}
+ let(:project) { create(:project, path: "my.project") }
+ let(:service) { described_class.new(project, admin) }
before do
project.mark_pages_as_deployed
diff --git a/spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb b/spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb
index 22cada7816b..4de36452684 100644
--- a/spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb
+++ b/spec/services/projects/container_repository/third_party/delete_tags_service_spec.rb
@@ -58,7 +58,7 @@ RSpec.describe Projects::ContainerRepository::ThirdParty::DeleteTagsService do
stub_put_manifest_request('Ba', 500, {})
end
- it { is_expected.to eq(status: :error, message: "could not delete tags: #{tags.join(', ')}")}
+ it { is_expected.to eq(status: :error, message: "could not delete tags: #{tags.join(', ')}") }
context 'when a large list of tag updates fails' do
let(:tags) { Array.new(1000) { |i| "tag_#{i}" } }
diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb
index 9486f69fa01..e112c1e2497 100644
--- a/spec/services/projects/create_service_spec.rb
+++ b/spec/services/projects/create_service_spec.rb
@@ -253,6 +253,39 @@ RSpec.describe Projects::CreateService, '#execute' do
end
end
+ context 'user with project limit' do
+ let_it_be(:user_with_projects_limit) { create(:user, projects_limit: 0) }
+
+ let(:params) { opts.merge!(namespace_id: target_namespace.id) }
+
+ subject(:project) { create_project(user_with_projects_limit, params) }
+
+ context 'under personal namespace' do
+ let(:target_namespace) { user_with_projects_limit.namespace }
+
+ it 'cannot create a project' do
+ expect(project.errors.errors.length).to eq 1
+ expect(project.errors.messages[:limit_reached].first).to eq(_('Personal project creation is not allowed. Please contact your administrator with questions'))
+ end
+ end
+
+ context 'under group namespace' do
+ let_it_be(:group) do
+ create(:group).tap do |group|
+ group.add_owner(user_with_projects_limit)
+ end
+ end
+
+ let(:target_namespace) { group }
+
+ it 'can create a project' do
+ expect(project).to be_valid
+ expect(project).to be_saved
+ expect(project.errors.errors.length).to eq 0
+ end
+ end
+ end
+
context 'membership overrides', :sidekiq_inline do
let_it_be(:group) { create(:group, :private) }
let_it_be(:subgroup_for_projects) { create(:group, :private, parent: group) }
diff --git a/spec/services/projects/enable_deploy_key_service_spec.rb b/spec/services/projects/enable_deploy_key_service_spec.rb
index f297ec374cf..c0b3992037e 100644
--- a/spec/services/projects/enable_deploy_key_service_spec.rb
+++ b/spec/services/projects/enable_deploy_key_service_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
RSpec.describe Projects::EnableDeployKeyService do
let(:deploy_key) { create(:deploy_key, public: true) }
let(:project) { create(:project) }
- let(:user) { project.creator}
+ let(:user) { project.creator }
let!(:params) { { key_id: deploy_key.id } }
it 'enables the key' do
diff --git a/spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb b/spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb
index 047ebe65dff..d472d6493c3 100644
--- a/spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb
+++ b/spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Projects::LfsPointers::LfsDownloadLinkListService do
let(:lfs_endpoint) { "#{import_url}/info/lfs/objects/batch" }
let!(:project) { create(:project, import_url: import_url) }
let(:new_oids) { { 'oid1' => 123, 'oid2' => 125 } }
- let(:headers) { { 'X-Some-Header' => '456' }}
+ let(:headers) { { 'X-Some-Header' => '456' } }
let(:remote_uri) { URI.parse(lfs_endpoint) }
let(:request_object) { HTTParty::Request.new(Net::HTTP::Post, '/') }
diff --git a/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb b/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb
index 04c6349bf52..b67b4d64c1d 100644
--- a/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb
+++ b/spec/services/projects/lfs_pointers/lfs_download_service_spec.rb
@@ -250,7 +250,7 @@ RSpec.describe Projects::LfsPointers::LfsDownloadService do
end
context 'that is not blocked' do
- let(:redirect_link) { "http://example.com/"}
+ let(:redirect_link) { "http://example.com/" }
before do
stub_full_request(download_link).to_return(status: 301, headers: { 'Location' => redirect_link })
diff --git a/spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb b/spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb
index 981d7027a17..adcc2b85706 100644
--- a/spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb
+++ b/spec/services/projects/lfs_pointers/lfs_object_download_list_service_spec.rb
@@ -3,8 +3,8 @@ require 'spec_helper'
RSpec.describe Projects::LfsPointers::LfsObjectDownloadListService do
let(:import_url) { 'http://www.gitlab.com/demo/repo.git' }
- let(:default_endpoint) { "#{import_url}/info/lfs/objects/batch"}
- let(:group) { create(:group, lfs_enabled: true)}
+ let(:default_endpoint) { "#{import_url}/info/lfs/objects/batch" }
+ let(:group) { create(:group, lfs_enabled: true) }
let!(:project) { create(:project, namespace: group, import_url: import_url, lfs_enabled: true) }
let!(:lfs_objects_project) { create_list(:lfs_objects_project, 2, project: project) }
let!(:existing_lfs_objects) { LfsObject.pluck(:oid, :size).to_h }
@@ -75,7 +75,7 @@ RSpec.describe Projects::LfsPointers::LfsObjectDownloadListService do
end
context 'when import url has credentials' do
- let(:import_url) { 'http://user:password@www.gitlab.com/demo/repo.git'}
+ let(:import_url) { 'http://user:password@www.gitlab.com/demo/repo.git' }
it 'adds the credentials to the new endpoint' do
expect(Projects::LfsPointers::LfsDownloadLinkListService)
diff --git a/spec/services/projects/participants_service_spec.rb b/spec/services/projects/participants_service_spec.rb
index 61edfd23700..fc745cd669f 100644
--- a/spec/services/projects/participants_service_spec.rb
+++ b/spec/services/projects/participants_service_spec.rb
@@ -107,7 +107,7 @@ RSpec.describe Projects::ParticipantsService do
shared_examples 'return project members' do
context 'when there is a project in group namespace' do
let_it_be(:public_group) { create(:group, :public) }
- let_it_be(:public_project) { create(:project, :public, namespace: public_group)}
+ let_it_be(:public_project) { create(:project, :public, namespace: public_group) }
let_it_be(:public_group_owner) { create(:user) }
@@ -125,9 +125,9 @@ RSpec.describe Projects::ParticipantsService do
context 'when there is a private group and a public project' do
let_it_be(:public_group) { create(:group, :public) }
let_it_be(:private_group) { create(:group, :private, :nested) }
- let_it_be(:public_project) { create(:project, :public, namespace: public_group)}
+ let_it_be(:public_project) { create(:project, :public, namespace: public_group) }
- let_it_be(:project_issue) { create(:issue, project: public_project)}
+ let_it_be(:project_issue) { create(:issue, project: public_project) }
let_it_be(:public_group_owner) { create(:user) }
let_it_be(:private_group_member) { create(:user) }
diff --git a/spec/services/projects/update_statistics_service_spec.rb b/spec/services/projects/update_statistics_service_spec.rb
index 6987185b549..1cc69e7e2fe 100644
--- a/spec/services/projects/update_statistics_service_spec.rb
+++ b/spec/services/projects/update_statistics_service_spec.rb
@@ -5,7 +5,7 @@ require 'spec_helper'
RSpec.describe Projects::UpdateStatisticsService do
using RSpec::Parameterized::TableSyntax
- let(:service) { described_class.new(project, nil, statistics: statistics)}
+ let(:service) { described_class.new(project, nil, statistics: statistics) }
let(:statistics) { %w(repository_size) }
describe '#execute' do
diff --git a/spec/services/quick_actions/interpret_service_spec.rb b/spec/services/quick_actions/interpret_service_spec.rb
index 3f11eaa7e93..ae36871fcde 100644
--- a/spec/services/quick_actions/interpret_service_spec.rb
+++ b/spec/services/quick_actions/interpret_service_spec.rb
@@ -1888,7 +1888,7 @@ RSpec.describe QuickActions::InterpretService do
context '/target_branch command' do
let(:non_empty_project) { create(:project, :repository) }
let(:another_merge_request) { create(:merge_request, author: developer, source_project: non_empty_project) }
- let(:service) { described_class.new(non_empty_project, developer)}
+ let(:service) { described_class.new(non_empty_project, developer) }
it 'updates target_branch if /target_branch command is executed' do
_, updates, _ = service.execute('/target_branch merge-test', merge_request)
diff --git a/spec/services/releases/destroy_service_spec.rb b/spec/services/releases/destroy_service_spec.rb
index bc5bff0b31d..46550ac5bef 100644
--- a/spec/services/releases/destroy_service_spec.rb
+++ b/spec/services/releases/destroy_service_spec.rb
@@ -39,7 +39,7 @@ RSpec.describe Releases::DestroyService do
end
context 'when release is not found' do
- let!(:release) { }
+ let!(:release) {}
it 'returns an error' do
is_expected.to include(status: :error,
diff --git a/spec/services/releases/update_service_spec.rb b/spec/services/releases/update_service_spec.rb
index 932a7fab5ec..7461470a844 100644
--- a/spec/services/releases/update_service_spec.rb
+++ b/spec/services/releases/update_service_spec.rb
@@ -45,7 +45,7 @@ RSpec.describe Releases::UpdateService do
end
context 'when the release does not exist' do
- let!(:release) { }
+ let!(:release) {}
it_behaves_like 'a failed update'
end
diff --git a/spec/services/resource_access_tokens/create_service_spec.rb b/spec/services/resource_access_tokens/create_service_spec.rb
index 127948549b0..442232920f9 100644
--- a/spec/services/resource_access_tokens/create_service_spec.rb
+++ b/spec/services/resource_access_tokens/create_service_spec.rb
@@ -16,7 +16,7 @@ RSpec.describe ResourceAccessTokens::CreateService do
describe '#execute' do
shared_examples 'token creation fails' do
- let(:resource) { create(:project)}
+ let(:resource) { create(:project) }
it 'does not add the project bot as a member' do
expect { subject }.not_to change { resource.members.count }
diff --git a/spec/services/search/group_service_spec.rb b/spec/services/search/group_service_spec.rb
index 7beeec98b23..152d0700cc1 100644
--- a/spec/services/search/group_service_spec.rb
+++ b/spec/services/search/group_service_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe Search::GroupService do
# These projects shouldn't be found
let!(:outside_project) { create(:project, :public, name: "Outside #{term}") }
- let!(:private_project) { create(:project, :private, namespace: nested_group, name: "Private #{term}" )}
+ let!(:private_project) { create(:project, :private, namespace: nested_group, name: "Private #{term}" ) }
let!(:other_project) { create(:project, :public, namespace: nested_group, name: term.reverse) }
# These projects should be found
diff --git a/spec/services/snippets/update_service_spec.rb b/spec/services/snippets/update_service_spec.rb
index f61d33e2436..67cc258b4b6 100644
--- a/spec/services/snippets/update_service_spec.rb
+++ b/spec/services/snippets/update_service_spec.rb
@@ -140,7 +140,7 @@ RSpec.describe Snippets::UpdateService do
context 'when snippet_actions param is used' do
let(:file_path) { 'CHANGELOG' }
- let(:created_file_path) { 'New file'}
+ let(:created_file_path) { 'New file' }
let(:content) { 'foobar' }
let(:snippet_actions) { [{ action: :move, previous_path: snippet.file_name, file_path: file_path }, { action: :create, file_path: created_file_path, content: content }] }
let(:base_opts) do
diff --git a/spec/services/suggestions/apply_service_spec.rb b/spec/services/suggestions/apply_service_spec.rb
index 6052882813e..e34324d5fe2 100644
--- a/spec/services/suggestions/apply_service_spec.rb
+++ b/spec/services/suggestions/apply_service_spec.rb
@@ -359,7 +359,7 @@ RSpec.describe Suggestions::ApplyService do
end
context 'multiple suggestions' do
- let(:author_emails) { suggestions.map {|s| s.note.author.commit_email_or_default } }
+ let(:author_emails) { suggestions.map { |s| s.note.author.commit_email_or_default } }
let(:first_author) { suggestion.note.author }
let(:commit) { project.repository.commit }
diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb
index 2a6adef2155..81c48fb6e15 100644
--- a/spec/services/system_note_service_spec.rb
+++ b/spec/services/system_note_service_spec.rb
@@ -434,7 +434,7 @@ RSpec.describe SystemNoteService do
describe '.created_timelog' do
let(:issue) { create(:issue, project: project) }
- let(:timelog) { create(:timelog, user: author, issue: issue, time_spent: 1800)}
+ let(:timelog) { create(:timelog, user: author, issue: issue, time_spent: 1800) }
it 'calls TimeTrackingService' do
expect_next_instance_of(::SystemNotes::TimeTrackingService) do |service|
@@ -447,7 +447,7 @@ RSpec.describe SystemNoteService do
describe '.remove_timelog' do
let(:issue) { create(:issue, project: project) }
- let(:timelog) { create(:timelog, user: author, issue: issue, time_spent: 1800)}
+ let(:timelog) { create(:timelog, user: author, issue: issue, time_spent: 1800) }
it 'calls TimeTrackingService' do
expect_next_instance_of(::SystemNotes::TimeTrackingService) do |service|
diff --git a/spec/services/system_notes/merge_requests_service_spec.rb b/spec/services/system_notes/merge_requests_service_spec.rb
index 58d2489f878..3e66ccef106 100644
--- a/spec/services/system_notes/merge_requests_service_spec.rb
+++ b/spec/services/system_notes/merge_requests_service_spec.rb
@@ -167,8 +167,8 @@ RSpec.describe ::SystemNotes::MergeRequestsService do
end
describe '.change_branch' do
- let(:old_branch) { 'old_branch'}
- let(:new_branch) { 'new_branch'}
+ let(:old_branch) { 'old_branch' }
+ let(:new_branch) { 'new_branch' }
it_behaves_like 'a system note' do
let(:action) { 'branch' }
diff --git a/spec/services/system_notes/time_tracking_service_spec.rb b/spec/services/system_notes/time_tracking_service_spec.rb
index 65e8632b3ba..be86e8cf388 100644
--- a/spec/services/system_notes/time_tracking_service_spec.rb
+++ b/spec/services/system_notes/time_tracking_service_spec.rb
@@ -112,7 +112,7 @@ RSpec.describe ::SystemNotes::TimeTrackingService do
context 'when the timelog has a positive time spent value' do
let_it_be(:noteable, reload: true) { create(:issue, project: project) }
- let(:timelog) { create(:timelog, user: author, issue: noteable, time_spent: 1800, spent_at: '2022-03-30T00:00:00.000Z')}
+ let(:timelog) { create(:timelog, user: author, issue: noteable, time_spent: 1800, spent_at: '2022-03-30T00:00:00.000Z') }
it 'sets the note text' do
expect(subject.note).to eq "added 30m of time spent at 2022-03-30"
@@ -122,7 +122,7 @@ RSpec.describe ::SystemNotes::TimeTrackingService do
context 'when the timelog has a negative time spent value' do
let_it_be(:noteable, reload: true) { create(:issue, project: project) }
- let(:timelog) { create(:timelog, user: author, issue: noteable, time_spent: -1800, spent_at: '2022-03-30T00:00:00.000Z')}
+ let(:timelog) { create(:timelog, user: author, issue: noteable, time_spent: -1800, spent_at: '2022-03-30T00:00:00.000Z') }
it 'sets the note text' do
expect(subject.note).to eq "subtracted 30m of time spent at 2022-03-30"
@@ -136,7 +136,7 @@ RSpec.describe ::SystemNotes::TimeTrackingService do
context 'when the timelog has a positive time spent value' do
let_it_be(:noteable, reload: true) { create(:issue, project: project) }
- let(:timelog) { create(:timelog, user: author, issue: noteable, time_spent: 1800, spent_at: '2022-03-30T00:00:00.000Z')}
+ let(:timelog) { create(:timelog, user: author, issue: noteable, time_spent: 1800, spent_at: '2022-03-30T00:00:00.000Z') }
it 'sets the note text' do
expect(subject.note).to eq "deleted 30m of spent time from 2022-03-30"
@@ -146,7 +146,7 @@ RSpec.describe ::SystemNotes::TimeTrackingService do
context 'when the timelog has a negative time spent value' do
let_it_be(:noteable, reload: true) { create(:issue, project: project) }
- let(:timelog) { create(:timelog, user: author, issue: noteable, time_spent: -1800, spent_at: '2022-03-30T00:00:00.000Z')}
+ let(:timelog) { create(:timelog, user: author, issue: noteable, time_spent: -1800, spent_at: '2022-03-30T00:00:00.000Z') }
it 'sets the note text' do
expect(subject.note).to eq "deleted -30m of spent time from 2022-03-30"
diff --git a/spec/services/terraform/remote_state_handler_spec.rb b/spec/services/terraform/remote_state_handler_spec.rb
index 19c1d4109e9..369309e4d5a 100644
--- a/spec/services/terraform/remote_state_handler_spec.rb
+++ b/spec/services/terraform/remote_state_handler_spec.rb
@@ -171,7 +171,7 @@ RSpec.describe Terraform::RemoteStateHandler do
end
context 'with no lock ID (force-unlock)' do
- let(:lock_id) { }
+ let(:lock_id) {}
it 'unlocks the state' do
state = handler.unlock!
diff --git a/spec/services/timelogs/delete_service_spec.rb b/spec/services/timelogs/delete_service_spec.rb
index 6f70bf0b68d..ee1133af6b3 100644
--- a/spec/services/timelogs/delete_service_spec.rb
+++ b/spec/services/timelogs/delete_service_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Timelogs::DeleteService do
let_it_be(:author) { create(:user) }
let_it_be(:project) { create(:project, :public) }
let_it_be(:issue) { create(:issue, project: project) }
- let_it_be(:timelog) { create(:timelog, user: author, issue: issue, time_spent: 1800)}
+ let_it_be(:timelog) { create(:timelog, user: author, issue: issue, time_spent: 1800) }
let(:service) { described_class.new(timelog, user) }
@@ -49,7 +49,7 @@ RSpec.describe Timelogs::DeleteService do
context 'when the timelog deletion fails' do
let(:user) { author }
- let!(:timelog) { create(:timelog, user: author, issue: issue, time_spent: 1800)}
+ let!(:timelog) { create(:timelog, user: author, issue: issue, time_spent: 1800) }
before do
allow(timelog).to receive(:destroy).and_return(false)
diff --git a/spec/services/todo_service_spec.rb b/spec/services/todo_service_spec.rb
index 1cb44366457..5188f10f9a0 100644
--- a/spec/services/todo_service_spec.rb
+++ b/spec/services/todo_service_spec.rb
@@ -207,7 +207,7 @@ RSpec.describe TodoService do
end
it_behaves_like 'an incident management tracked event', :incident_management_incident_todo do
- let(:current_user) { john_doe}
+ let(:current_user) { john_doe }
end
end
end
@@ -1139,7 +1139,7 @@ RSpec.describe TodoService do
it 'updates related todos for the user with the new_state' do
method_call
- expect(collection.all? { |todo| todo.reload.state?(new_state)}).to be_truthy
+ expect(collection.all? { |todo| todo.reload.state?(new_state) }).to be_truthy
end
if new_resolved_by
diff --git a/spec/services/todos/destroy/design_service_spec.rb b/spec/services/todos/destroy/design_service_spec.rb
index 61a6718dc9d..92b25d94dc6 100644
--- a/spec/services/todos/destroy/design_service_spec.rb
+++ b/spec/services/todos/destroy/design_service_spec.rb
@@ -9,8 +9,8 @@ RSpec.describe Todos::Destroy::DesignService do
let_it_be(:design_2) { create(:design) }
let_it_be(:design_3) { create(:design) }
- let_it_be(:create_action) { create(:design_action, design: design)}
- let_it_be(:create_action_2) { create(:design_action, design: design_2)}
+ let_it_be(:create_action) { create(:design_action, design: design) }
+ let_it_be(:create_action_2) { create(:design_action, design: design_2) }
describe '#execute' do
before do
@@ -23,8 +23,8 @@ RSpec.describe Todos::Destroy::DesignService do
subject { described_class.new([design.id, design_2.id, design_3.id]).execute }
context 'when the design has been archived' do
- let_it_be(:archive_action) { create(:design_action, design: design, event: :deletion)}
- let_it_be(:archive_action_2) { create(:design_action, design: design_3, event: :deletion)}
+ let_it_be(:archive_action) { create(:design_action, design: design, event: :deletion) }
+ let_it_be(:archive_action_2) { create(:design_action, design: design_3, event: :deletion) }
it 'removes todos for that design' do
expect { subject }.to change { Todo.count }.from(4).to(1)
diff --git a/spec/services/web_hook_service_spec.rb b/spec/services/web_hook_service_spec.rb
index 339ffc44e4d..fed3ae7a543 100644
--- a/spec/services/web_hook_service_spec.rb
+++ b/spec/services/web_hook_service_spec.rb
@@ -190,7 +190,7 @@ RSpec.describe WebHookService, :request_store, :clean_gitlab_redis_shared_state
end
context 'when auth credentials are present' do
- let_it_be(:url) {'https://example.org'}
+ let_it_be(:url) { 'https://example.org' }
let_it_be(:project_hook) { create(:project_hook, url: 'https://demo:demo@example.org/') }
it 'uses the credentials' do
@@ -205,7 +205,7 @@ RSpec.describe WebHookService, :request_store, :clean_gitlab_redis_shared_state
end
context 'when auth credentials are partial present' do
- let_it_be(:url) {'https://example.org'}
+ let_it_be(:url) { 'https://example.org' }
let_it_be(:project_hook) { create(:project_hook, url: 'https://demo@example.org/') }
it 'uses the credentials anyways' do
diff --git a/spec/services/work_items/create_service_spec.rb b/spec/services/work_items/create_service_spec.rb
index 4009c85bacd..92da0c8f227 100644
--- a/spec/services/work_items/create_service_spec.rb
+++ b/spec/services/work_items/create_service_spec.rb
@@ -170,7 +170,7 @@ RSpec.describe WorkItems::CreateService do
let_it_be(:parent) { create(:work_item, :task, project: project) }
it_behaves_like 'fails creating work item and returns errors' do
- let(:error_message) { 'only Issue and Incident can be parent of Task.'}
+ let(:error_message) { 'only Issue and Incident can be parent of Task.' }
end
end
@@ -197,7 +197,7 @@ RSpec.describe WorkItems::CreateService do
end
it_behaves_like 'fails creating work item and returns errors' do
- let(:error_message) { 'No matching task found. Make sure that you are adding a valid task ID.'}
+ let(:error_message) { 'No matching task found. Make sure that you are adding a valid task ID.' }
end
end
end
diff --git a/spec/services/work_items/parent_links/create_service_spec.rb b/spec/services/work_items/parent_links/create_service_spec.rb
index ccd23977149..0ba41373544 100644
--- a/spec/services/work_items/parent_links/create_service_spec.rb
+++ b/spec/services/work_items/parent_links/create_service_spec.rb
@@ -12,10 +12,10 @@ RSpec.describe WorkItems::ParentLinks::CreateService do
let_it_be(:task1) { create(:work_item, :task, project: project) }
let_it_be(:task2) { create(:work_item, :task, project: project) }
let_it_be(:guest_task) { create(:work_item, :task) }
- let_it_be(:invalid_task) { build_stubbed(:work_item, :task, id: non_existing_record_id)}
+ let_it_be(:invalid_task) { build_stubbed(:work_item, :task, id: non_existing_record_id) }
let_it_be(:another_project) { (create :project) }
let_it_be(:other_project_task) { create(:work_item, :task, iid: 100, project: another_project) }
- let_it_be(:existing_parent_link) { create(:parent_link, work_item: task, work_item_parent: work_item)}
+ let_it_be(:existing_parent_link) { create(:parent_link, work_item: task, work_item_parent: work_item) }
let(:parent_link_class) { WorkItems::ParentLink }
let(:issuable_type) { :task }
diff --git a/spec/services/work_items/parent_links/destroy_service_spec.rb b/spec/services/work_items/parent_links/destroy_service_spec.rb
index 497f7b67266..654a03ef6f7 100644
--- a/spec/services/work_items/parent_links/destroy_service_spec.rb
+++ b/spec/services/work_items/parent_links/destroy_service_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe WorkItems::ParentLinks::DestroyService do
let_it_be(:project) { create(:project) }
let_it_be(:work_item) { create(:work_item, project: project) }
let_it_be(:task) { create(:work_item, :task, project: project) }
- let_it_be(:parent_link) { create(:parent_link, work_item: task, work_item_parent: work_item)}
+ let_it_be(:parent_link) { create(:parent_link, work_item: task, work_item_parent: work_item) }
let(:parent_link_class) { WorkItems::ParentLink }
diff --git a/spec/services/work_items/widgets/description_service/update_service_spec.rb b/spec/services/work_items/widgets/description_service/update_service_spec.rb
index 37b3f03fc6a..582d9dc85f7 100644
--- a/spec/services/work_items/widgets/description_service/update_service_spec.rb
+++ b/spec/services/work_items/widgets/description_service/update_service_spec.rb
@@ -17,7 +17,7 @@ RSpec.describe WorkItems::Widgets::DescriptionService::UpdateService do
)
end
- let(:widget) { work_item.widgets.find {|widget| widget.is_a?(WorkItems::Widgets::Description) } }
+ let(:widget) { work_item.widgets.find { |widget| widget.is_a?(WorkItems::Widgets::Description) } }
describe '#update' do
subject { described_class.new(widget: widget, current_user: current_user).before_update_callback(params: params) }
diff --git a/spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb b/spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb
index 4e155d18fc0..9a425d5308c 100644
--- a/spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb
+++ b/spec/services/work_items/widgets/hierarchy_service/update_service_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe WorkItems::Widgets::HierarchyService::UpdateService do
let_it_be(:child_work_item) { create(:work_item, :task, project: project) }
let_it_be(:existing_link) { create(:parent_link, work_item: child_work_item, work_item_parent: work_item) }
- let(:widget) { work_item.widgets.find {|widget| widget.is_a?(WorkItems::Widgets::Hierarchy) } }
+ let(:widget) { work_item.widgets.find { |widget| widget.is_a?(WorkItems::Widgets::Hierarchy) } }
let(:not_found_error) { 'No matching task found. Make sure that you are adding a valid task ID.' }
shared_examples 'raises a WidgetError' do
@@ -43,7 +43,7 @@ RSpec.describe WorkItems::Widgets::HierarchyService::UpdateService do
let_it_be(:child_work_item4) { create(:work_item, :task, project: project) }
context 'when work_items_hierarchy feature flag is disabled' do
- let(:params) { { children: [child_work_item4] }}
+ let(:params) { { children: [child_work_item4] } }
before do
stub_feature_flags(work_items_hierarchy: false)
@@ -55,7 +55,7 @@ RSpec.describe WorkItems::Widgets::HierarchyService::UpdateService do
end
context 'when user has insufficient permissions to link work items' do
- let(:params) { { children: [child_work_item4] }}
+ let(:params) { { children: [child_work_item4] } }
it_behaves_like 'raises a WidgetError' do
let(:message) { not_found_error }
@@ -68,7 +68,7 @@ RSpec.describe WorkItems::Widgets::HierarchyService::UpdateService do
end
context 'with valid params' do
- let(:params) { { children: [child_work_item2, child_work_item3] }}
+ let(:params) { { children: [child_work_item2, child_work_item3] } }
it 'correctly sets work item parent' do
subject
@@ -79,7 +79,7 @@ RSpec.describe WorkItems::Widgets::HierarchyService::UpdateService do
end
context 'when child is already assigned' do
- let(:params) { { children: [child_work_item] }}
+ let(:params) { { children: [child_work_item] } }
it_behaves_like 'raises a WidgetError' do
let(:message) { 'Task(s) already assigned' }
@@ -89,7 +89,7 @@ RSpec.describe WorkItems::Widgets::HierarchyService::UpdateService do
context 'when child type is invalid' do
let_it_be(:child_issue) { create(:work_item, project: project) }
- let(:params) { { children: [child_issue] }}
+ let(:params) { { children: [child_issue] } }
it_behaves_like 'raises a WidgetError' do
let(:message) do
@@ -103,7 +103,7 @@ RSpec.describe WorkItems::Widgets::HierarchyService::UpdateService do
context 'when updating parent' do
let_it_be(:work_item) { create(:work_item, :task, project: project) }
- let(:params) {{ parent: parent_work_item } }
+ let(:params) { { parent: parent_work_item } }
context 'when work_items_hierarchy feature flag is disabled' do
before do
@@ -152,9 +152,9 @@ RSpec.describe WorkItems::Widgets::HierarchyService::UpdateService do
end
context 'when type is invalid' do
- let_it_be(:parent_task) { create(:work_item, :task, project: project)}
+ let_it_be(:parent_task) { create(:work_item, :task, project: project) }
- let(:params) {{ parent: parent_task } }
+ let(:params) { { parent: parent_task } }
it_behaves_like 'raises a WidgetError' do
let(:message) do
diff --git a/spec/uploaders/object_storage_spec.rb b/spec/uploaders/object_storage_spec.rb
index 1bcc43b81a8..a4f6116f7d7 100644
--- a/spec/uploaders/object_storage_spec.rb
+++ b/spec/uploaders/object_storage_spec.rb
@@ -256,8 +256,22 @@ RSpec.describe ObjectStorage do
describe '#use_open_file' do
context 'when file is stored locally' do
- it "returns the file" do
- expect { |b| uploader.use_open_file(&b) }.to yield_with_args(an_instance_of(ObjectStorage::Concern::OpenFile))
+ it "returns the file unlinked" do
+ expect { |b| uploader.use_open_file(&b) }.to yield_with_args(
+ satisfying do |f|
+ expect(f).to be_an_instance_of(ObjectStorage::Concern::OpenFile)
+ expect(f.file_path).to be_nil
+ end
+ )
+ end
+
+ it "returns the file not unlinked" do
+ expect { |b| uploader.use_open_file(unlink_early: false, &b) }.to yield_with_args(
+ satisfying do |f|
+ expect(f).to be_an_instance_of(ObjectStorage::Concern::OpenFile)
+ expect(File.exist?(f.file_path)).to be_truthy
+ end
+ )
end
end