diff --git a/.rubocop_todo/layout/hash_alignment.yml b/.rubocop_todo/layout/hash_alignment.yml index 11f9ee53e67..f6eeb3d533e 100644 --- a/.rubocop_todo/layout/hash_alignment.yml +++ b/.rubocop_todo/layout/hash_alignment.yml @@ -26,26 +26,6 @@ Layout/HashAlignment: - 'spec/controllers/projects/pipeline_schedules_controller_spec.rb' - 'spec/controllers/projects/registry/tags_controller_spec.rb' - 'spec/controllers/projects/service_desk_controller_spec.rb' - - 'spec/db/migration_spec.rb' - - 'spec/finders/ci/pipelines_for_merge_request_finder_spec.rb' - - 'spec/finders/group_descendants_finder_spec.rb' - - 'spec/finders/group_members_finder_spec.rb' - - 'spec/finders/template_finder_spec.rb' - - 'spec/graphql/mutations/releases/update_spec.rb' - - 'spec/graphql/resolvers/board_lists_resolver_spec.rb' - - 'spec/graphql/resolvers/ci/config_resolver_spec.rb' - - 'spec/graphql/resolvers/ci/group_runners_resolver_spec.rb' - - 'spec/graphql/resolvers/ci/jobs_resolver_spec.rb' - - 'spec/graphql/resolvers/ci/runners_resolver_spec.rb' - - 'spec/graphql/resolvers/container_repositories_resolver_spec.rb' - - 'spec/graphql/resolvers/container_repository_tags_resolver_spec.rb' - - 'spec/graphql/resolvers/design_management/versions_resolver_spec.rb' - - 'spec/graphql/resolvers/work_items_resolver_spec.rb' - - 'spec/helpers/ci/builds_helper_spec.rb' - - 'spec/helpers/sorting_helper_spec.rb' - - 'spec/helpers/storage_helper_spec.rb' - - 'spec/helpers/wiki_helper_spec.rb' - - 'spec/initializers/00_rails_disable_joins_spec.rb' - 'spec/lib/backup/gitaly_backup_spec.rb' - 'spec/lib/banzai/filter/repository_link_filter_spec.rb' - 'spec/lib/gitlab/asciidoc_spec.rb' @@ -96,26 +76,6 @@ Layout/HashAlignment: - 'spec/lib/gitlab/metrics/subscribers/action_view_spec.rb' - 'spec/lib/gitlab/metrics/subscribers/active_record_spec.rb' - 'spec/lib/gitlab/metrics/subscribers/load_balancing_spec.rb' - - 'spec/lib/gitlab/metrics/web_transaction_spec.rb' - - 'spec/lib/gitlab/omniauth_initializer_spec.rb' - - 'spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb' - - 'spec/lib/gitlab/sidekiq_death_handler_spec.rb' - - 'spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb' - - 'spec/lib/gitlab/slug/environment_spec.rb' - - 'spec/lib/gitlab/tracking_spec.rb' - - 'spec/lib/gitlab/usage_data/topology_spec.rb' - - 'spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb' - - 'spec/lib/gitlab/usage_data_counters/note_counter_spec.rb' - - 'spec/lib/gitlab/usage_data_spec.rb' - - 'spec/lib/gitlab/utils_spec.rb' - - 'spec/lib/gitlab/word_diff/parser_spec.rb' - - 'spec/lib/marginalia_spec.rb' - - 'spec/lib/security/ci_configuration/sast_build_action_spec.rb' - - 'spec/mailers/emails/pipelines_spec.rb' - - 'spec/migrations/20210804150320_create_base_work_item_types_spec.rb' - - 'spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb' - - 'spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb' - - 'spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb' - 'spec/models/ci/build_spec.rb' - 'spec/models/ci/pipeline_spec.rb' - 'spec/models/ci/processable_spec.rb' diff --git a/app/views/projects/project_templates/_template.html.haml b/app/views/projects/project_templates/_template.html.haml index d0fdd3a729a..9dde86f77b4 100644 --- a/app/views/projects/project_templates/_template.html.haml +++ b/app/views/projects/project_templates/_template.html.haml @@ -1,4 +1,4 @@ -.template-option.d-flex.align-items-center{ data: { qa_selector: 'template_option_row' } } +.template-option.d-flex.align-items-center{ data: { qa_selector: 'template_option_container' } } .logo.gl-mr-3.px-1 = image_tag template.logo, size: 32, class: "btn-template-icon icon-#{template.name}" .description diff --git a/doc/ci/index.md b/doc/ci/index.md index 80752830b85..68cddaf24e8 100644 --- a/doc/ci/index.md +++ b/doc/ci/index.md @@ -146,6 +146,13 @@ See also the [Why CI/CD?](https://docs.google.com/presentation/d/1OGgk2Tcxbpl7DJ As GitLab CI/CD has evolved, certain breaking changes have been necessary. +#### 15.0 and later + +Going forward, all breaking changes are documented on the following pages: + +- [Deprecations](../update/deprecations.md) +- [Removals](../update/removals.md) + #### 14.0 - No breaking changes. diff --git a/doc/user/group/manage.md b/doc/user/group/manage.md index 45f96d8e18b..57070658355 100644 --- a/doc/user/group/manage.md +++ b/doc/user/group/manage.md @@ -184,9 +184,10 @@ To remove a member from a group: 1. Go to the group. 1. From the left menu, select **Group information > Members**. -1. Next to the member you want to remove, select **Delete**. -1. Optional. On the **Remove member** confirmation box, select the - **Also unassign this user from linked issues and merge requests** checkbox. +1. Next to the member you want to remove, select **Remove member**. +1. Optional. On the **Remove member** confirmation box: + - To remove direct user membership from subgroups and projects, select the **Also remove direct user membership from subgroups and projects** checkbox. + - To unassign the user from linked issues and merge requests, select the **Also unassign this user from linked issues and merge requests** checkbox. 1. Select **Remove member**. ## Add projects to a group diff --git a/lib/gitlab/database/migrations/base_background_runner.rb b/lib/gitlab/database/migrations/base_background_runner.rb index a9440cafd30..76982a9da9b 100644 --- a/lib/gitlab/database/migrations/base_background_runner.rb +++ b/lib/gitlab/database/migrations/base_background_runner.rb @@ -40,7 +40,7 @@ module Gitlab instrumentation = Instrumentation.new(result_dir: per_background_migration_result_dir) batch_names = (1..).each.lazy.map { |i| "batch_#{i}" } - jobs.shuffle.each do |j| + jobs.each do |j| break if run_until <= Time.current instrumentation.observe(version: nil, diff --git a/lib/gitlab/database/migrations/test_background_runner.rb b/lib/gitlab/database/migrations/test_background_runner.rb index f7713237b38..6da2e098d43 100644 --- a/lib/gitlab/database/migrations/test_background_runner.rb +++ b/lib/gitlab/database/migrations/test_background_runner.rb @@ -15,6 +15,7 @@ module Gitlab def jobs_by_migration_name traditional_background_migrations.group_by { |j| class_name_for_job(j) } + .transform_values(&:shuffle) end private diff --git a/lib/gitlab/database/migrations/test_batched_background_runner.rb b/lib/gitlab/database/migrations/test_batched_background_runner.rb index f38d847b0e8..c27ae6a2c5d 100644 --- a/lib/gitlab/database/migrations/test_batched_background_runner.rb +++ b/lib/gitlab/database/migrations/test_batched_background_runner.rb @@ -4,6 +4,7 @@ module Gitlab module Database module Migrations class TestBatchedBackgroundRunner < BaseBackgroundRunner + include Gitlab::Database::DynamicModelHelpers attr_reader :connection def initialize(result_dir:, connection:) @@ -18,31 +19,81 @@ module Gitlab .to_h do |migration| batching_strategy = migration.batch_class.new(connection: connection) - all_migration_jobs = [] + smallest_batch_start = migration.next_min_value - min_value = migration.next_min_value + table_max_value = define_batchable_model(migration.table_name, connection: connection) + .maximum(migration.column_name) - while (next_bounds = batching_strategy.next_batch( - migration.table_name, - migration.column_name, - batch_min_value: min_value, - batch_size: migration.batch_size, - job_arguments: migration.job_arguments - )) + largest_batch_start = table_max_value - migration.batch_size + + # variance is the portion of the batch range that we shrink between variance * 0 and variance * 1 + # to pick actual batches to sample. + variance = largest_batch_start - smallest_batch_start + + batch_starts = uniform_fractions + .lazy # frac varies from 0 to 1, values in smallest_batch_start..largest_batch_start + .map { |frac| (variance * frac).to_i + smallest_batch_start } + + # Track previously run batches so that we stop sampling if a new batch would intersect an older one + completed_batches = [] + + jobs_to_sample = batch_starts + # Stop sampling if a batch would intersect a previous batch + .take_while { |start| completed_batches.none? { |batch| batch.cover?(start) } } + .map do |batch_start| + next_bounds = batching_strategy.next_batch( + migration.table_name, + migration.column_name, + batch_min_value: batch_start, + batch_size: migration.batch_size, + job_arguments: migration.job_arguments + ) batch_min, batch_max = next_bounds - all_migration_jobs << migration.create_batched_job!(batch_min, batch_max) - min_value = batch_max + 1 + job = migration.create_batched_job!(batch_min, batch_max) + + completed_batches << (batch_min..batch_max) + + job end - [migration.job_class_name, all_migration_jobs] + [migration.job_class_name, jobs_to_sample] end end def run_job(job) Gitlab::Database::BackgroundMigration::BatchedMigrationWrapper.new(connection: connection).perform(job) end + + def uniform_fractions + Enumerator.new do |y| + # Generates equally distributed fractions between 0 and 1, with increasing detail as more are pulled from + # the enumerator. + # 0, 1 (special case) + # 1/2 + # 1/4, 3/4 + # 1/8, 3/8, 5/8, 7/8 + # etc. + # The pattern here is at each outer loop, the denominator multiplies by 2, and at each inner loop, + # the numerator counts up all odd numbers 1 <= n < denominator. + y << 0 + y << 1 + + # denominators are each increasing power of 2 + denominators = (1..).lazy.map { |exponent| 2**exponent } + + denominators.each do |denominator| + # Numerators at the current step are all odd numbers between 1 and the denominator + numerators = (1..denominator).step(2) + + numerators.each do |numerator| + next_frac = numerator.fdiv(denominator) + y << next_frac + end + end + end + end end end end diff --git a/qa/qa.rb b/qa/qa.rb index dd6462cfe27..99a8a34d6d8 100644 --- a/qa/qa.rb +++ b/qa/qa.rb @@ -51,7 +51,6 @@ module QA "repo_by_url" => "RepoByURL", "oauth" => "OAuth", "saml_sso_sign_in" => "SamlSSOSignIn", - "saml_sso_sign_up" => "SamlSSOSignUp", "group_saml" => "GroupSAML", "instance_saml" => "InstanceSAML", "saml_sso" => "SamlSSO", diff --git a/qa/qa/fixtures/package_managers/terraform/module_upload.yaml.erb b/qa/qa/fixtures/package_managers/terraform/module_upload.yaml.erb new file mode 100644 index 00000000000..e7fd8a823d6 --- /dev/null +++ b/qa/qa/fixtures/package_managers/terraform/module_upload.yaml.erb @@ -0,0 +1,21 @@ +stages: + - upload + +upload: + stage: upload + image: curlimages/curl:latest + variables: + TERRAFORM_MODULE_DIR: ${CI_PROJECT_DIR} # The path to your Terraform module + TERRAFORM_MODULE_NAME: ${CI_PROJECT_NAME} # The name of your Terraform module + TERRAFORM_MODULE_SYSTEM: local # The system or provider your Terraform module targets (ex. local, aws, google) + TERRAFORM_MODULE_VERSION: ${CI_COMMIT_TAG} # Tag commits with SemVer for the version of your Terraform module to be published + script: + - TERRAFORM_MODULE_NAME=$(echo "${TERRAFORM_MODULE_NAME}" | tr " _" -) # module-name must not have spaces or underscores, so translate them to hyphens + - tar -vczf ${TERRAFORM_MODULE_NAME}-${TERRAFORM_MODULE_SYSTEM}-${TERRAFORM_MODULE_VERSION}.tgz -C ${TERRAFORM_MODULE_DIR} --exclude=./.git . + - 'curl --location --header "JOB-TOKEN: ${CI_JOB_TOKEN}" + --upload-file ${TERRAFORM_MODULE_NAME}-${TERRAFORM_MODULE_SYSTEM}-${TERRAFORM_MODULE_VERSION}.tgz + ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/terraform/modules/${TERRAFORM_MODULE_NAME}/${TERRAFORM_MODULE_SYSTEM}/${TERRAFORM_MODULE_VERSION}/file' + rules: + - if: $CI_COMMIT_TAG + tags: + - runner-for-<%= project.name %> \ No newline at end of file diff --git a/qa/qa/page/component/project/templates.rb b/qa/qa/page/component/project/templates.rb index 8baf15acdff..6e86455fc52 100644 --- a/qa/qa/page/component/project/templates.rb +++ b/qa/qa/page/component/project/templates.rb @@ -5,7 +5,7 @@ module QA module Project module Templates def use_template_for_project(project_name) - within find_element(:template_option_row, text: project_name) do + within find_element(:template_option_container, text: project_name) do click_element :use_template_button end end diff --git a/qa/qa/page/project/new.rb b/qa/qa/page/project/new.rb index bb4fb84f2d2..fd650d8ca20 100644 --- a/qa/qa/page/project/new.rb +++ b/qa/qa/page/project/new.rb @@ -23,7 +23,7 @@ module QA view 'app/views/projects/project_templates/_template.html.haml' do element :use_template_button - element :template_option_row + element :template_option_container end view 'app/assets/javascripts/projects/new/components/new_project_url_select.vue' do diff --git a/qa/qa/page/project/packages/index.rb b/qa/qa/page/project/packages/index.rb index 86a86c05c12..bd19f0eabaa 100644 --- a/qa/qa/page/project/packages/index.rb +++ b/qa/qa/page/project/packages/index.rb @@ -10,6 +10,11 @@ module QA element :package_link end + view 'app/assets/javascripts/packages_and_registries/infrastructure_registry/shared/package_list_row.vue' do + element :package_row + element :package_link + end + def click_package(name) click_element(:package_link, text: name) end @@ -18,6 +23,10 @@ module QA has_element?(:package_link, text: name, wait: 20) end + def has_module?(name) + has_element?(:package_link, text: name, wait: 20) + end + def has_no_package?(name) has_no_element?(:package_link, text: name) end diff --git a/qa/qa/page/project/sub_menus/packages.rb b/qa/qa/page/project/sub_menus/packages.rb index 88e2101a86d..f2084a094de 100644 --- a/qa/qa/page/project/sub_menus/packages.rb +++ b/qa/qa/page/project/sub_menus/packages.rb @@ -23,6 +23,14 @@ module QA end end + def go_to_infrastructure_registry + hover_registry do + within_submenu do + click_link('Infrastructure Registry') + end + end + end + private def hover_registry diff --git a/qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb b/qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb new file mode 100644 index 00000000000..6ce395affc7 --- /dev/null +++ b/qa/qa/specs/features/browser_ui/5_package/infrastructure_registry/terraform_module_registry_spec.rb @@ -0,0 +1,81 @@ +# frozen_string_literal: true + +module QA + RSpec.describe 'Package', :orchestrated, :packages do + describe 'Terraform Module Registry' do + include Runtime::Fixtures + + let(:group) { Resource::Group.fabricate_via_api! } + + let(:imported_project) do + Resource::ProjectImportedFromURL.fabricate_via_browser_ui! do |project| + project.name = 'terraform-module-test' + project.group = group + project.gitlab_repository_path = 'https://gitlab.com/mattkasa/terraform-module-test.git' + end + end + + let(:runner) do + Resource::Runner.fabricate! do |runner| + runner.name = "qa-runner-#{Time.now.to_i}" + runner.tags = ["runner-for-#{imported_project.name}"] + runner.executor = :docker + runner.project = imported_project + runner.token = group.reload!.runners_token + end + end + + before do + Flow::Login.sign_in + + imported_project + runner + end + + after do + runner.remove_via_api! + end + + it 'publishes a module', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/371583' do + Support::Retrier.retry_on_exception(max_attempts: 3, sleep_interval: 2) do + Resource::Repository::Commit.fabricate_via_api! do |commit| + terraform_module_yaml = ERB.new( + read_fixture('package_managers/terraform', 'module_upload.yaml.erb') + ).result(binding) + commit.project = imported_project + commit.commit_message = 'Add gitlab-ci.yaml file' + commit.update_files([ + { + file_path: '.gitlab-ci.yml', + content: terraform_module_yaml + } + ] + ) + end + end + + Resource::Tag.fabricate_via_api! do |tag| + tag.project = imported_project + tag.ref = imported_project.default_branch + tag.name = "1.0.0" + end + + Flow::Pipeline.visit_latest_pipeline + + Page::Project::Pipeline::Show.perform do |pipeline| + pipeline.click_job('upload') + end + + Page::Project::Job::Show.perform do |job| + expect(job).to be_successful(timeout: 800) + end + + Page::Project::Menu.perform(&:go_to_infrastructure_registry) + + Page::Project::Packages::Index.perform do |index| + expect(index).to have_module("#{imported_project.name}/local") + end + end + end + end +end diff --git a/spec/benchmarks/banzai_benchmark.rb b/spec/benchmarks/banzai_benchmark.rb index 86f7ee7e90b..7a60825c1e6 100644 --- a/spec/benchmarks/banzai_benchmark.rb +++ b/spec/benchmarks/banzai_benchmark.rb @@ -82,6 +82,11 @@ RSpec.describe 'GitLab Markdown Benchmark', :aggregate_failures do it 'benchmarks all filters in the PlainMarkdownPipeline' do benchmark_pipeline_filters(:plain_markdown) end + + it 'benchmarks specified filters in the FullPipeline' do + filter_klass_list = [Banzai::Filter::MathFilter] + benchmark_pipeline_filters(:full, filter_klass_list) + end end # build up the source text for each filter @@ -105,7 +110,7 @@ RSpec.describe 'GitLab Markdown Benchmark', :aggregate_failures do filter_source end - def benchmark_pipeline_filters(pipeline_type) + def benchmark_pipeline_filters(pipeline_type, filter_klass_list = nil) pipeline = Banzai::Pipeline[pipeline_type] filter_source = build_filter_text(pipeline, markdown_text) @@ -114,7 +119,8 @@ RSpec.describe 'GitLab Markdown Benchmark', :aggregate_failures do Benchmark.ips do |x| x.config(time: 10, warmup: 2) - pipeline.filters.each do |filter_klass| + filters = filter_klass_list || pipeline.filters + filters.each do |filter_klass| label = filter_klass.name.demodulize.delete_suffix('Filter').truncate(20) x.report(label) do diff --git a/spec/db/migration_spec.rb b/spec/db/migration_spec.rb index 7987c78b423..7751bfd989d 100644 --- a/spec/db/migration_spec.rb +++ b/spec/db/migration_spec.rb @@ -8,10 +8,10 @@ RSpec.describe 'Migrations Validation' do # The range describes the timestamps that given migration helper can be used let(:all_migration_classes) do { - 2022_01_26_21_06_58.. => Gitlab::Database::Migration[2.0], + 2022_01_26_21_06_58.. => Gitlab::Database::Migration[2.0], 2021_09_01_15_33_24..2022_04_25_12_06_03 => Gitlab::Database::Migration[1.0], 2021_05_31_05_39_16..2021_09_01_15_33_24 => ActiveRecord::Migration[6.1], - ..2021_05_31_05_39_16 => ActiveRecord::Migration[6.0] + ..2021_05_31_05_39_16 => ActiveRecord::Migration[6.0] } end diff --git a/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb b/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb index a7cf041f553..6e218db1254 100644 --- a/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb +++ b/spec/finders/ci/pipelines_for_merge_request_finder_spec.rb @@ -126,7 +126,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do let!(:pipeline) do create(:ci_empty_pipeline, project: project, - sha: merge_request.diff_head_sha, ref: merge_request.source_branch) + sha: merge_request.diff_head_sha, ref: merge_request.source_branch) end it 'returns pipelines from diff_head_sha' do @@ -140,7 +140,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do let!(:branch_pipeline) do create(:ci_pipeline, source: :push, project: project, - ref: source_ref, sha: merge_request.merge_request_diff.head_commit_sha) + ref: source_ref, sha: merge_request.merge_request_diff.head_commit_sha) end let!(:tag_pipeline) do @@ -149,12 +149,12 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do let!(:detached_merge_request_pipeline) do create(:ci_pipeline, source: :merge_request_event, project: project, - ref: source_ref, sha: shas.second, merge_request: merge_request) + ref: source_ref, sha: shas.second, merge_request: merge_request) end let(:merge_request) do create(:merge_request, source_project: project, source_branch: source_ref, - target_project: project, target_branch: target_ref) + target_project: project, target_branch: target_ref) end let(:project) { create(:project, :repository) } @@ -167,12 +167,12 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do context 'when there are a branch pipeline and a merge request pipeline' do let!(:branch_pipeline_2) do create(:ci_pipeline, source: :push, project: project, - ref: source_ref, sha: shas.first) + ref: source_ref, sha: shas.first) end let!(:detached_merge_request_pipeline_2) do create(:ci_pipeline, source: :merge_request_event, project: project, - ref: source_ref, sha: shas.first, merge_request: merge_request) + ref: source_ref, sha: shas.first, merge_request: merge_request) end it 'returns merge request pipelines first' do @@ -184,7 +184,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do context 'when there are multiple merge request pipelines from the same branch' do let!(:branch_pipeline_2) do create(:ci_pipeline, source: :push, project: project, - ref: source_ref, sha: shas.first) + ref: source_ref, sha: shas.first) end let!(:branch_pipeline_with_sha_not_belonging_to_merge_request) do @@ -193,12 +193,12 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do let!(:detached_merge_request_pipeline_2) do create(:ci_pipeline, source: :merge_request_event, project: project, - ref: source_ref, sha: shas.first, merge_request: merge_request_2) + ref: source_ref, sha: shas.first, merge_request: merge_request_2) end let(:merge_request_2) do create(:merge_request, source_project: project, source_branch: source_ref, - target_project: project, target_branch: 'stable') + target_project: project, target_branch: 'stable') end before do @@ -220,7 +220,7 @@ RSpec.describe Ci::PipelinesForMergeRequestFinder do context 'when detached merge request pipeline is run on head ref of the merge request' do let!(:detached_merge_request_pipeline) do create(:ci_pipeline, source: :merge_request_event, project: project, - ref: merge_request.ref_path, sha: shas.second, merge_request: merge_request) + ref: merge_request.ref_path, sha: shas.second, merge_request: merge_request) end it 'sets the head ref of the merge request to the pipeline ref' do diff --git a/spec/finders/group_descendants_finder_spec.rb b/spec/finders/group_descendants_finder_spec.rb index 5c5db874e85..2a9e887450c 100644 --- a/spec/finders/group_descendants_finder_spec.rb +++ b/spec/finders/group_descendants_finder_spec.rb @@ -131,7 +131,7 @@ RSpec.describe GroupDescendantsFinder do project = create(:project, namespace: group) other_project = create(:project) other_project.project_group_links.create!(group: group, - group_access: Gitlab::Access::MAINTAINER) + group_access: Gitlab::Access::MAINTAINER) expect(finder.execute).to contain_exactly(project) end @@ -231,8 +231,8 @@ RSpec.describe GroupDescendantsFinder do other_subgroup.add_developer(other_user) finder = described_class.new(current_user: other_user, - parent_group: group, - params: params) + parent_group: group, + params: params) expect(finder.execute).to contain_exactly(other_subgroup, public_subgroup, other_subsubgroup) end diff --git a/spec/finders/group_members_finder_spec.rb b/spec/finders/group_members_finder_spec.rb index 6a97dfae8fb..0d1b58e2636 100644 --- a/spec/finders/group_members_finder_spec.rb +++ b/spec/finders/group_members_finder_spec.rb @@ -21,10 +21,10 @@ RSpec.describe GroupMembersFinder, '#execute' do let(:groups) do { - group: group, - sub_group: sub_group, - sub_sub_group: sub_sub_group, - public_shared_group: public_shared_group, + group: group, + sub_group: sub_group, + sub_sub_group: sub_sub_group, + public_shared_group: public_shared_group, private_shared_group: private_shared_group } end @@ -32,25 +32,25 @@ RSpec.describe GroupMembersFinder, '#execute' do context 'relations' do let!(:members) do { - user1_sub_sub_group: create(:group_member, :maintainer, group: sub_sub_group, user: user1), - user1_sub_group: create(:group_member, :developer, group: sub_group, user: user1), - user1_group: create(:group_member, :reporter, group: group, user: user1), - user1_public_shared_group: create(:group_member, :maintainer, group: public_shared_group, user: user1), + user1_sub_sub_group: create(:group_member, :maintainer, group: sub_sub_group, user: user1), + user1_sub_group: create(:group_member, :developer, group: sub_group, user: user1), + user1_group: create(:group_member, :reporter, group: group, user: user1), + user1_public_shared_group: create(:group_member, :maintainer, group: public_shared_group, user: user1), user1_private_shared_group: create(:group_member, :maintainer, group: private_shared_group, user: user1), - user2_sub_sub_group: create(:group_member, :reporter, group: sub_sub_group, user: user2), - user2_sub_group: create(:group_member, :developer, group: sub_group, user: user2), - user2_group: create(:group_member, :maintainer, group: group, user: user2), - user2_public_shared_group: create(:group_member, :developer, group: public_shared_group, user: user2), - user2_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user2), - user3_sub_sub_group: create(:group_member, :developer, group: sub_sub_group, user: user3, expires_at: 1.day.from_now), - user3_sub_group: create(:group_member, :developer, group: sub_group, user: user3, expires_at: 2.days.from_now), - user3_group: create(:group_member, :reporter, group: group, user: user3), - user3_public_shared_group: create(:group_member, :reporter, group: public_shared_group, user: user3), - user3_private_shared_group: create(:group_member, :reporter, group: private_shared_group, user: user3), - user4_sub_sub_group: create(:group_member, :reporter, group: sub_sub_group, user: user4), - user4_sub_group: create(:group_member, :developer, group: sub_group, user: user4, expires_at: 1.day.from_now), - user4_group: create(:group_member, :developer, group: group, user: user4, expires_at: 2.days.from_now), - user4_public_shared_group: create(:group_member, :developer, group: public_shared_group, user: user4), + user2_sub_sub_group: create(:group_member, :reporter, group: sub_sub_group, user: user2), + user2_sub_group: create(:group_member, :developer, group: sub_group, user: user2), + user2_group: create(:group_member, :maintainer, group: group, user: user2), + user2_public_shared_group: create(:group_member, :developer, group: public_shared_group, user: user2), + user2_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user2), + user3_sub_sub_group: create(:group_member, :developer, group: sub_sub_group, user: user3, expires_at: 1.day.from_now), + user3_sub_group: create(:group_member, :developer, group: sub_group, user: user3, expires_at: 2.days.from_now), + user3_group: create(:group_member, :reporter, group: group, user: user3), + user3_public_shared_group: create(:group_member, :reporter, group: public_shared_group, user: user3), + user3_private_shared_group: create(:group_member, :reporter, group: private_shared_group, user: user3), + user4_sub_sub_group: create(:group_member, :reporter, group: sub_sub_group, user: user4), + user4_sub_group: create(:group_member, :developer, group: sub_group, user: user4, expires_at: 1.day.from_now), + user4_group: create(:group_member, :developer, group: group, user: user4, expires_at: 2.days.from_now), + user4_public_shared_group: create(:group_member, :developer, group: public_shared_group, user: user4), user4_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user4), user5_private_shared_group: create(:group_member, :developer, group: private_shared_group, user: user5) } diff --git a/spec/finders/template_finder_spec.rb b/spec/finders/template_finder_spec.rb index 8e2426e697b..21fea7863ff 100644 --- a/spec/finders/template_finder_spec.rb +++ b/spec/finders/template_finder_spec.rb @@ -7,10 +7,10 @@ RSpec.describe TemplateFinder do let_it_be(:template_files) do { - "Dockerfile/project_dockerfiles_template.dockerfile" => "project_dockerfiles_template content", - "gitignore/project_gitignores_template.gitignore" => "project_gitignores_template content", - "gitlab-ci/project_gitlab_ci_ymls_template.yml" => "project_gitlab_ci_ymls_template content", - ".gitlab/issue_templates/project_issues_template.md" => "project_issues_template content", + "Dockerfile/project_dockerfiles_template.dockerfile" => "project_dockerfiles_template content", + "gitignore/project_gitignores_template.gitignore" => "project_gitignores_template content", + "gitlab-ci/project_gitlab_ci_ymls_template.yml" => "project_gitlab_ci_ymls_template content", + ".gitlab/issue_templates/project_issues_template.md" => "project_issues_template content", ".gitlab/merge_request_templates/project_merge_requests_template.md" => "project_merge_requests_template content" } end diff --git a/spec/graphql/mutations/releases/update_spec.rb b/spec/graphql/mutations/releases/update_spec.rb index 15b10ea0648..0cf10e03fb1 100644 --- a/spec/graphql/mutations/releases/update_spec.rb +++ b/spec/graphql/mutations/releases/update_spec.rb @@ -18,8 +18,8 @@ RSpec.describe Mutations::Releases::Update do let_it_be(:release) do create(:release, project: project, tag: tag, name: name, - description: description, released_at: released_at, - created_at: created_at, milestones: [milestone_12_3, milestone_12_4]) + description: description, released_at: released_at, + created_at: created_at, milestones: [milestone_12_3, milestone_12_4]) end let(:mutation) { described_class.new(object: nil, context: { current_user: current_user }, field: nil) } diff --git a/spec/graphql/resolvers/board_lists_resolver_spec.rb b/spec/graphql/resolvers/board_lists_resolver_spec.rb index c882ad7c818..2fb7c5c4717 100644 --- a/spec/graphql/resolvers/board_lists_resolver_spec.rb +++ b/spec/graphql/resolvers/board_lists_resolver_spec.rb @@ -101,7 +101,7 @@ RSpec.describe Resolvers::BoardListsResolver do def resolve_board_lists(args: {}, current_user: user) resolve(described_class, obj: board, args: args, ctx: { current_user: current_user }, - arg_style: :internal + arg_style: :internal ) end end diff --git a/spec/graphql/resolvers/ci/config_resolver_spec.rb b/spec/graphql/resolvers/ci/config_resolver_spec.rb index dc030b1313b..692bdf58784 100644 --- a/spec/graphql/resolvers/ci/config_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/config_resolver_spec.rb @@ -17,7 +17,7 @@ RSpec.describe Resolvers::Ci::ConfigResolver do subject(:response) do resolve(described_class, args: { project_path: project.full_path, content: content, sha: sha }, - ctx: { current_user: user }) + ctx: { current_user: user }) end shared_examples 'a valid config file' do diff --git a/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb b/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb index f99f48f5b07..57b2fcbea63 100644 --- a/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/group_runners_resolver_spec.rb @@ -8,7 +8,7 @@ RSpec.describe Resolvers::Ci::GroupRunnersResolver do describe '#resolve' do subject do resolve(described_class, obj: obj, ctx: { current_user: user }, args: args, - arg_style: :internal) + arg_style: :internal) end include_context 'runners resolver setup' diff --git a/spec/graphql/resolvers/ci/jobs_resolver_spec.rb b/spec/graphql/resolvers/ci/jobs_resolver_spec.rb index 6c228861ddf..80a70938dc4 100644 --- a/spec/graphql/resolvers/ci/jobs_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/jobs_resolver_spec.rb @@ -38,7 +38,7 @@ RSpec.describe Resolvers::Ci::JobsResolver do ::Types::Security::ReportTypeEnum.values['DAST'].value ] jobs = resolve(described_class, obj: pipeline, args: { security_report_types: report_types }, - arg_style: :internal) + arg_style: :internal) expect(jobs).to contain_exactly( have_attributes(name: 'DAST job'), diff --git a/spec/graphql/resolvers/ci/runners_resolver_spec.rb b/spec/graphql/resolvers/ci/runners_resolver_spec.rb index 8586d359336..4038192a68a 100644 --- a/spec/graphql/resolvers/ci/runners_resolver_spec.rb +++ b/spec/graphql/resolvers/ci/runners_resolver_spec.rb @@ -11,7 +11,7 @@ RSpec.describe Resolvers::Ci::RunnersResolver do subject do resolve(described_class, obj: obj, ctx: { current_user: user }, args: args, - arg_style: :internal) + arg_style: :internal) end include_context 'runners resolver setup' diff --git a/spec/graphql/resolvers/container_repositories_resolver_spec.rb b/spec/graphql/resolvers/container_repositories_resolver_spec.rb index ed922259903..8cbb366f873 100644 --- a/spec/graphql/resolvers/container_repositories_resolver_spec.rb +++ b/spec/graphql/resolvers/container_repositories_resolver_spec.rb @@ -17,7 +17,7 @@ RSpec.describe Resolvers::ContainerRepositoriesResolver do subject do resolve(described_class, ctx: { current_user: user }, args: args, obj: object, - arg_style: :internal) + arg_style: :internal) end shared_examples 'returning container repositories' do diff --git a/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb b/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb index 9747f663759..3ed3fe76267 100644 --- a/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb +++ b/spec/graphql/resolvers/container_repository_tags_resolver_spec.rb @@ -14,7 +14,7 @@ RSpec.describe Resolvers::ContainerRepositoryTagsResolver do describe '#resolve' do let(:resolver) do resolve(described_class, ctx: { current_user: user }, obj: repository, args: args, - arg_style: :internal) + arg_style: :internal) end before do diff --git a/spec/graphql/resolvers/design_management/versions_resolver_spec.rb b/spec/graphql/resolvers/design_management/versions_resolver_spec.rb index 3a2ed445484..eb39e5bafc5 100644 --- a/spec/graphql/resolvers/design_management/versions_resolver_spec.rb +++ b/spec/graphql/resolvers/design_management/versions_resolver_spec.rb @@ -82,7 +82,7 @@ RSpec.describe Resolvers::DesignManagement::VersionsResolver do let(:params) do { earlier_or_equal_to_sha: first_version.sha, - earlier_or_equal_to_id: global_id_of(first_version) + earlier_or_equal_to_id: global_id_of(first_version) } end @@ -95,7 +95,7 @@ RSpec.describe Resolvers::DesignManagement::VersionsResolver do let(:params) do { earlier_or_equal_to_sha: first_version.sha, - earlier_or_equal_to_id: global_id_of(other_version) + earlier_or_equal_to_id: global_id_of(other_version) } end diff --git a/spec/graphql/resolvers/work_items_resolver_spec.rb b/spec/graphql/resolvers/work_items_resolver_spec.rb index ef7cc0daa0c..d89ccc7f806 100644 --- a/spec/graphql/resolvers/work_items_resolver_spec.rb +++ b/spec/graphql/resolvers/work_items_resolver_spec.rb @@ -19,13 +19,13 @@ RSpec.describe Resolvers::WorkItemsResolver do let_it_be(:item2) do create(:work_item, project: project, state: :closed, title: 'foo', - created_at: 1.hour.ago, updated_at: 1.hour.ago, closed_at: + created_at: 1.hour.ago, updated_at: 1.hour.ago, closed_at: 1.hour.ago) end let_it_be(:item3) do create(:work_item, project: other_project, state: :closed, title: 'foo', - created_at: 1.hour.ago, updated_at: 1.hour.ago, closed_at: + created_at: 1.hour.ago, updated_at: 1.hour.ago, closed_at: 1.hour.ago) end diff --git a/spec/helpers/ci/builds_helper_spec.rb b/spec/helpers/ci/builds_helper_spec.rb index ea3b5aac4ea..fa7bc3abf8b 100644 --- a/spec/helpers/ci/builds_helper_spec.rb +++ b/spec/helpers/ci/builds_helper_spec.rb @@ -106,7 +106,7 @@ RSpec.describe Ci::BuildsHelper do expect(subject).to eq([{ id: failed_build.id, failure: failed_build.present.callout_failure_message, - failure_summary: helper.build_summary(failed_build) + failure_summary: helper.build_summary(failed_build) }].to_json) end end diff --git a/spec/helpers/sorting_helper_spec.rb b/spec/helpers/sorting_helper_spec.rb index 1ee920d1c95..0b1f2b96fb3 100644 --- a/spec/helpers/sorting_helper_spec.rb +++ b/spec/helpers/sorting_helper_spec.rb @@ -74,11 +74,11 @@ RSpec.describe SortingHelper do def project_common_options { - sort_value_latest_activity => sort_title_latest_activity, + sort_value_latest_activity => sort_title_latest_activity, sort_value_recently_created => sort_title_created_date, - sort_value_name => sort_title_name, - sort_value_name_desc => sort_title_name_desc, - sort_value_stars_desc => sort_title_stars + sort_value_name => sort_title_name, + sort_value_name_desc => sort_title_name_desc, + sort_value_stars_desc => sort_title_stars } end @@ -90,11 +90,11 @@ RSpec.describe SortingHelper do describe '#projects_sort_options_hash' do it 'returns a hash of available sorting options' do admin_options = project_common_options.merge({ - sort_value_oldest_activity => sort_title_oldest_activity, - sort_value_oldest_created => sort_title_oldest_created, + sort_value_oldest_activity => sort_title_oldest_activity, + sort_value_oldest_created => sort_title_oldest_created, sort_value_recently_created => sort_title_recently_created, - sort_value_stars_desc => sort_title_most_stars, - sort_value_largest_repo => sort_title_largest_repo + sort_value_stars_desc => sort_title_most_stars, + sort_value_largest_repo => sort_title_largest_repo }) expect(projects_sort_options_hash).to eq(admin_options) @@ -180,10 +180,10 @@ RSpec.describe SortingHelper do describe '#projects_sort_option_titles' do it 'returns a hash of titles for the sorting options' do options = project_common_options.merge({ - sort_value_oldest_activity => sort_title_latest_activity, - sort_value_oldest_created => sort_title_created_date, - sort_value_name_desc => sort_title_name, - sort_value_stars_asc => sort_title_stars + sort_value_oldest_activity => sort_title_latest_activity, + sort_value_oldest_created => sort_title_created_date, + sort_value_name_desc => sort_title_name, + sort_value_stars_asc => sort_title_stars }) expect(projects_sort_option_titles).to eq(options) @@ -198,10 +198,10 @@ RSpec.describe SortingHelper do describe '#projects_sort_options_hash' do it 'returns a hash of available sorting options' do options = project_common_options.merge({ - sort_value_oldest_activity => sort_title_oldest_activity, - sort_value_oldest_created => sort_title_oldest_created, + sort_value_oldest_activity => sort_title_oldest_activity, + sort_value_oldest_created => sort_title_oldest_created, sort_value_recently_created => sort_title_recently_created, - sort_value_stars_desc => sort_title_most_stars + sort_value_stars_desc => sort_title_most_stars }) expect(projects_sort_options_hash).to eq(options) @@ -219,9 +219,9 @@ RSpec.describe SortingHelper do it 'returns a hash of available sorting options' do expect(forks_sort_options_hash).to include({ sort_value_recently_created => sort_title_created_date, - sort_value_oldest_created => sort_title_created_date, - sort_value_latest_activity => sort_title_latest_activity, - sort_value_oldest_activity => sort_title_latest_activity + sort_value_oldest_created => sort_title_created_date, + sort_value_latest_activity => sort_title_latest_activity, + sort_value_oldest_activity => sort_title_latest_activity }) end end diff --git a/spec/helpers/storage_helper_spec.rb b/spec/helpers/storage_helper_spec.rb index e0628fe9235..d42dd51b2a1 100644 --- a/spec/helpers/storage_helper_spec.rb +++ b/spec/helpers/storage_helper_spec.rb @@ -27,15 +27,15 @@ RSpec.describe StorageHelper do create(:project, namespace: namespace, statistics: build(:project_statistics, - namespace: namespace, - repository_size: 10.kilobytes, - wiki_size: 10.bytes, - lfs_objects_size: 20.gigabytes, - build_artifacts_size: 30.megabytes, + namespace: namespace, + repository_size: 10.kilobytes, + wiki_size: 10.bytes, + lfs_objects_size: 20.gigabytes, + build_artifacts_size: 30.megabytes, pipeline_artifacts_size: 11.megabytes, - snippets_size: 40.megabytes, - packages_size: 12.megabytes, - uploads_size: 15.megabytes)) + snippets_size: 40.megabytes, + packages_size: 12.megabytes, + uploads_size: 15.megabytes)) end let(:message) { 'Repository: 10 KB / Wikis: 10 Bytes / Build Artifacts: 30 MB / Pipeline Artifacts: 11 MB / LFS: 20 GB / Snippets: 40 MB / Packages: 12 MB / Uploads: 15 MB' } diff --git a/spec/helpers/wiki_helper_spec.rb b/spec/helpers/wiki_helper_spec.rb index 5adcbe3334d..75128d758f9 100644 --- a/spec/helpers/wiki_helper_spec.rb +++ b/spec/helpers/wiki_helper_spec.rb @@ -132,11 +132,11 @@ RSpec.describe WikiHelper do it 'returns the tracking context' do expect(subject).to eq( - 'wiki-format' => :markdown, - 'wiki-title-size' => 9, - 'wiki-content-size' => 4, + 'wiki-format' => :markdown, + 'wiki-title-size' => 9, + 'wiki-content-size' => 4, 'wiki-directory-nest-level' => 2, - 'wiki-container-type' => 'Project' + 'wiki-container-type' => 'Project' ) end diff --git a/spec/initializers/00_rails_disable_joins_spec.rb b/spec/initializers/00_rails_disable_joins_spec.rb index 78e78b6810b..3b390f1ef17 100644 --- a/spec/initializers/00_rails_disable_joins_spec.rb +++ b/spec/initializers/00_rails_disable_joins_spec.rb @@ -98,8 +98,8 @@ RSpec.describe 'DisableJoins' do primary_model.has_one :test_bridge, anonymous_class: bridge_model, foreign_key: :primary_record_id bridge_model.belongs_to :test_secondary, anonymous_class: secondary_model, foreign_key: :secondary_record_id - primary_model.has_one :test_secondary, through: :test_bridge, anonymous_class: secondary_model, - disable_joins: -> { joins_disabled_flag } + primary_model.has_one :test_secondary, + through: :test_bridge, anonymous_class: secondary_model, disable_joins: -> { joins_disabled_flag } primary_record = primary_model.create! secondary_record = secondary_model.create! @@ -149,7 +149,7 @@ RSpec.describe 'DisableJoins' do primary_model.has_many :test_bridges, anonymous_class: bridge_model, foreign_key: :primary_record_id bridge_model.has_many :test_secondaries, anonymous_class: secondary_model, foreign_key: :bridge_record_id primary_model.has_many :test_secondaries, through: :test_bridges, anonymous_class: secondary_model, - disable_joins: -> { disabled_join_flag } + disable_joins: -> { disabled_join_flag } primary_record = primary_model.create! bridge_record = bridge_model.create!(primary_record_id: primary_record.id) diff --git a/spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb b/spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb index 9451a6bd34a..3ac483c8ab7 100644 --- a/spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb +++ b/spec/lib/gitlab/database/migrations/test_batched_background_runner_spec.rb @@ -24,7 +24,7 @@ RSpec.describe Gitlab::Database::Migrations::TestBatchedBackgroundRunner, :freez connection.execute(<<~SQL) CREATE TABLE #{table_name} ( id bigint primary key not null, - data bigint + data bigint default 0 ); insert into #{table_name} (id) select i from generate_series(1, 1000) g(i); @@ -40,10 +40,12 @@ RSpec.describe Gitlab::Database::Migrations::TestBatchedBackgroundRunner, :freez :id, :data, batch_size: 100, job_interval: 5.minutes) # job_interval is skipped when testing - described_class.new(result_dir: result_dir, connection: connection).run_jobs(for_duration: 1.minute) - unmigrated_row_count = define_batchable_model(table_name).where('id != data').count - expect(unmigrated_row_count).to eq(0) + # Expect that running sampling for this migration processes some of the rows. Sampling doesn't run + # over every row in the table, so this does not completely migrate the table. + expect { described_class.new(result_dir: result_dir, connection: connection).run_jobs(for_duration: 1.minute) } + .to change { define_batchable_model(table_name).where('id IS DISTINCT FROM data').count } + .by_at_most(-1) end end @@ -62,7 +64,7 @@ RSpec.describe Gitlab::Database::Migrations::TestBatchedBackgroundRunner, :freez described_class.new(result_dir: result_dir, connection: connection).run_jobs(for_duration: 3.minutes) - expect(calls.count).to eq(10) # 1000 rows / batch size 100 = 10 + expect(calls).not_to be_empty end context 'with multiple jobs to run' do @@ -92,4 +94,19 @@ RSpec.describe Gitlab::Database::Migrations::TestBatchedBackgroundRunner, :freez end end end + + context 'choosing uniform batches to run' do + subject { described_class.new(result_dir: result_dir, connection: connection) } + + describe '#uniform_fractions' do + it 'generates evenly distributed sequences of fractions' do + received = subject.uniform_fractions.take(9) + expected = [0, 1, 1.0 / 2, 1.0 / 4, 3.0 / 4, 1.0 / 8, 3.0 / 8, 5.0 / 8, 7.0 / 8] + + # All the fraction numerators are small integers, and all denominators are powers of 2, so these + # fit perfectly into floating point numbers with zero loss of precision + expect(received).to eq(expected) + end + end + end end diff --git a/spec/lib/gitlab/metrics/web_transaction_spec.rb b/spec/lib/gitlab/metrics/web_transaction_spec.rb index d6590efcf4f..dc59fa804c4 100644 --- a/spec/lib/gitlab/metrics/web_transaction_spec.rb +++ b/spec/lib/gitlab/metrics/web_transaction_spec.rb @@ -66,8 +66,8 @@ RSpec.describe Gitlab::Metrics::WebTransaction do before do route = double(:route, request_method: 'GET', path: '/:version/projects/:id/archive(.:format)') endpoint = double(:endpoint, route: route, - options: { for: API::Projects, path: [":id/archive"] }, - namespace: "/projects") + options: { for: API::Projects, path: [":id/archive"] }, + namespace: "/projects") env['api.endpoint'] = endpoint diff --git a/spec/lib/gitlab/omniauth_initializer_spec.rb b/spec/lib/gitlab/omniauth_initializer_spec.rb index c91b14a33ba..563c97fa2cb 100644 --- a/spec/lib/gitlab/omniauth_initializer_spec.rb +++ b/spec/lib/gitlab/omniauth_initializer_spec.rb @@ -31,7 +31,7 @@ RSpec.describe Gitlab::OmniauthInitializer do context 'when there is an app_id and an app_secret, and an array of args' do let(:provider) do { - 'name' => 'unknown', + 'name' => 'unknown', 'app_id' => 1, 'app_secret' => 2, 'args' => %w[one two three] @@ -46,7 +46,7 @@ RSpec.describe Gitlab::OmniauthInitializer do context 'when there is an app_id and an app_secret, and an array of args, and default values' do let(:provider) do { - 'name' => 'unknown', + 'name' => 'unknown', 'app_id' => 1, 'app_secret' => 2, 'args' => %w[one two three] @@ -68,7 +68,7 @@ RSpec.describe Gitlab::OmniauthInitializer do context 'when there is an app_id and an app_secret, and a hash of args' do let(:provider) do { - 'name' => 'unknown', + 'name' => 'unknown', 'app_id' => 1, 'app_secret' => 2, 'args' => { 'foo' => 100, 'bar' => 200, 'nested' => { 'value' => 300 } } @@ -84,7 +84,7 @@ RSpec.describe Gitlab::OmniauthInitializer do context 'when there is an app_id and an app_secret, and a hash of args, and default arguments' do let(:provider) do { - 'name' => 'unknown', + 'name' => 'unknown', 'app_id' => 1, 'app_secret' => 2, 'args' => { 'foo' => 100, 'bar' => 200, 'nested' => { 'value' => 300 } } @@ -106,7 +106,7 @@ RSpec.describe Gitlab::OmniauthInitializer do context 'when there is an app_id and an app_secret, no args, and default values' do let(:provider) do { - 'name' => 'unknown', + 'name' => 'unknown', 'app_id' => 1, 'app_secret' => 2 } @@ -127,7 +127,7 @@ RSpec.describe Gitlab::OmniauthInitializer do context 'when there are args, of an unsupported type' do let(:provider) do { - 'name' => 'unknown', + 'name' => 'unknown', 'args' => 1 } end diff --git a/spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb b/spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb index 635f572daef..dff04a2e509 100644 --- a/spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb +++ b/spec/lib/gitlab/sidekiq_daemon/memory_killer_spec.rb @@ -326,7 +326,7 @@ RSpec.describe Gitlab::SidekiqDaemon::MemoryKiller do class: described_class.to_s, signal: signal, pid: pid, - message: "sending Sidekiq worker PID-#{pid} #{signal} (#{explanation})") + message: "sending Sidekiq worker PID-#{pid} #{signal} (#{explanation})") expect(Process).to receive(:kill).with(signal, pid).ordered subject @@ -340,7 +340,7 @@ RSpec.describe Gitlab::SidekiqDaemon::MemoryKiller do class: described_class.to_s, signal: signal, pid: pid, - message: "sending Sidekiq worker PGRP-#{pid} #{signal} (#{explanation})") + message: "sending Sidekiq worker PGRP-#{pid} #{signal} (#{explanation})") expect(Process).to receive(:kill).with(signal, 0).ordered subject diff --git a/spec/lib/gitlab/sidekiq_death_handler_spec.rb b/spec/lib/gitlab/sidekiq_death_handler_spec.rb index e3f9f8277a0..434642bf3ef 100644 --- a/spec/lib/gitlab/sidekiq_death_handler_spec.rb +++ b/spec/lib/gitlab/sidekiq_death_handler_spec.rb @@ -24,8 +24,8 @@ RSpec.describe Gitlab::SidekiqDeathHandler, :clean_gitlab_redis_queues do expect(described_class.counter) .to receive(:increment) .with({ queue: 'test_queue', worker: 'TestWorker', - urgency: 'low', external_dependencies: 'yes', - feature_category: 'users', boundary: 'cpu' }) + urgency: 'low', external_dependencies: 'yes', + feature_category: 'users', boundary: 'cpu' }) described_class.handler({ 'class' => 'TestWorker', 'queue' => 'test_queue' }, nil) end @@ -40,8 +40,8 @@ RSpec.describe Gitlab::SidekiqDeathHandler, :clean_gitlab_redis_queues do expect(described_class.counter) .to receive(:increment) .with({ queue: 'test_queue', worker: 'TestWorker', - urgency: '', external_dependencies: 'no', - feature_category: '', boundary: '' }) + urgency: '', external_dependencies: 'no', + feature_category: '', boundary: '' }) described_class.handler({ 'class' => 'TestWorker', 'queue' => 'test_queue' }, nil) end diff --git a/spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb b/spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb index d6d24ea3a24..52b50a143fc 100644 --- a/spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb +++ b/spec/lib/gitlab/sidekiq_middleware/server_metrics_spec.rb @@ -22,39 +22,39 @@ RSpec.describe Gitlab::SidekiqMiddleware::ServerMetrics do expect(completion_seconds_metric) .to receive(:get).with({ queue: 'merge', - worker: 'MergeWorker', - urgency: 'high', - external_dependencies: 'no', - feature_category: 'source_code_management', - boundary: '', - job_status: 'done' }) + worker: 'MergeWorker', + urgency: 'high', + external_dependencies: 'no', + feature_category: 'source_code_management', + boundary: '', + job_status: 'done' }) expect(completion_seconds_metric) .to receive(:get).with({ queue: 'merge', - worker: 'MergeWorker', - urgency: 'high', - external_dependencies: 'no', - feature_category: 'source_code_management', - boundary: '', - job_status: 'fail' }) + worker: 'MergeWorker', + urgency: 'high', + external_dependencies: 'no', + feature_category: 'source_code_management', + boundary: '', + job_status: 'fail' }) expect(completion_seconds_metric) .to receive(:get).with({ queue: 'default', - worker: 'Ci::BuildFinishedWorker', - urgency: 'high', - external_dependencies: 'no', - feature_category: 'continuous_integration', - boundary: 'cpu', - job_status: 'done' }) + worker: 'Ci::BuildFinishedWorker', + urgency: 'high', + external_dependencies: 'no', + feature_category: 'continuous_integration', + boundary: 'cpu', + job_status: 'done' }) expect(completion_seconds_metric) .to receive(:get).with({ queue: 'default', - worker: 'Ci::BuildFinishedWorker', - urgency: 'high', - external_dependencies: 'no', - feature_category: 'continuous_integration', - boundary: 'cpu', - job_status: 'fail' }) + worker: 'Ci::BuildFinishedWorker', + urgency: 'high', + external_dependencies: 'no', + feature_category: 'continuous_integration', + boundary: 'cpu', + job_status: 'fail' }) described_class.initialize_process_metrics end diff --git a/spec/lib/gitlab/slug/environment_spec.rb b/spec/lib/gitlab/slug/environment_spec.rb index 5456501eb8b..e8f0fba27b2 100644 --- a/spec/lib/gitlab/slug/environment_spec.rb +++ b/spec/lib/gitlab/slug/environment_spec.rb @@ -7,21 +7,21 @@ RSpec.describe Gitlab::Slug::Environment do { "staging-12345678901234567" => "staging-123456789-q517sa", "9-staging-123456789012345" => "env-9-staging-123-q517sa", - "staging-1234567890123456" => "staging-1234567890123456", + "staging-1234567890123456" => "staging-1234567890123456", "staging-1234567890123456-" => "staging-123456789-q517sa", - "production" => "production", - "PRODUCTION" => "production-q517sa", - "review/1-foo" => "review-1-foo-q517sa", - "1-foo" => "env-1-foo-q517sa", - "1/foo" => "env-1-foo-q517sa", - "foo-" => "foo", - "foo--bar" => "foo-bar-q517sa", - "foo**bar" => "foo-bar-q517sa", - "*-foo" => "env-foo-q517sa", - "staging-12345678-" => "staging-12345678", + "production" => "production", + "PRODUCTION" => "production-q517sa", + "review/1-foo" => "review-1-foo-q517sa", + "1-foo" => "env-1-foo-q517sa", + "1/foo" => "env-1-foo-q517sa", + "foo-" => "foo", + "foo--bar" => "foo-bar-q517sa", + "foo**bar" => "foo-bar-q517sa", + "*-foo" => "env-foo-q517sa", + "staging-12345678-" => "staging-12345678", "staging-12345678-01234567" => "staging-12345678-q517sa", - "" => "env-q517sa", - nil => "env-q517sa" + "" => "env-q517sa", + nil => "env-q517sa" }.each do |name, matcher| before do # ('a' * 64).to_i(16).to_s(36).last(6) gives 'q517sa' diff --git a/spec/lib/gitlab/tracking_spec.rb b/spec/lib/gitlab/tracking_spec.rb index 028c985f3b3..7f30d794aee 100644 --- a/spec/lib/gitlab/tracking_spec.rb +++ b/spec/lib/gitlab/tracking_spec.rb @@ -132,9 +132,16 @@ RSpec.describe Gitlab::Tracking do expect(args[:context].last).to eq(other_context) end - described_class.event('category', 'action', label: 'label', property: 'property', value: 1.5, - context: [other_context], project: project, user: user, namespace: namespace, - extra_key_1: 'extra value 1', extra_key_2: 'extra value 2') + described_class.event('category', 'action', + label: 'label', + property: 'property', + value: 1.5, + context: [other_context], + project: project, + user: user, + namespace: namespace, + extra_key_1: 'extra value 1', + extra_key_2: 'extra value 2') end end @@ -197,8 +204,15 @@ RSpec.describe Gitlab::Tracking do expect(args[:extra_key_1]).to eq('extra value 1') end - described_class.definition('filename', category: nil, action: nil, label: 'label', property: '...', - project: project, user: user, namespace: namespace, extra_key_1: 'extra value 1') + described_class.definition('filename', + category: nil, + action: nil, + label: 'label', + property: '...', + project: project, + user: user, + namespace: namespace, + extra_key_1: 'extra value 1') end end diff --git a/spec/lib/gitlab/usage_data/topology_spec.rb b/spec/lib/gitlab/usage_data/topology_spec.rb index 737580e3493..dfdf8eaabe8 100644 --- a/spec/lib/gitlab/usage_data/topology_spec.rb +++ b/spec/lib/gitlab/usage_data/topology_spec.rb @@ -187,7 +187,7 @@ RSpec.describe Gitlab::UsageData::Topology do [ { 'metric' => { 'instance' => 'localhost:9100' }, - 'value' => [1000, '512'] + 'value' => [1000, '512'] } ] end @@ -196,7 +196,7 @@ RSpec.describe Gitlab::UsageData::Topology do [ { 'metric' => { 'instance' => 'localhost:9100' }, - 'value' => [1000, '0.35'] + 'value' => [1000, '0.35'] } ] end @@ -224,23 +224,23 @@ RSpec.describe Gitlab::UsageData::Topology do [ { 'metric' => { 'instance' => 'localhost:8080', 'job' => 'gitlab-rails' }, - 'value' => [1000, '10'] + 'value' => [1000, '10'] }, { 'metric' => { 'instance' => '127.0.0.1:8090', 'job' => 'gitlab-sidekiq' }, - 'value' => [1000, '11'] + 'value' => [1000, '11'] }, { 'metric' => { 'instance' => '0.0.0.0:9090', 'job' => 'prometheus' }, - 'value' => [1000, '12'] + 'value' => [1000, '12'] }, { 'metric' => { 'instance' => '[::1]:1234', 'job' => 'redis' }, - 'value' => [1000, '13'] + 'value' => [1000, '13'] }, { 'metric' => { 'instance' => '[::]:1234', 'job' => 'postgres' }, - 'value' => [1000, '14'] + 'value' => [1000, '14'] } ] end @@ -640,7 +640,7 @@ RSpec.describe Gitlab::UsageData::Topology do .and_return(result || [ { 'metric' => { 'instance' => 'instance1:8080', 'job' => 'gitlab-rails' }, - 'value' => [1000, '300'] + 'value' => [1000, '300'] }, { 'metric' => { 'instance' => 'instance1:8090', 'job' => 'gitlab-sidekiq' }, diff --git a/spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb index 3f44cfdcf27..74e63d219bd 100644 --- a/spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb +++ b/spec/lib/gitlab/usage_data_counters/merge_request_activity_unique_counter_spec.rb @@ -100,9 +100,9 @@ RSpec.describe Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter, :cl subject expect_snowplow_event( - category: 'merge_requests', + category: 'merge_requests', action: 'i_code_review_user_approve_mr', - namespace: target_project.namespace, + namespace: target_project.namespace, user: user, project: target_project ) diff --git a/spec/lib/gitlab/usage_data_counters/note_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/note_counter_spec.rb index 7e8f0172e06..687f8c2cd41 100644 --- a/spec/lib/gitlab/usage_data_counters/note_counter_spec.rb +++ b/spec/lib/gitlab/usage_data_counters/note_counter_spec.rb @@ -41,7 +41,7 @@ RSpec.describe Gitlab::UsageDataCounters::NoteCounter, :clean_gitlab_redis_share let(:expected_totals) do { snippet_comment: 3, merge_request_comment: 4, - commit_comment: 5 } + commit_comment: 5 } end before do diff --git a/spec/lib/gitlab/usage_data_spec.rb b/spec/lib/gitlab/usage_data_spec.rb index 692b6483149..3b0cc0fb16b 100644 --- a/spec/lib/gitlab/usage_data_spec.rb +++ b/spec/lib/gitlab/usage_data_spec.rb @@ -583,10 +583,10 @@ RSpec.describe Gitlab::UsageData, :aggregate_failures do it 'gathers object store usage correctly' do expect(subject[:object_store]).to eq( { artifacts: { enabled: true, object_store: { enabled: true, direct_upload: true, background_upload: false, provider: "AWS" } }, - external_diffs: { enabled: false }, - lfs: { enabled: true, object_store: { enabled: false, direct_upload: true, background_upload: false, provider: "AWS" } }, - uploads: { enabled: nil, object_store: { enabled: false, direct_upload: true, background_upload: false, provider: "AWS" } }, - packages: { enabled: true, object_store: { enabled: false, direct_upload: false, background_upload: true, provider: "AWS" } } } + external_diffs: { enabled: false }, + lfs: { enabled: true, object_store: { enabled: false, direct_upload: true, background_upload: false, provider: "AWS" } }, + uploads: { enabled: nil, object_store: { enabled: false, direct_upload: true, background_upload: false, provider: "AWS" } }, + packages: { enabled: true, object_store: { enabled: false, direct_upload: false, background_upload: true, provider: "AWS" } } } ) end diff --git a/spec/lib/gitlab/utils_spec.rb b/spec/lib/gitlab/utils_spec.rb index ad1a65ffae8..61323f0646b 100644 --- a/spec/lib/gitlab/utils_spec.rb +++ b/spec/lib/gitlab/utils_spec.rb @@ -174,7 +174,7 @@ RSpec.describe Gitlab::Utils do { 'TEST' => 'test', 'project_with_underscores' => 'project-with-underscores', - 'namespace/project' => 'namespace-project', + 'namespace/project' => 'namespace-project', 'a' * 70 => 'a' * 63, 'test_trailing_' => 'test-trailing' }.each do |original, expected| diff --git a/spec/lib/gitlab/word_diff/parser_spec.rb b/spec/lib/gitlab/word_diff/parser_spec.rb index 915c3f5a0f9..18109a8160b 100644 --- a/spec/lib/gitlab/word_diff/parser_spec.rb +++ b/spec/lib/gitlab/word_diff/parser_spec.rb @@ -42,18 +42,18 @@ RSpec.describe Gitlab::WordDiff::Parser do { index: 1, old_pos: 2, new_pos: 2, text: 'Unchanged line', type: nil, marker_ranges: [] }, { index: 2, old_pos: 3, new_pos: 3, text: '', type: nil, marker_ranges: [] }, { index: 3, old_pos: 4, new_pos: 4, text: 'Old changeNew addition unchanged content', type: nil, - marker_ranges: [ - Gitlab::MarkerRange.new(0, 9, mode: :deletion), - Gitlab::MarkerRange.new(10, 21, mode: :addition) - ] }, + marker_ranges: [ + Gitlab::MarkerRange.new(0, 9, mode: :deletion), + Gitlab::MarkerRange.new(10, 21, mode: :addition) + ] }, { index: 4, old_pos: 50, new_pos: 50, text: '@@ -50,14 +50,13 @@', type: 'match', marker_ranges: [] }, { index: 5, old_pos: 50, new_pos: 50, text: 'First change same same same_removed_added_end of the line', type: nil, - marker_ranges: [ - Gitlab::MarkerRange.new(0, 11, mode: :addition), - Gitlab::MarkerRange.new(28, 35, mode: :deletion), - Gitlab::MarkerRange.new(36, 41, mode: :addition) - ] }, + marker_ranges: [ + Gitlab::MarkerRange.new(0, 11, mode: :addition), + Gitlab::MarkerRange.new(28, 35, mode: :deletion), + Gitlab::MarkerRange.new(36, 41, mode: :addition) + ] }, { index: 6, old_pos: 51, new_pos: 51, text: '', type: nil, marker_ranges: [] } ] diff --git a/spec/lib/marginalia_spec.rb b/spec/lib/marginalia_spec.rb index 59add4e8347..5f405e71d79 100644 --- a/spec/lib/marginalia_spec.rb +++ b/spec/lib/marginalia_spec.rb @@ -45,8 +45,8 @@ RSpec.describe 'Marginalia spec' do let(:component_map) do { - "application" => "test", - "endpoint_id" => "MarginaliaTestController#first_user", + "application" => "test", + "endpoint_id" => "MarginaliaTestController#first_user", "correlation_id" => correlation_id, "db_config_name" => "main" } @@ -62,8 +62,8 @@ RSpec.describe 'Marginalia spec' do let(:recorded) { ActiveRecord::QueryRecorder.new { make_request(correlation_id, :first_ci_pipeline) } } let(:component_map) do { - "application" => "test", - "endpoint_id" => "MarginaliaTestController#first_ci_pipeline", + "application" => "test", + "endpoint_id" => "MarginaliaTestController#first_ci_pipeline", "correlation_id" => correlation_id, "db_config_name" => 'ci' } @@ -104,10 +104,10 @@ RSpec.describe 'Marginalia spec' do let(:component_map) do { - "application" => "sidekiq", - "endpoint_id" => "MarginaliaTestJob", + "application" => "sidekiq", + "endpoint_id" => "MarginaliaTestJob", "correlation_id" => sidekiq_job['correlation_id'], - "jid" => sidekiq_job['jid'], + "jid" => sidekiq_job['jid'], "db_config_name" => "main" } end @@ -129,9 +129,9 @@ RSpec.describe 'Marginalia spec' do let(:component_map) do { - "application" => "sidekiq", - "endpoint_id" => "ActionMailer::MailDeliveryJob", - "jid" => delivery_job.job_id, + "application" => "sidekiq", + "endpoint_id" => "ActionMailer::MailDeliveryJob", + "jid" => delivery_job.job_id, "db_config_name" => "main" } end diff --git a/spec/lib/security/ci_configuration/sast_build_action_spec.rb b/spec/lib/security/ci_configuration/sast_build_action_spec.rb index 611a886d252..381ea60e7f5 100644 --- a/spec/lib/security/ci_configuration/sast_build_action_spec.rb +++ b/spec/lib/security/ci_configuration/sast_build_action_spec.rb @@ -33,12 +33,12 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do params.merge( { analyzers: [ { - name: "bandit", - enabled: false + name: "bandit", + enabled: false }, { - name: "brakeman", - enabled: true, + name: "brakeman", + enabled: true, variables: [ { field: "SAST_BRAKEMAN_LEVEL", default_value: "1", @@ -46,8 +46,8 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do ] }, { - name: "flawfinder", - enabled: true, + name: "flawfinder", + enabled: true, variables: [ { field: "SAST_FLAWFINDER_LEVEL", default_value: "1", @@ -62,12 +62,12 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do params.merge( { analyzers: [ { - name: "flawfinder", - enabled: true + name: "flawfinder", + enabled: true }, { - name: "brakeman", - enabled: true + name: "brakeman", + enabled: true } ] } ) @@ -219,49 +219,49 @@ RSpec.describe Security::CiConfiguration::SastBuildAction do def existing_gitlab_ci_and_template_array_without_sast { "stages" => %w(test security), - "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, - "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "security" }, - "include" => [{ "template" => "existing.yml" }] } + "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, + "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "security" }, + "include" => [{ "template" => "existing.yml" }] } end def existing_gitlab_ci_and_single_template_with_sast_and_default_stage { "stages" => %w(test), - "variables" => { "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, - "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "test" }, - "include" => { "template" => "Security/SAST.gitlab-ci.yml" } } + "variables" => { "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, + "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "test" }, + "include" => { "template" => "Security/SAST.gitlab-ci.yml" } } end def existing_gitlab_ci_and_single_template_without_sast { "stages" => %w(test security), - "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, - "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "security" }, - "include" => { "template" => "existing.yml" } } + "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, + "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "security" }, + "include" => { "template" => "existing.yml" } } end def existing_gitlab_ci_with_no_variables { "stages" => %w(test security), - "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "security" }, - "include" => [{ "template" => "Security/SAST.gitlab-ci.yml" }] } + "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "security" }, + "include" => [{ "template" => "Security/SAST.gitlab-ci.yml" }] } end def existing_gitlab_ci_with_no_sast_section { "stages" => %w(test security), - "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, - "include" => [{ "template" => "Security/SAST.gitlab-ci.yml" }] } + "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, + "include" => [{ "template" => "Security/SAST.gitlab-ci.yml" }] } end def existing_gitlab_ci_with_no_sast_variables { "stages" => %w(test security), - "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, - "sast" => { "stage" => "security" }, - "include" => [{ "template" => "Security/SAST.gitlab-ci.yml" }] } + "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "localhost:5000/analyzers" }, + "sast" => { "stage" => "security" }, + "include" => [{ "template" => "Security/SAST.gitlab-ci.yml" }] } end def existing_gitlab_ci { "stages" => %w(test security), - "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "bad_prefix" }, - "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "security" }, - "include" => [{ "template" => "Security/SAST.gitlab-ci.yml" }] } + "variables" => { "RANDOM" => "make sure this persists", "SECURE_ANALYZERS_PREFIX" => "bad_prefix" }, + "sast" => { "variables" => { "SEARCH_MAX_DEPTH" => 1 }, "stage" => "security" }, + "include" => [{ "template" => "Security/SAST.gitlab-ci.yml" }] } end end diff --git a/spec/mailers/emails/pipelines_spec.rb b/spec/mailers/emails/pipelines_spec.rb index 3a2eb105964..1ac989cc46b 100644 --- a/spec/mailers/emails/pipelines_spec.rb +++ b/spec/mailers/emails/pipelines_spec.rb @@ -26,7 +26,7 @@ RSpec.describe Emails::Pipelines do let!(:merge_request) do create(:merge_request, source_branch: 'master', target_branch: 'feature', - source_project: project, target_project: project) + source_project: project, target_project: project) end it 'has correct information that there is no merge request link' do @@ -56,7 +56,7 @@ RSpec.describe Emails::Pipelines do context 'when branch pipeline is set to a merge request as a head pipeline' do let(:pipeline) do create(:ci_pipeline, project: project, ref: ref, sha: sha, - merge_requests_as_head_pipeline: [merge_request]) + merge_requests_as_head_pipeline: [merge_request]) end let(:merge_request) do diff --git a/spec/migrations/20210804150320_create_base_work_item_types_spec.rb b/spec/migrations/20210804150320_create_base_work_item_types_spec.rb index 6df8e1b2ebf..ae510826fe1 100644 --- a/spec/migrations/20210804150320_create_base_work_item_types_spec.rb +++ b/spec/migrations/20210804150320_create_base_work_item_types_spec.rb @@ -10,9 +10,9 @@ RSpec.describe CreateBaseWorkItemTypes, :migration do let(:base_types) do { - issue: 0, - incident: 1, - test_case: 2, + issue: 0, + incident: 1, + test_case: 2, requirement: 3 } end diff --git a/spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb b/spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb index 1957a973ee1..552602983d9 100644 --- a/spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb +++ b/spec/migrations/20210831203408_upsert_base_work_item_types_spec.rb @@ -10,9 +10,9 @@ RSpec.describe UpsertBaseWorkItemTypes, :migration do let(:base_types) do { - issue: 0, - incident: 1, - test_case: 2, + issue: 0, + incident: 1, + test_case: 2, requirement: 3 } end diff --git a/spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb b/spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb index 6a82ed016af..ef6dd94d9e3 100644 --- a/spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb +++ b/spec/migrations/20211117084814_migrate_remaining_u2f_registrations_spec.rb @@ -33,11 +33,11 @@ RSpec.describe MigrateRemainingU2fRegistrations, :migration do device = U2F::FakeU2F.new(FFaker::BaconIpsum.characters(5), { key_handle: SecureRandom.random_bytes(255) }) public_key ||= Base64.strict_encode64(device.origin_public_key_raw) u2f_registrations.create!({ id: id, - certificate: Base64.strict_encode64(device.cert_raw), - key_handle: U2F.urlsafe_encode64(device.key_handle_raw), - public_key: public_key, - counter: 5, - name: name, - user_id: user.id }) + certificate: Base64.strict_encode64(device.cert_raw), + key_handle: U2F.urlsafe_encode64(device.key_handle_raw), + public_key: public_key, + counter: 5, + name: name, + user_id: user.id }) end end diff --git a/spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb b/spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb index b80e4703f07..34a6e2fdd12 100644 --- a/spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb +++ b/spec/migrations/20211126204445_add_task_to_work_item_types_spec.rb @@ -10,11 +10,11 @@ RSpec.describe AddTaskToWorkItemTypes, :migration do let(:base_types) do { - issue: 0, - incident: 1, - test_case: 2, + issue: 0, + incident: 1, + test_case: 2, requirement: 3, - task: 4 + task: 4 } end diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index e4c0e81cc1b..6fbff95f504 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -1375,32 +1375,11 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do let(:pipeline) { build(:ci_empty_pipeline, :created) } before do - create(:ci_stage, project: project, - pipeline: pipeline, - position: 4, - name: 'deploy') - - create(:ci_build, project: project, - pipeline: pipeline, - stage: 'test', - stage_idx: 3, - name: 'test') - - create(:ci_build, project: project, - pipeline: pipeline, - stage: 'build', - stage_idx: 2, - name: 'build') - - create(:ci_stage, project: project, - pipeline: pipeline, - position: 1, - name: 'sanity') - - create(:ci_stage, project: project, - pipeline: pipeline, - position: 5, - name: 'cleanup') + create(:ci_stage, project: project, pipeline: pipeline, position: 4, name: 'deploy') + create(:ci_build, project: project, pipeline: pipeline, stage: 'test', stage_idx: 3, name: 'test') + create(:ci_build, project: project, pipeline: pipeline, stage: 'build', stage_idx: 2, name: 'build') + create(:ci_stage, project: project, pipeline: pipeline, position: 1, name: 'sanity') + create(:ci_stage, project: project, pipeline: pipeline, position: 5, name: 'cleanup') end subject { pipeline.stages } @@ -1649,9 +1628,8 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do context 'when auto merge is enabled' do let_it_be_with_reload(:merge_request) { create(:merge_request, :merge_when_pipeline_succeeds) } let_it_be_with_reload(:pipeline) do - create(:ci_pipeline, :running, project: merge_request.source_project, - ref: merge_request.source_branch, - sha: merge_request.diff_head_sha) + create(:ci_pipeline, :running, + project: merge_request.source_project, ref: merge_request.source_branch, sha: merge_request.diff_head_sha) end before_all do diff --git a/spec/models/commit_status_spec.rb b/spec/models/commit_status_spec.rb index 78d4d9de84e..e0e17ee5e89 100644 --- a/spec/models/commit_status_spec.rb +++ b/spec/models/commit_status_spec.rb @@ -836,17 +836,11 @@ RSpec.describe CommitStatus do context 'when commit status does not have stage but it exists' do let!(:stage) do - create(:ci_stage, project: project, - pipeline: pipeline, - name: 'test') + create(:ci_stage, project: project, pipeline: pipeline, name: 'test') end let(:commit_status) do - create(:commit_status, project: project, - pipeline: pipeline, - name: 'rspec', - stage: 'test', - status: :success) + create(:commit_status, project: project, pipeline: pipeline, name: 'rspec', stage: 'test', status: :success) end it 'uses existing stage', :sidekiq_might_not_need_inline do diff --git a/spec/policies/ci/pipeline_schedule_policy_spec.rb b/spec/policies/ci/pipeline_schedule_policy_spec.rb index f2c99e0de95..9aa50876b55 100644 --- a/spec/policies/ci/pipeline_schedule_policy_spec.rb +++ b/spec/policies/ci/pipeline_schedule_policy_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Ci::PipelineSchedulePolicy, :models do +RSpec.describe Ci::PipelineSchedulePolicy, :models, :clean_gitlab_redis_cache do let_it_be(:user) { create(:user) } let_it_be(:project) { create(:project, :repository) } let_it_be(:pipeline_schedule, reload: true) { create(:ci_pipeline_schedule, :nightly, project: project) } diff --git a/spec/presenters/clusters/cluster_presenter_spec.rb b/spec/presenters/clusters/cluster_presenter_spec.rb index 7349f444fac..755f1ea6078 100644 --- a/spec/presenters/clusters/cluster_presenter_spec.rb +++ b/spec/presenters/clusters/cluster_presenter_spec.rb @@ -119,18 +119,20 @@ RSpec.describe Clusters::ClusterPresenter do subject { cluster_presenter.health_data(clusterable_presenter) } it do - is_expected.to include('clusters-path': clusterable_presenter.index_path, - 'dashboard-endpoint': clusterable_presenter.metrics_dashboard_path(cluster), - 'documentation-path': help_page_path('user/infrastructure/clusters/manage/clusters_health'), - 'add-dashboard-documentation-path': help_page_path('operations/metrics/dashboards/index.md', anchor: 'add-a-new-dashboard-to-your-project'), - 'empty-getting-started-svg-path': match_asset_path('/assets/illustrations/monitoring/getting_started.svg'), - 'empty-loading-svg-path': match_asset_path('/assets/illustrations/monitoring/loading.svg'), - 'empty-no-data-svg-path': match_asset_path('/assets/illustrations/monitoring/no_data.svg'), - 'empty-no-data-small-svg-path': match_asset_path('illustrations/chart-empty-state-small.svg'), - 'empty-unable-to-connect-svg-path': match_asset_path('/assets/illustrations/monitoring/unable_to_connect.svg'), - 'settings-path': '', - 'project-path': '', - 'tags-path': '') + is_expected.to include( + 'clusters-path': clusterable_presenter.index_path, + 'dashboard-endpoint': clusterable_presenter.metrics_dashboard_path(cluster), + 'documentation-path': help_page_path('user/infrastructure/clusters/manage/clusters_health'), + 'add-dashboard-documentation-path': help_page_path('operations/metrics/dashboards/index.md', anchor: 'add-a-new-dashboard-to-your-project'), + 'empty-getting-started-svg-path': match_asset_path('/assets/illustrations/monitoring/getting_started.svg'), + 'empty-loading-svg-path': match_asset_path('/assets/illustrations/monitoring/loading.svg'), + 'empty-no-data-svg-path': match_asset_path('/assets/illustrations/monitoring/no_data.svg'), + 'empty-no-data-small-svg-path': match_asset_path('illustrations/chart-empty-state-small.svg'), + 'empty-unable-to-connect-svg-path': match_asset_path('/assets/illustrations/monitoring/unable_to_connect.svg'), + 'settings-path': '', + 'project-path': '', + 'tags-path': '' + ) end end