diff --git a/ee/app/finders/remote_development/cluster_agents_finder.rb b/ee/app/finders/remote_development/cluster_agents_finder.rb index 3dc80d9b4e59ec7f10f4c235dcf19273408449c9..29a26292067431325773f41e923de2a8c79bed56 100644 --- a/ee/app/finders/remote_development/cluster_agents_finder.rb +++ b/ee/app/finders/remote_development/cluster_agents_finder.rb @@ -13,6 +13,7 @@ def self.fetch_agents(filter, namespace, user) when :unmapped validate_user_can_read_namespace_agent_mappings!(user: user, namespace: namespace) + # noinspection RailsParamDefResolve -- A symbol is a valid argument for 'select' existing_mapped_agents = RemoteDevelopmentNamespaceClusterAgentMapping .for_namespaces([namespace.id]) diff --git a/ee/app/graphql/mutations/remote_development/workspaces/create.rb b/ee/app/graphql/mutations/remote_development/workspaces/create.rb index 05d847449839f0a4c311b8c8973d9ccdfc956486..bda19dc4d44aa6b83e503715e2819e01c900582a 100644 --- a/ee/app/graphql/mutations/remote_development/workspaces/create.rb +++ b/ee/app/graphql/mutations/remote_development/workspaces/create.rb @@ -106,7 +106,7 @@ def resolve(args) end end - # noinspection RubyNilAnalysis + # noinspection RubyNilAnalysis - This is because the superclass #current_user uses #[], which can return nil track_usage_event(:users_creating_workspaces, current_user.id) service = ::RemoteDevelopment::Workspaces::CreateService.new(current_user: current_user) diff --git a/ee/app/graphql/resolvers/remote_development/workspaces_for_agent_resolver.rb b/ee/app/graphql/resolvers/remote_development/workspaces_for_agent_resolver.rb index 97e36aab46a3738be8f2904c79f011901714a1f8..880535807c02d9d399ba1806b2600b57a32f886e 100644 --- a/ee/app/graphql/resolvers/remote_development/workspaces_for_agent_resolver.rb +++ b/ee/app/graphql/resolvers/remote_development/workspaces_for_agent_resolver.rb @@ -4,7 +4,6 @@ module Resolvers module RemoteDevelopment class WorkspacesForAgentResolver < ::Resolvers::BaseResolver include ResolvesIds - # noinspection RubyResolve - likely due to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 include Gitlab::Graphql::Authorize::AuthorizeResource type Types::RemoteDevelopment::WorkspaceType.connection_type, null: true diff --git a/ee/app/models/remote_development/workspace.rb b/ee/app/models/remote_development/workspace.rb index f2bed27057f75853bdf5acde4b1e58110fd4ebd2..377811bc1ea2685b72be247394baebafc78a31ee 100644 --- a/ee/app/models/remote_development/workspace.rb +++ b/ee/app/models/remote_development/workspace.rb @@ -4,7 +4,6 @@ module RemoteDevelopment class Workspace < ApplicationRecord include IgnorableColumns include Sortable - # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 include RemoteDevelopment::Workspaces::States include ::Gitlab::Utils::StrongMemoize @@ -80,6 +79,7 @@ def workspaces_count_for_current_user_and_agent .by_agent_ids(cluster_agent_id) .count end + strong_memoize_attr :workspaces_count_for_current_user_and_agent def workspaces_count_for_current_agent @@ -88,11 +88,13 @@ def workspaces_count_for_current_agent .by_agent_ids(cluster_agent_id) .count end + strong_memoize_attr :workspaces_count_for_current_agent def exceeds_workspaces_per_user_quota? return unless remote_development_agent_config + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 quota = remote_development_agent_config.workspaces_per_user_quota return true if quota == 0 return false if quota == -1 @@ -103,6 +105,7 @@ def exceeds_workspaces_per_user_quota? def exceeds_workspaces_quota? return unless remote_development_agent_config + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 quota = remote_development_agent_config.workspaces_quota return true if quota == 0 return false if quota == -1 @@ -159,21 +162,27 @@ def enforce_permanent_termination def enforce_quotas agent_config = remote_development_agent_config if exceeds_workspaces_per_user_quota? + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 errors.add :base, - format(s_('RemoteDevelopment|You cannot create a workspace because you already have "%{count}" existing workspaces for the given agent with a per user quota of "%{quota}" workspaces'), + format( + s_('RemoteDevelopment|You cannot create a workspace because you already have "%{count}" existing workspaces for the given agent with a per user quota of "%{quota}" workspaces'), count: workspaces_count_for_current_user_and_agent, - quota: agent_config.workspaces_per_user_quota) + quota: agent_config.workspaces_per_user_quota + ) elsif exceeds_workspaces_quota? + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 errors.add :base, - format(s_('RemoteDevelopment|You cannot create a workspace because there are already "%{count}" existing workspaces for the given agent with a total quota of "%{quota}" workspaces'), + format( + s_('RemoteDevelopment|You cannot create a workspace because there are already "%{count}" existing workspaces for the given agent with a total quota of "%{quota}" workspaces'), count: workspaces_count_for_current_agent, - quota: agent_config.workspaces_quota) + quota: agent_config.workspaces_quota + ) end end + # rubocop:enable Layout/LineLength -- Long messages for UI def touch_desired_state_updated_at - # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 self.desired_state_updated_at = Time.current.utc end end diff --git a/ee/app/policies/remote_development/workspace_policy.rb b/ee/app/policies/remote_development/workspace_policy.rb index bb3a887a24f7f72925fbcfbe6b278ab719299389..8dc16e86740199571bca5e25dcfc295313edfaad 100644 --- a/ee/app/policies/remote_development/workspace_policy.rb +++ b/ee/app/policies/remote_development/workspace_policy.rb @@ -3,9 +3,6 @@ module RemoteDevelopment # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-25400 class WorkspacePolicy < BasePolicy - # TODO: This policy should be updated/replaced with a new authorization scheme based on runners. - # See https://gitlab.com/groups/gitlab-org/-/epics/10272 - condition(:can_access_workspaces_feature) { user&.can?(:access_workspaces_feature, :global) } condition(:can_admin_cluster_agent_for_workspace) { user&.can?(:admin_cluster, workspace.agent) } condition(:can_admin_owned_workspace) { workspace_owner? && has_developer_access_to_workspace_project? } diff --git a/ee/lib/remote_development/agent_config/updater.rb b/ee/lib/remote_development/agent_config/updater.rb index 3b3f8e37acca313315957ddb8cda2af463b9e602..b584586cf26b3ffaa98c7552333857677f55344e 100644 --- a/ee/lib/remote_development/agent_config/updater.rb +++ b/ee/lib/remote_development/agent_config/updater.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -# noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 module RemoteDevelopment module AgentConfig class Updater @@ -47,6 +46,7 @@ def self.update(value) workspaces_update_fields = { force_include_all_resources: true } + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 if remote_development_agent_config.dns_zone_previously_was workspaces_update_fields[:dns_zone] = remote_development_agent_config.dns_zone end diff --git a/ee/lib/remote_development/namespace_cluster_agent_mappings/validations.rb b/ee/lib/remote_development/namespace_cluster_agent_mappings/validations.rb index 11709fcc99b5f5e7d278b969b3e29055f52b5887..4aaeea5093eae554a8ac25e8c8603605b51f1791 100644 --- a/ee/lib/remote_development/namespace_cluster_agent_mappings/validations.rb +++ b/ee/lib/remote_development/namespace_cluster_agent_mappings/validations.rb @@ -42,6 +42,7 @@ def self.traversal_ids_for_cluster_agents(cluster_agent_ids:) # project_namespaces_by_id must contain project.project_namespace_id as "projects" table has a # ON CASCADE DELETE constraint with respect to the projects table. As such, if a project can be retrieved # from the database, so should its project_namespace + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 project_namespace = project_namespaces_by_id[project.project_namespace_id] hash[cluster_agent_id] = project_namespace.traversal_ids diff --git a/ee/lib/remote_development/settings/env_var_reader.rb b/ee/lib/remote_development/settings/env_var_reader.rb index 868f45471e762166236d3a4ffcd7674abc21ca1a..0187af47ad601923beffdf2313a35a511749e3fa 100644 --- a/ee/lib/remote_development/settings/env_var_reader.rb +++ b/ee/lib/remote_development/settings/env_var_reader.rb @@ -41,11 +41,12 @@ def self.read(value) end # @param [String] env_var_name - # @param [Integer,String] env_var_value_string + # @param [String] env_var_value_string # @param [Class] setting_type # @return [Object] # @raise [RuntimeError] def self.cast_value(env_var_name:, env_var_value_string:, setting_type:) + # noinspection RubyIfCanBeCaseInspection -- This cannot be a case statement - see discussion here https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148287#note_1849160293 if setting_type == String env_var_value_string elsif setting_type == Integer diff --git a/ee/lib/remote_development/workspaces/create/workspace_creator.rb b/ee/lib/remote_development/workspaces/create/workspace_creator.rb index f64a90c0442fc3de4bf7ee6c866a42d41eff6cd0..3b44670b8f1fec215c6d1155545eb04b6a0a9de8 100644 --- a/ee/lib/remote_development/workspaces/create/workspace_creator.rb +++ b/ee/lib/remote_development/workspaces/create/workspace_creator.rb @@ -3,7 +3,6 @@ module RemoteDevelopment module Workspaces module Create - # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 class WorkspaceCreator include States include Messages diff --git a/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater.rb b/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater.rb index a71ab3aa903c3039f7c249c5afd673362e3bc6b6..b9bce56b395bc5b9976b53c222b96e75ebe6e315 100644 --- a/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater.rb +++ b/ee/lib/remote_development/workspaces/reconcile/persistence/workspaces_from_agent_infos_updater.rb @@ -4,7 +4,6 @@ module RemoteDevelopment module Workspaces module Reconcile module Persistence - # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 class WorkspacesFromAgentInfosUpdater # @param [Hash] value # @return [Hash] diff --git a/ee/spec/features/remote_development/workspaces_dropdown_group_spec.rb b/ee/spec/features/remote_development/workspaces_dropdown_group_spec.rb index da0a5c63af70cf2311295890f5c9d4c16cb15b09..03b9d2948b02ec6ae1316b2bf43c4ded35652fb3 100644 --- a/ee/spec/features/remote_development/workspaces_dropdown_group_spec.rb +++ b/ee/spec/features/remote_development/workspaces_dropdown_group_spec.rb @@ -2,7 +2,6 @@ require 'spec_helper' -# noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 RSpec.describe 'Remote Development workspaces dropdown group', :api, :js, feature_category: :remote_development do include_context 'with remote development shared fixtures' include_context 'file upload requests helpers' @@ -75,6 +74,7 @@ it 'allows navigating to the new workspace page' do click_link 'New workspace' + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(page).to have_current_path("#{new_remote_development_workspace_path}?project=#{project.full_path}") expect(page).to have_css('button', text: project.name_with_namespace) end @@ -138,6 +138,7 @@ def expect_workspace_state_indicator(state) end describe 'when viewing blob page' do + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 let(:subject) { project_blob_path(project, "#{project.default_branch}/#{devfile_path}") } it_behaves_like 'views and manages workspaces in workspaces dropdown group based on feature flag' diff --git a/ee/spec/features/remote_development/workspaces_spec.rb b/ee/spec/features/remote_development/workspaces_spec.rb index 9916870ef2c2cf201e90e0687c660845f070f2ed..ed2a666e3ffe5ff000e566e97af9e72a52130880 100644 --- a/ee/spec/features/remote_development/workspaces_spec.rb +++ b/ee/spec/features/remote_development/workspaces_spec.rb @@ -2,7 +2,6 @@ require 'spec_helper' -# noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 RSpec.describe 'Remote Development workspaces', :api, :js, feature_category: :remote_development do include_context 'with remote development shared fixtures' include_context 'file upload requests helpers' @@ -45,6 +44,7 @@ # NAVIGATE TO WORKSPACES PAGE + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 visit remote_development_workspaces_path wait_for_requests @@ -54,7 +54,7 @@ click_button 'Select a project' find_by_testid("listbox-item-#{project.full_path}").click wait_for_requests - # noinspection RubyMismatchedArgumentType - TODO: Try suggestions in https://youtrack.jetbrains.com/issue/RUBY-25400/Programmatically-defined-constants-always-produce-Unresolved-reference-error#focus=Comments-27-8161148.0-0 + # noinspection RubyMismatchedArgumentType -- Rubymine is finding the wrong `select` select agent.name, from: 'Cluster agent' fill_in 'Workspace automatically terminates after', with: '20' click_button 'Create workspace' diff --git a/ee/spec/lib/remote_development/agent_config/updater_spec.rb b/ee/spec/lib/remote_development/agent_config/updater_spec.rb index 9057014fda55eb7c0f6ba8a3d0b702f944490215..519da9f6298739c0dda85e0f5bed7056dba27b51 100644 --- a/ee/spec/lib/remote_development/agent_config/updater_spec.rb +++ b/ee/spec/lib/remote_development/agent_config/updater_spec.rb @@ -2,7 +2,6 @@ require 'spec_helper' -# noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 RSpec.describe ::RemoteDevelopment::AgentConfig::Updater, feature_category: :remote_development do include ResultMatchers @@ -99,7 +98,9 @@ .to eq(default_resources_per_workspace_container) expect(config_instance.max_resources_per_workspace.deep_symbolize_keys) .to eq(max_resources_per_workspace) + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(config_instance.workspaces_quota).to eq(saved_quota) + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(config_instance.workspaces_per_user_quota).to eq(saved_quota) expect(result) diff --git a/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/main_integration_spec.rb b/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/main_integration_spec.rb index 26bd5cb10e365746e4f1e948975a967318129241..400097b55b6cfa39f01e8be81d503957cf19854a 100644 --- a/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/main_integration_spec.rb +++ b/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/main_integration_spec.rb @@ -26,8 +26,10 @@ expect(response.dig(:payload, :namespace_cluster_agent_mapping)).not_to be_nil mapping = response.dig(:payload, :namespace_cluster_agent_mapping) + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(mapping.cluster_agent_id).to eq(cluster_agent.id) expect(mapping.namespace_id).to eq(namespace.id) + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(mapping.creator_id).to eq(creator.id) end end diff --git a/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/main_spec.rb b/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/main_spec.rb index 1feba23ce63f75e3b795a49f877971564cf49d4c..d049b9bf4ef376afc1cd7fd79f7fdcc0bf59bd4f 100644 --- a/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/main_spec.rb +++ b/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/main_spec.rb @@ -22,7 +22,7 @@ end it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end @@ -47,7 +47,7 @@ shared_examples "rop invocation with error response" do it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end diff --git a/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/mapping_creator_spec.rb b/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/mapping_creator_spec.rb index e204aa4adc5fc2a9629d2c7b9c35c5950607f4f2..679628c469dd5d702b0044f5fceb658a86c2539f 100644 --- a/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/mapping_creator_spec.rb +++ b/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/create/mapping_creator_spec.rb @@ -38,18 +38,21 @@ end context 'when cluster agent does not exist' do + # noinspection RubyResolve -- Rubymine isn't finding build_stubbed let_it_be(:agent) { build_stubbed(:cluster_agent) } it_behaves_like 'err result', expected_error_details: "Agent can't be blank" end context 'when namespace does not exist' do + # noinspection RubyResolve -- Rubymine isn't finding build_stubbed let_it_be(:namespace) { build_stubbed(:group) } it_behaves_like 'err result', expected_error_details: "Namespace can't be blank" end context 'when user does not exist' do + # noinspection RubyResolve -- Rubymine isn't finding build_stubbed let_it_be(:user) { build_stubbed(:user) } it_behaves_like 'err result', expected_error_details: "User can't be blank" @@ -62,8 +65,10 @@ expect(result.unwrap).to be_a(RemoteDevelopment::Messages::NamespaceClusterAgentMappingCreateSuccessful) new_mapping = result.unwrap.context[:namespace_cluster_agent_mapping] + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(new_mapping.cluster_agent_id).to be(agent.id) expect(new_mapping.namespace_id).to be(namespace.id) + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(new_mapping.creator_id).to be(user.id) end end diff --git a/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/delete/main_spec.rb b/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/delete/main_spec.rb index 7ff9ac5e8d2c3fea2fbaa0e12e8c08c5ab1c927b..683434fda20b3926cde10960a238100a621a731b 100644 --- a/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/delete/main_spec.rb +++ b/ee/spec/lib/remote_development/namespace_cluster_agent_mappings/delete/main_spec.rb @@ -21,7 +21,7 @@ end it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end @@ -46,7 +46,7 @@ shared_examples "rop invocation with error response" do it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end diff --git a/ee/spec/lib/remote_development/settings/main_spec.rb b/ee/spec/lib/remote_development/settings/main_spec.rb index 0cd4194f27d6f577a93fa9ba93a85b344b12c07a..0b5415c88d33e6f3776583dc78e91765342778f5 100644 --- a/ee/spec/lib/remote_development/settings/main_spec.rb +++ b/ee/spec/lib/remote_development/settings/main_spec.rb @@ -28,7 +28,7 @@ end it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.get_settings(value_passed_along_steps) end @@ -45,7 +45,7 @@ shared_examples "rop invocation with error response" do it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.get_settings(value_passed_along_steps) end diff --git a/ee/spec/lib/remote_development/workspaces/create/creator_spec.rb b/ee/spec/lib/remote_development/workspaces/create/creator_spec.rb index ee8253488ecfeb37ab14b4a543b265a8c79cde63..cf9d54bf80a415a8400efadde8982c5c692e1345 100644 --- a/ee/spec/lib/remote_development/workspaces/create/creator_spec.rb +++ b/ee/spec/lib/remote_development/workspaces/create/creator_spec.rb @@ -53,7 +53,7 @@ end it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.create(initial_value) end @@ -70,7 +70,7 @@ shared_examples "rop invocation with error response" do it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.create(initial_value) end diff --git a/ee/spec/lib/remote_development/workspaces/create/main_spec.rb b/ee/spec/lib/remote_development/workspaces/create/main_spec.rb index 5465bac745973cf1f2e816c5e729b1c579ae0e43..42dcb6417457f8608b59ee6b06b8afd1968c9e9c 100644 --- a/ee/spec/lib/remote_development/workspaces/create/main_spec.rb +++ b/ee/spec/lib/remote_development/workspaces/create/main_spec.rb @@ -30,7 +30,7 @@ end it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end @@ -53,7 +53,7 @@ shared_examples "rop invocation with error response" do it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end diff --git a/ee/spec/lib/remote_development/workspaces/reconcile/main_integration_spec.rb b/ee/spec/lib/remote_development/workspaces/reconcile/main_integration_spec.rb index e3dcd80082e8248288fec83b8c69f3985e70094f..969ec5c90d7373827f35c1b7cf92e3dbebaa947e 100644 --- a/ee/spec/lib/remote_development/workspaces/reconcile/main_integration_spec.rb +++ b/ee/spec/lib/remote_development/workspaces/reconcile/main_integration_spec.rb @@ -3,7 +3,6 @@ require 'spec_helper' # rubocop:disable RSpec/MultipleMemoizedHelpers -- needed helpers for multiple cases -# noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 RSpec.describe RemoteDevelopment::Workspaces::Reconcile::Main, "Integration", :freeze_time, feature_category: :remote_development do include_context 'with remote development shared fixtures' @@ -285,13 +284,16 @@ before do # Ensure that both desired_state_updated_at and responded_to_agent_at are before Time.current, # so that we can test for any necessary differences after processing updates them + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace.desired_state_updated_at).to be_before(Time.current) + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace.responded_to_agent_at).to be_before(Time.current) end after do # After processing, the responded_to_agent_at should always have been updated workspace.reload + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace.responded_to_agent_at) .not_to be_before(workspace.desired_state_updated_at) end @@ -300,6 +302,7 @@ context 'when desired_state matches actual_state' do # rubocop:todo RSpec/ExpectInHook -- This could be moved to a shared example before do + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace.responded_to_agent_at) .to be_after(workspace.desired_state_updated_at) end @@ -371,6 +374,7 @@ # rubocop:disable RSpec/ExpectInHook -- This could be moved to a shared example before do + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace.responded_to_agent_at) .to be_before(workspace.desired_state_updated_at) end diff --git a/ee/spec/lib/remote_development/workspaces/reconcile/main_spec.rb b/ee/spec/lib/remote_development/workspaces/reconcile/main_spec.rb index d9786b488cebb3093456ef9db90f957847b4e32b..2c7fc9af41cd3c7328b607dbad936217d36b5724 100644 --- a/ee/spec/lib/remote_development/workspaces/reconcile/main_spec.rb +++ b/ee/spec/lib/remote_development/workspaces/reconcile/main_spec.rb @@ -42,7 +42,7 @@ end it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end @@ -59,7 +59,7 @@ shared_examples "rop invocation with error response" do it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end diff --git a/ee/spec/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater_spec.rb b/ee/spec/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater_spec.rb index e2e00e9aeb5598f7b22a51c11f12c9c779350ab6..7f923af0cced8eb4cf8e02e01294bf82ed9af204 100644 --- a/ee/spec/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater_spec.rb +++ b/ee/spec/lib/remote_development/workspaces/reconcile/persistence/workspaces_to_be_returned_updater_spec.rb @@ -2,7 +2,6 @@ require 'spec_helper' -# noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 RSpec.describe RemoteDevelopment::Workspaces::Reconcile::Persistence::WorkspacesToBeReturnedUpdater, feature_category: :remote_development do let_it_be(:user) { create(:user) } let_it_be(:agent) { create(:ee_cluster_agent, :with_remote_development_agent_config) } @@ -70,8 +69,11 @@ context "for update_type FULL" do it "updates all workspaces", :unlimited_max_formatted_output_length do returned_value + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace1.reload.responded_to_agent_at).to be > 1.minute.ago + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace2.reload.responded_to_agent_at).to be > 1.minute.ago + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace3.reload.responded_to_agent_at).to be > 1.minute.ago end diff --git a/ee/spec/lib/remote_development/workspaces/update/main_spec.rb b/ee/spec/lib/remote_development/workspaces/update/main_spec.rb index 607981652a8cbb68e57784a3ba79cc671bc3eeee..c9bbeb8ec982fd284a7b0f4245a1cac8849d38c4 100644 --- a/ee/spec/lib/remote_development/workspaces/update/main_spec.rb +++ b/ee/spec/lib/remote_development/workspaces/update/main_spec.rb @@ -22,7 +22,7 @@ end it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end @@ -47,7 +47,7 @@ shared_examples "rop invocation with error response" do it "returns expected response" do - # noinspection RubyResolve -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect do described_class.main(value_passed_along_steps) end diff --git a/ee/spec/models/remote_development/remote_development_agent_config_spec.rb b/ee/spec/models/remote_development/remote_development_agent_config_spec.rb index 1474c0021f1d5dc5f884cd6dcdd3a22be909b687..e9120e0f51354abcdaefd7b4ecd4f7659b82aea4 100644 --- a/ee/spec/models/remote_development/remote_development_agent_config_spec.rb +++ b/ee/spec/models/remote_development/remote_development_agent_config_spec.rb @@ -2,7 +2,6 @@ require 'spec_helper' -# noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 RSpec.describe RemoteDevelopment::RemoteDevelopmentAgentConfig, feature_category: :remote_development do let_it_be_with_reload(:agent) { create(:ee_cluster_agent, :with_remote_development_agent_config) } let(:default_default_resources_per_workspace_container) { {} } @@ -55,6 +54,7 @@ end it 'when network_policy_egress is nil' do + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 config.network_policy_egress = nil expect(config).not_to be_valid expect(config.errors[:network_policy_egress]).to include( @@ -69,6 +69,7 @@ end it 'when default_resources_per_workspace_container is nil' do + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 config.default_resources_per_workspace_container = nil expect(config).not_to be_valid expect(config.errors[:default_resources_per_workspace_container]).to include( @@ -83,6 +84,7 @@ end it 'when default_resources_per_workspace_container is nil' do + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 config.max_resources_per_workspace = nil expect(config).not_to be_valid expect(config.errors[:max_resources_per_workspace]).to include( diff --git a/ee/spec/models/remote_development/workspace_spec.rb b/ee/spec/models/remote_development/workspace_spec.rb index 34af0e778ef5ef980c8036d0c99bed3f908788d2..5c69f93353dccf9a65b5d059747dc4dbb16aee38 100644 --- a/ee/spec/models/remote_development/workspace_spec.rb +++ b/ee/spec/models/remote_development/workspace_spec.rb @@ -2,7 +2,6 @@ require 'spec_helper' -# noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 RSpec.describe RemoteDevelopment::Workspace, feature_category: :remote_development do let_it_be(:user) { create(:user) } let_it_be(:agent, reload: true) { create(:ee_cluster_agent, :with_remote_development_agent_config) } @@ -49,6 +48,7 @@ expect(agent.remote_development_agent_config.workspaces.first).to eq(workspace) expect(workspace.url_prefix).to eq("60001-#{workspace.name}") expect(workspace.dns_zone).to eq(agent.remote_development_agent_config.dns_zone) + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace.url_query_string).to eq("folder=dir%2Ffile") end end @@ -80,6 +80,7 @@ it 'sets desired_state_updated_at' do workspace.save! + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 expect(workspace.desired_state_updated_at).to eq(Time.current) end end @@ -192,7 +193,9 @@ context 'when dns_zone matches config dns_zone' do before do + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 workspace.dns_zone = 'zone1' + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 agent.remote_development_agent_config.dns_zone = 'zone1' end @@ -204,6 +207,7 @@ context 'when dns_zone does not match config dns_zone' do before do workspace.dns_zone = 'zone1' + # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31542 agent.remote_development_agent_config.dns_zone = 'zone2' end diff --git a/ee/spec/policies/remote_development/workspace_policy_spec.rb b/ee/spec/policies/remote_development/workspace_policy_spec.rb index bca3db195c372bffe89c7b5de68091d4a7c6ac4b..85a7da573b523b0edd49612491b8ba7b709f29fa 100644 --- a/ee/spec/policies/remote_development/workspace_policy_spec.rb +++ b/ee/spec/policies/remote_development/workspace_policy_spec.rb @@ -16,7 +16,6 @@ let_it_be(:workspace_project, refind: true) { create(:project, creator: workspace_project_creator) } let_it_be(:workspace_owner, refind: true) { create(:user) } let_it_be(:workspace, refind: true) do - # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31543 create(:workspace, project: workspace_project, agent: agent, user: workspace_owner) end @@ -45,7 +44,7 @@ end shared_examples 'fixture sanity checks' do - # noinspection RubyResolve - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-31543 + # noinspection RubyResolve -- Rubymine is incorrectly resolving workspace_project as `QA::Resource::Project`. it "has fixture sanity checks" do expect(agent_project.creator_id).not_to eq(workspace_project.creator_id) expect(agent_project.creator_id).not_to eq(user.id) diff --git a/ee/spec/validators/remote_development/network_policy_egress_validator_spec.rb b/ee/spec/validators/remote_development/network_policy_egress_validator_spec.rb index 1c24c6ae7d1130006e65c1f4d384d1d667eaac9a..cbaa4e4c6e528ba8e3ee0c1b42d09a539c7ad2c2 100644 --- a/ee/spec/validators/remote_development/network_policy_egress_validator_spec.rb +++ b/ee/spec/validators/remote_development/network_policy_egress_validator_spec.rb @@ -4,6 +4,7 @@ RSpec.describe RemoteDevelopment::NetworkPolicyEgressValidator, feature_category: :remote_development do let(:model) do + # noinspection RubyArgCount -- Rubymine is detecting wrong class here Class.new do include ActiveModel::Model include ActiveModel::Validations @@ -17,7 +18,6 @@ using RSpec::Parameterized::TableSyntax - # noinspection RubyMismatchedArgumentType - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-32041 where(:egress, :validity, :errors) do # rubocop:disable Layout/LineLength -- The RSpec table syntax often requires long lines for errors nil | false | { egress: ['must be an array'] } diff --git a/ee/spec/validators/remote_development/workspace_container_resources_validator_spec.rb b/ee/spec/validators/remote_development/workspace_container_resources_validator_spec.rb index ee7064777cd85ff868d019320adcec80a7f14457..27e8ca7db5abc1526ab1015f749f6ab233131375 100644 --- a/ee/spec/validators/remote_development/workspace_container_resources_validator_spec.rb +++ b/ee/spec/validators/remote_development/workspace_container_resources_validator_spec.rb @@ -17,7 +17,6 @@ using RSpec::Parameterized::TableSyntax - # noinspection RubyMismatchedArgumentType - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-32041 where(:resources, :validity, :errors) do # rubocop:disable Layout/LineLength -- The RSpec table syntax often requires long lines for errors nil | false | { resources: ['must be a hash'] } diff --git a/spec/lib/result_spec.rb b/spec/lib/result_spec.rb index 2b88521fe1419613c6f8270ceb523d8d736f5382..388d573bacc2d416c7f90a7de2680481a5ada123 100644 --- a/spec/lib/result_spec.rb +++ b/spec/lib/result_spec.rb @@ -160,7 +160,7 @@ def self.triple(value) it 'raises TypeError if passed anything other than a lambda or singleton method object' do ex = TypeError msg = /expects a lambda or singleton method object/ - # noinspection RubyMismatchedArgumentType + # noinspection RubyMismatchedArgumentType -- intentionally passing invalid types expect { Result.ok(1).and_then('string') }.to raise_error(ex, msg) expect { Result.ok(1).and_then(proc { Result.ok(1) }) }.to raise_error(ex, msg) expect { Result.ok(1).and_then(1.method(:to_s)) }.to raise_error(ex, msg) diff --git a/spec/support/matchers/invoke_rop_steps.rb b/spec/support/matchers/invoke_rop_steps.rb index af0012aaf13f7bae0ef315c6141070bd07ae7cf1..30f6bd31ec90c6b5a3623b5a36f3b1000ab56ad6 100644 --- a/spec/support/matchers/invoke_rop_steps.rb +++ b/spec/support/matchers/invoke_rop_steps.rb @@ -213,6 +213,7 @@ def set_up_step_class_expectation( value_passed_along_steps: value_passed_along_steps ) + # noinspection RubyNilAnalysis -- We ensure this is not nil expected_return_value_matcher.call(block) end @@ -249,6 +250,7 @@ def set_up_step_class_expectation( chain :and_return_expected_value do |value| validate_expected_return_value(value) expected_return_value = value + # noinspection RubyUnusedLocalVariable -- TODO: open issue and add to https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues expected_return_value_matcher = if value.is_a?(Hash) || value.is_a?(Result) ->(main) { expect(main.call).to eq(value) } else diff --git a/spec/support/shared_examples/lint_factories_shared_examples.rb b/spec/support/shared_examples/lint_factories_shared_examples.rb index 31266379d4beb02badae403438f985eff8d016bc..b356701fed859f87a353cd6ffa46a996a0476445 100644 --- a/spec/support/shared_examples/lint_factories_shared_examples.rb +++ b/spec/support/shared_examples/lint_factories_shared_examples.rb @@ -34,7 +34,7 @@ def self.lint_factories_for(example_group) return if without_factory_defaults.empty? && with_factory_defaults.empty? - RSpec.describe "Lint factories for #{described_class}" do + RSpec.describe "Lint factories for #{described_class}", feature_category: :shared do include_examples 'Lint factories', with_factory_defaults, without_factory_defaults end end diff --git a/spec/validators/kubernetes_container_resources_validator_spec.rb b/spec/validators/kubernetes_container_resources_validator_spec.rb index aea561bafb9a74f5e6db20f5f8031cc0a17799bb..4e8565ab241c0b38bb0559a7158773a28714636f 100644 --- a/spec/validators/kubernetes_container_resources_validator_spec.rb +++ b/spec/validators/kubernetes_container_resources_validator_spec.rb @@ -17,7 +17,6 @@ using RSpec::Parameterized::TableSyntax - # noinspection RubyMismatchedArgumentType - https://handbook.gitlab.com/handbook/tools-and-tips/editors-and-ides/jetbrains-ides/tracked-jetbrains-issues/#ruby-32041 where(:resources, :validity, :errors) do # rubocop:disable Layout/LineLength -- The RSpec table syntax often requires long lines for errors nil | false | { resources: ["must be a hash"] }