diff --git a/.rubocop.yml b/.rubocop.yml index 8c11a42ce99..3e1b994ba27 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -120,6 +120,11 @@ Style/RedundantSelf: Style/SignalException: Enabled: true +# Enforces passing the exception class and exception message instead +# of constructing a new exception instance when raising errors +Style/RaiseArgs: + Enabled: true + # Checks for uses of rescue in its modifier form Style/RescueModifier: Enabled: true diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index f0e77f9ba96..9a2240fcabd 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -766,13 +766,6 @@ Style/Proc: - 'src/api/app/models/owner.rb' - 'src/api/app/models/user.rb' -# Offense count: 248 -# Cop supports --auto-correct. -# Configuration parameters: EnforcedStyle, SupportedStyles. -# SupportedStyles: compact, exploded -Style/RaiseArgs: - Enabled: false - # Offense count: 11 # Cop supports --auto-correct. Style/RedundantBegin: diff --git a/src/api/app/controllers/attribute_controller.rb b/src/api/app/controllers/attribute_controller.rb index d8261bd2335..ed5db38e507 100644 --- a/src/api/app/controllers/attribute_controller.rb +++ b/src/api/app/controllers/attribute_controller.rb @@ -37,7 +37,7 @@ def index # /attribute/:namespace/_meta def namespace_definition if params[:namespace].nil? - raise MissingParameterError.new "parameter 'namespace' is missing" + raise MissingParameterError, "parameter 'namespace' is missing" end namespace = params[:namespace] @@ -92,10 +92,10 @@ def namespace_definition # /attribute/:namespace/:name/_meta def attribute_definition if params[:namespace].nil? - raise MissingParameterError.new "parameter 'namespace' is missing" + raise MissingParameterError, "parameter 'namespace' is missing" end if params[:name].nil? - raise MissingParameterError.new "parameter 'name' is missing" + raise MissingParameterError, "parameter 'name' is missing" end namespace = params[:namespace] name = params[:name] @@ -250,7 +250,7 @@ def cmd_attribute attrib.container = @attribute_container unless attrib.valid? - raise APIException.new({ message: attrib.errors.full_messages.join('\n'), status: 400 }) + raise APIException, { message: attrib.errors.full_messages.join('\n'), status: 400 } end authorize attrib, :create? @@ -282,7 +282,7 @@ def find_attribute_container else # project if Project.is_remote_project?(params[:project]) - raise RemoteProject.new + raise RemoteProject end @attribute_container = Project.get_by_name(params[:project]) end @@ -294,7 +294,7 @@ def find_attribute_container aname = params[:attribute] name_parts = aname.split(/:/) if name_parts.length != 2 - raise InvalidAttribute.new "attribute '#{aname}' must be in the $NAMESPACE:$NAME style" + raise InvalidAttribute, "attribute '#{aname}' must be in the $NAMESPACE:$NAME style" end # existing ? AttribType.find_by_name!(params[:attribute]) diff --git a/src/api/app/controllers/build_controller.rb b/src/api/app/controllers/build_controller.rb index cc262fd278f..db53fdee02f 100644 --- a/src/api/app/controllers/build_controller.rb +++ b/src/api/app/controllers/build_controller.rb @@ -39,7 +39,7 @@ def project_index # check for cmd parameter if params[:cmd].nil? - raise MissingParameterError.new "Missing parameter 'cmd'" + raise MissingParameterError, "Missing parameter 'cmd'" end unless %w(wipe restartbuild killbuild abortbuild rebuild unpublish).include? params[:cmd] @@ -170,7 +170,7 @@ def result_lastsuccess pkg = Package.get_by_project_and_name(params[:project], params[:package], {use_source: false, follow_project_links: true}) - raise RemoteProjectError.new 'The package lifes in a remote project, this is not supported atm' unless pkg + raise RemoteProjectError, 'The package lifes in a remote project, this is not supported atm' unless pkg tprj = Project.get_by_name params[:pathproject] bs = PackageBuildStatus.new(pkg).result(target_project: tprj, srcmd5: params[:srcmd5]) diff --git a/src/api/app/controllers/group_controller.rb b/src/api/app/controllers/group_controller.rb index 24d2c4cfad8..820457fe34c 100644 --- a/src/api/app/controllers/group_controller.rb +++ b/src/api/app/controllers/group_controller.rb @@ -77,7 +77,7 @@ def command elsif params[:cmd] == "set_email" group.set_email params[:email] else - raise UnknownCommandError.new "cmd must be set to add_user or remove_user" + raise UnknownCommandError, "cmd must be set to add_user or remove_user" end render_ok diff --git a/src/api/app/controllers/person_controller.rb b/src/api/app/controllers/person_controller.rb index bf7869795a4..efe6618ebc4 100644 --- a/src/api/app/controllers/person_controller.rb +++ b/src/api/app/controllers/person_controller.rb @@ -28,7 +28,7 @@ def command internal_register return end - raise UnknownCommandError.new "Allowed commands are 'change_password'" + raise UnknownCommandError, "Allowed commands are 'change_password'" end def get_userinfo @@ -80,7 +80,7 @@ def post_userinfo render_ok return end - raise UnknownCommandError.new "Allowed commands are 'change_password', 'lock' or 'delete', got #{params[:cmd]}" + raise UnknownCommandError, "Allowed commands are 'change_password', 'lock' or 'delete', got #{params[:cmd]}" end def put_userinfo @@ -131,7 +131,7 @@ class NoPermissionToGroupList < APIException end def grouplist - raise NoPermissionToGroupList.new unless User.current + raise NoPermissionToGroupList unless User.current user = User.find_by_login! params[:login] @list = User.lookup_strategy.groups(user) @@ -162,7 +162,7 @@ def internal_register if authenticator.proxy_mode? if request.env['HTTP_X_USERNAME'].blank? - raise ErrRegisterSave.new "Missing iChain header" + raise ErrRegisterSave, "Missing iChain header" end login = request.env['HTTP_X_USERNAME'] email = request.env['HTTP_X_EMAIL'] unless request.env['HTTP_X_EMAIL'].blank? @@ -274,7 +274,7 @@ def command_token user = User.get_by_login(params[:login]) unless params[:cmd] == "create" - raise UnknownCommandError.new "Allowed commands are 'create'" + raise UnknownCommandError, "Allowed commands are 'create'" end pkg = nil if params[:project] || params[:package] @@ -292,7 +292,7 @@ def delete_token user = User.get_by_login(params[:login]) token = Token.where( user_id: user.id, id: params[:id] ).first - raise TokenNotFound.new "Specified token \"#{params[:id]}\" got not found" unless token + raise TokenNotFound, "Specified token \"#{params[:id]}\" got not found" unless token token.destroy render_ok end diff --git a/src/api/app/controllers/request_controller.rb b/src/api/app/controllers/request_controller.rb index 7676bcd948e..3f90c1d93cd 100644 --- a/src/api/app/controllers/request_controller.rb +++ b/src/api/app/controllers/request_controller.rb @@ -26,7 +26,7 @@ class RequireFilter < APIException def render_request_collection # if all params areblank, something is wrong - raise RequireFilter.new if [:project, :user, :states, :types, :reviewstates, :ids].all? { |f| params[f].blank? } + raise RequireFilter if [:project, :user, :states, :types, :reviewstates, :ids].all? { |f| params[f].blank? } # convert comma seperated values into arrays params[:roles] = params[:roles].split(',') if params[:roles] @@ -60,7 +60,7 @@ def show # POST /request?cmd=create def global_command unless params[:cmd] == "create" - raise UnknownCommandError.new "Unknown command '#{params[:cmd]}' for path #{request.path}" + raise UnknownCommandError, "Unknown command '#{params[:cmd]}' for path #{request.path}" end # refuse request creation for anonymous users @@ -96,7 +96,7 @@ def request_command # FIXME3.0: to be dropped @req.permission_check_change_groups! else - raise UnknownCommandError.new "Unknown command '#{params[:cmd]}' for path #{request.path}" + raise UnknownCommandError, "Unknown command '#{params[:cmd]}' for path #{request.path}" end # permission granted for the request at this point diff --git a/src/api/app/controllers/source_controller.rb b/src/api/app/controllers/source_controller.rb index 7259ecf2083..812743621b4 100644 --- a/src/api/app/controllers/source_controller.rb +++ b/src/api/app/controllers/source_controller.rb @@ -41,7 +41,7 @@ def index #-------------- if params.has_key? :deleted - raise NoPermissionForDeleted.new unless admin_user + raise NoPermissionForDeleted unless admin_user pass_to_backend else projectlist @@ -92,7 +92,7 @@ def show_project end @project = Project.find_by_name(project_name) - raise Project::UnknownObjectError.new project_name unless @project + raise Project::UnknownObjectError, project_name unless @project # we let the backend list the packages after we verified the project is visible if params.has_key? :view if params[:view] == 'verboseproductlist' @@ -205,7 +205,7 @@ class CmdExecutionNoPermission < APIException def show_package_issues unless @tpkg - raise NoLocalPackage.new 'Issues can only be shown for local packages' + raise NoLocalPackage, 'Issues can only be shown for local packages' end set_issues_default @tpkg.update_if_dirty @@ -218,7 +218,7 @@ def show_package_issues def show_package if @deleted_package tpkg = Package.find_by_project_and_name(@target_project_name, @target_package_name) - raise PackageExists.new 'the package is not deleted' if tpkg + raise PackageExists, 'the package is not deleted' if tpkg validate_read_access_of_deleted_package(@target_project_name, @target_package_name) elsif %w(_project _pattern).include? @target_package_name @@ -254,14 +254,14 @@ class PackageExists < APIException def delete_package # checks if @target_package_name == '_project' - raise DeletePackageNoPermission.new '_project package can not be deleted.' + raise DeletePackageNoPermission, '_project package can not be deleted.' end tpkg = Package.get_by_project_and_name(@target_project_name, @target_package_name, use_source: false, follow_project_links: false) unless User.current.can_modify_package?(tpkg) - raise DeletePackageNoPermission.new "no permission to delete package #{@target_package_name} in project #{@target_project_name}" + raise DeletePackageNoPermission, "no permission to delete package #{@target_package_name} in project #{@target_project_name}" end # deny deleting if other packages use this as develpackage @@ -306,9 +306,9 @@ class NoMatchingReleaseTarget < APIException def verify_can_modify_target_package! return if User.current.can_modify_package?(@package) - raise CmdExecutionNoPermission.new "no permission to execute command '#{params[:cmd]}' " + + raise CmdExecutionNoPermission, "no permission to execute command '#{params[:cmd]}' " + "for unspecified package" unless @package.class == Package - raise CmdExecutionNoPermission.new "no permission to execute command '#{params[:cmd]}' " + + raise CmdExecutionNoPermission, "no permission to execute command '#{params[:cmd]}' " + "for package #{@package.name} in project #{@package.project.name}" end @@ -317,7 +317,7 @@ def package_command params[:user] = User.current.login unless params[:cmd] - raise MissingParameterError.new 'POST request without given cmd parameter' + raise MissingParameterError, 'POST request without given cmd parameter' end # valid post commands @@ -328,7 +328,7 @@ def package_command collectbuildenv instantiate addchannels enablechannel) @command = params[:cmd] - raise IllegalRequest.new 'invalid_command' unless valid_commands.include?(@command) + raise IllegalRequest, 'invalid_command' unless valid_commands.include?(@command) if params[:oproject] origin_project_name = params[:oproject] @@ -391,7 +391,7 @@ def validate_target_for_package_command_exists! @project = @package.project ignore_lock = @command == 'unlock' unless Read_commands.include?(@command) || User.current.can_modify_package?(@package, ignore_lock) - raise CmdExecutionNoPermission.new "no permission to modify package #{@package.name} in project #{@project.name}" + raise CmdExecutionNoPermission, "no permission to modify package #{@package.name} in project #{@project.name}" end end end @@ -413,7 +413,7 @@ class InvalidProjectParameters < APIException def show_project_meta if Project.find_remote_project params[:project] # project from remote buildservice, get metadata from backend - raise InvalidProjectParameters.new if params[:view] + raise InvalidProjectParameters if params[:view] pass_to_backend else # access check @@ -621,7 +621,7 @@ def delete_project_pubkey if User.current.is_admin? pass_to_backend path else - raise DeleteProjectPubkeyNoPermission.new "No permission to delete public key for project '#{params[:project]}'. " + + raise DeleteProjectPubkeyNoPermission, "No permission to delete public key for project '#{params[:project]}'. " + "Either maintainer permissions by upper project or admin permissions is needed." end end @@ -760,7 +760,7 @@ def check_permissions_for_file @allowed = permissions.project_change? @prj if @file == '_attribute' && @package_name == '_project' - raise WrongRouteForAttribute.new "Attributes need to be changed through #{change_attribute_path(project: params[:project])}" + raise WrongRouteForAttribute, "Attributes need to be changed through #{change_attribute_path(project: params[:project])}" end else # we need a local package here in any case for modifications @@ -774,7 +774,7 @@ def update_file check_permissions_for_file unless @allowed - raise PutFileNoPermission.new "Insufficient permissions to store file in package #{@package_name}, project #{@project_name}" + raise PutFileNoPermission, "Insufficient permissions to store file in package #{@package_name}, project #{@project_name}" end # _pattern was not a real package in former OBS 2.0 and before, so we need to create the @@ -802,7 +802,7 @@ def delete_file check_permissions_for_file unless @allowed - raise DeleteFileNoPermission.new 'Insufficient permissions to delete file' + raise DeleteFileNoPermission, 'Insufficient permissions to delete file' end @path += build_query_from_hash(params, [:user, :comment, :meta, :rev, :linkrev, :keeplink]) @@ -971,7 +971,7 @@ def project_command_createmaintenanceincident # POST /source/?cmd=undelete def project_command_undelete unless User.current.can_create_project?(params[:project]) - raise CmdExecutionNoPermission.new "no permission to execute command 'undelete'" + raise CmdExecutionNoPermission, "no permission to execute command 'undelete'" end path = request.path_info @@ -1028,16 +1028,16 @@ def verify_repos_match!(pro) next if params[:repository] && params[:repository] != repo.name repo.release_targets.each do |releasetarget| unless User.current.can_modify_project?(releasetarget.target_repository.project) - raise CmdExecutionNoPermission.new "no permission to write in project #{releasetarget.target_repository.project.name}" + raise CmdExecutionNoPermission, "no permission to write in project #{releasetarget.target_repository.project.name}" end unless releasetarget.trigger == 'manual' - raise CmdExecutionNoPermission.new "Trigger is not set to manual in repository" + + raise CmdExecutionNoPermission, "Trigger is not set to manual in repository" + " #{releasetarget.repository.project.name}/#{releasetarget.repository.name}" end repo_matches = true end end - raise NoMatchingReleaseTarget.new 'No defined or matching release target' unless repo_matches + raise NoMatchingReleaseTarget, 'No defined or matching release target' unless repo_matches end class RemoteProjectError < APIException @@ -1058,10 +1058,10 @@ def project_command_move commit[:comment] = params[:comment] unless params[:comment].blank? unless User.current.is_admin? - raise CmdExecutionNoPermission.new "Admin permissions required. STOP SCHEDULER BEFORE." + raise CmdExecutionNoPermission, "Admin permissions required. STOP SCHEDULER BEFORE." end if Project.exists_by_name(params[:project]) - raise ProjectExists.new "Target project exists already." + raise ProjectExists, "Target project exists already." end project = Project.get_by_name(project_name) @@ -1090,28 +1090,28 @@ def project_command_copy @project = Project.find_by_name(project_name) unless (@project && User.current.can_modify_project?(@project)) || User.current.can_create_project?(project_name) - raise CmdExecutionNoPermission.new "no permission to execute command 'copy'" + raise CmdExecutionNoPermission, "no permission to execute command 'copy'" end oprj = Project.get_by_name(params[:oproject], {includeallpackages: 1}) if params.has_key?(:makeolder) || params.has_key?(:makeoriginolder) unless User.current.can_modify_project?(oprj) - raise CmdExecutionNoPermission.new "no permission to execute command 'copy', requires modification permission in origin project" + raise CmdExecutionNoPermission, "no permission to execute command 'copy', requires modification permission in origin project" end end if oprj.is_a? String # remote project - raise RemoteProjectError.new 'The copy from remote projects is currently not supported' + raise RemoteProjectError, 'The copy from remote projects is currently not supported' end unless User.current.is_admin? if params[:withbinaries] - raise ProjectCopyNoPermission.new 'no permission to copy project with binaries for non admins' + raise ProjectCopyNoPermission, 'no permission to copy project with binaries for non admins' end unless oprj.is_a? String oprj.packages.each do |pkg| next unless pkg.disabled_for?('sourceaccess', nil, nil) - raise ProjectCopyNoPermission.new "no permission to copy project due to source protected package #{pkg.name}" + raise ProjectCopyNoPermission, "no permission to copy project due to source protected package #{pkg.name}" end end end @@ -1188,7 +1188,7 @@ def package_command_unlock p = { comment: params[:comment] } f = @package.flags.find_by_flag_and_status('lock', 'enable') - raise NotLocked.new("package '#{@package.project.name}/#{@package.name}' is not locked") unless f + raise NotLocked, "package '#{@package.project.name}/#{@package.name}' is not locked" unless f @package.flags.delete(f) @package.store(p) @@ -1268,16 +1268,16 @@ def package_command_instantiate project = Project.get_by_name(params[:project]) opackage = Package.get_by_project_and_name(project.name, params[:package], {check_update_project: true}) unless opackage - raise RemoteProjectError.new "Instantiation from remote project is not supported" + raise RemoteProjectError, "Instantiation from remote project is not supported" end if project == opackage.project - raise CmdExecutionNoPermission.new "package is already intialized here" + raise CmdExecutionNoPermission, "package is already intialized here" end unless User.current.can_modify_project?(project) - raise CmdExecutionNoPermission.new "no permission to execute command 'copy'" + raise CmdExecutionNoPermission, "no permission to execute command 'copy'" end unless User.current.can_modify_package?(opackage, true) # ignore_lock option - raise CmdExecutionNoPermission.new "no permission to modify source package" + raise CmdExecutionNoPermission, "no permission to modify source package" end opts = {} @@ -1291,16 +1291,16 @@ def package_command_instantiate # POST /source//?cmd=undelete def package_command_undelete if Package.exists_by_project_and_name(@target_project_name, @target_package_name, follow_project_links: false) - raise PackageExists.new "the package exists already #{@target_project_name} #{@target_package_name}" + raise PackageExists, "the package exists already #{@target_project_name} #{@target_package_name}" end tprj = Project.get_by_name(@target_project_name) unless tprj.kind_of?(Project) && User.current.can_create_package_in?(tprj) - raise CmdExecutionNoPermission.new "no permission to create package in project #{@target_project_name}" + raise CmdExecutionNoPermission, "no permission to create package in project #{@target_project_name}" end path = request.path_info unless User.current.is_admin? || params[:time].blank? - raise CmdExecutionNoPermission.new "Only administrators are allowed to set the time" + raise CmdExecutionNoPermission, "Only administrators are allowed to set the time" end path += build_query_from_hash(params, [:cmd, :user, :comment, :time]) pass_to_backend path @@ -1437,7 +1437,7 @@ def package_command_copy def reparse_backend_package(spackage, sproject) answer = Backend::Connection.get("/source/#{CGI.escape(sproject)}/#{CGI.escape(spackage)}/_meta") - raise UnknownPackage.new "Unknown package #{spackage} in project #{sproject}" unless answer + raise UnknownPackage, "Unknown package #{spackage} in project #{sproject}" unless answer Package.transaction do adata = Xmlhash.parse(answer.body) @@ -1482,13 +1482,13 @@ def _package_command_release_manual_target(pkg) verify_can_modify_target! if params[:target_repository].blank? || params[:repository].blank? - raise MissingParameterError.new 'release action with specified target project needs also "repository" and "target_repository" parameter' + raise MissingParameterError, 'release action with specified target project needs also "repository" and "target_repository" parameter' end targetrepo = Repository.find_by_project_and_name(@target_project_name, params[:target_repository]) - raise UnknownRepository.new "Repository does not exist #{params[:target_repository]}" unless targetrepo + raise UnknownRepository, "Repository does not exist #{params[:target_repository]}" unless targetrepo repo = pkg.project.repositories.where(name: params[:repository]) - raise UnknownRepository.new "Repository does not exist #{params[:repository]}" unless repo.count > 0 + raise UnknownRepository, "Repository does not exist #{params[:repository]}" unless repo.count > 0 repo = repo.first release_package(pkg, targetrepo, pkg.name, repo, nil, params[:setrelease], true) @@ -1549,13 +1549,13 @@ def verify_can_modify_target! @project = Project.get_by_name(@target_project_name) else return if User.current.can_create_project?(@target_project_name) - raise CreateProjectNoPermission.new "no permission to create project #{@target_project_name}" + raise CreateProjectNoPermission, "no permission to create project #{@target_project_name}" end if Package.exists_by_project_and_name(@target_project_name, @target_package_name, follow_project_links: false) verify_can_modify_target_package! elsif !@project.kind_of?(Project) || !User.current.can_create_package_in?(@project) - raise CmdExecutionNoPermission.new "no permission to create package in project #{@target_project_name}" + raise CmdExecutionNoPermission, "no permission to create package in project #{@target_project_name}" end end @@ -1597,11 +1597,11 @@ def project_command_set_flag # Raising permissions afterwards is not secure. Do not allow this by default. unless User.current.is_admin? if params[:flag] == 'access' && params[:status] == 'enable' && !@project.enabled_for?('access', params[:repository], params[:arch]) - raise Project::ForbiddenError.new + raise Project::ForbiddenError end if params[:flag] == 'sourceaccess' && params[:status] == 'enable' && !@project.enabled_for?('sourceaccess', params[:repository], params[:arch]) - raise Project::ForbiddenError.new + raise Project::ForbiddenError end end @@ -1621,7 +1621,7 @@ def obj_set_flag(obj) obj.add_flag(params[:flag], params[:status], params[:repository], params[:arch]) end rescue ArgumentError => e - raise InvalidFlag.new e.message + raise InvalidFlag, e.message end obj.store diff --git a/src/api/app/controllers/status_controller.rb b/src/api/app/controllers/status_controller.rb index ea289175336..02e8c260674 100644 --- a/src/api/app/controllers/status_controller.rb +++ b/src/api/app/controllers/status_controller.rb @@ -23,7 +23,7 @@ class CreatingMessagesError < APIException def update_messages # check permissions unless permissions.status_message_create - raise PermissionDeniedError.new 'message(s) cannot be created, you have not sufficient permissions' + raise PermissionDeniedError, 'message(s) cannot be created, you have not sufficient permissions' end new_messages = ActiveXML::Node.new(request.raw_post) @@ -35,7 +35,7 @@ def update_messages end else # TODO: make use of a validator - raise CreatingMessagesError.new "no message #{new_messages.dump_xml}" if new_messages.element_name != 'message' + raise CreatingMessagesError, "no message #{new_messages.dump_xml}" if new_messages.element_name != 'message' # just one message, NOT wrapped in outer xml tag 'status_messages' save_new_message(new_messages) end @@ -53,7 +53,7 @@ def save_new_message(msg) def delete_message # check permissions unless permissions.status_message_create - raise PermissionDeniedError.new 'message cannot be deleted, you have not sufficient permissions' + raise PermissionDeniedError, 'message cannot be deleted, you have not sufficient permissions' end StatusMessage.find(params[:id]).delete @@ -72,7 +72,7 @@ def workercommand required_parameters :cmd, :project, :package, :repository, :arch unless %w(checkconstraints).include? params[:cmd] - raise UnknownCommandError.new "Unknown command '#{params[:cmd]}' for path #{request.path}" + raise UnknownCommandError, "Unknown command '#{params[:cmd]}' for path #{request.path}" end # read permission checking diff --git a/src/api/app/controllers/tag_controller.rb b/src/api/app/controllers/tag_controller.rb index 7d026a91901..30f034c48b2 100644 --- a/src/api/app/controllers/tag_controller.rb +++ b/src/api/app/controllers/tag_controller.rb @@ -62,7 +62,7 @@ def get_projects_by_tag(do_render = true) @tag.split('::').each do |t| tag = Tag.find_by_name(t) - raise TagNotFoundError.new("Tag #{t} not found") unless tag + raise TagNotFoundError, "Tag #{t} not found" unless tag if first_run @projects = tag.projects.group(:name).order(:name) @@ -87,7 +87,7 @@ def get_packages_by_tag(do_render = true) @tag.split('::').each do |t| tag = Tag.find_by_name(t) - raise TagNotFoundError.new("Tag #{t} not found") unless tag + raise TagNotFoundError, "Tag #{t} not found" unless tag if first_run @packages = tag.packages.group(:name).order(:name) @@ -347,7 +347,7 @@ def s_to_tag(tagname) unless tag tag = Tag.create(name: tagname) end - raise RuntimeError.new( "Tag #{tagname} could not be saved. ERROR: #{tag.errors[:name]}" ) unless tag.valid? + raise RuntimeError, "Tag #{tagname} could not be saved. ERROR: #{tag.errors[:name]}" unless tag.valid? tag end diff --git a/src/api/app/controllers/trigger_controller.rb b/src/api/app/controllers/trigger_controller.rb index dfa04afa245..ae97f5e6fc4 100644 --- a/src/api/app/controllers/trigger_controller.rb +++ b/src/api/app/controllers/trigger_controller.rb @@ -30,7 +30,7 @@ def runservice if pkg # check if user has still access unless token.user.is_active? && token.user.can_modify_package?(pkg) - raise NoPermission.new "no permission for package #{pkg.name} in project #{pkg.project.name}" + raise NoPermission, "no permission for package #{pkg.name} in project #{pkg.project.name}" end end @@ -38,7 +38,7 @@ def runservice # token is not bound to a package, but event may have specified it pkg = Package.get_by_project_and_name(params[:project].to_s, params[:package].to_s, use_source: true) unless token.user.is_active? && token.user.can_modify_package?(pkg) - raise NoPermission.new "no permission for package #{pkg.name} in project #{pkg.project.name}" + raise NoPermission, "no permission for package #{pkg.name} in project #{pkg.project.name}" end end diff --git a/src/api/app/controllers/webui/feeds_controller.rb b/src/api/app/controllers/webui/feeds_controller.rb index c61c5d80a24..fae1a040afb 100644 --- a/src/api/app/controllers/webui/feeds_controller.rb +++ b/src/api/app/controllers/webui/feeds_controller.rb @@ -6,11 +6,11 @@ class Webui::FeedsController < Webui::WebuiController def news @news = StatusMessage.alive.limit(5) - raise ActionController::RoutingError.new('expected application/rss') unless request.format == Mime[:rss] + raise ActionController::RoutingError, 'expected application/rss' unless request.format == Mime[:rss] end def latest_updates - raise ActionController::RoutingError.new('expected application/rss') unless request.format == Mime[:rss] + raise ActionController::RoutingError, 'expected application/rss' unless request.format == Mime[:rss] @latest_updates = get_latest_updated(10) end diff --git a/src/api/app/controllers/webui/package_controller.rb b/src/api/app/controllers/webui/package_controller.rb index eccc3f26f08..d5308ecef3e 100644 --- a/src/api/app/controllers/webui/package_controller.rb +++ b/src/api/app/controllers/webui/package_controller.rb @@ -539,8 +539,8 @@ def check_package_name_for_new end def branch - params.fetch(:linked_project) { raise ArgumentError.new('Linked Project parameter missing') } - params.fetch(:linked_package) { raise ArgumentError.new('Linked Package parameter missing') } + params.fetch(:linked_project) { raise ArgumentError, 'Linked Project parameter missing' } + params.fetch(:linked_package) { raise ArgumentError, 'Linked Package parameter missing' } # Full permission check happens in BranchPackage.new(branch_params).branch command # Are we linking a package from a remote instance? diff --git a/src/api/app/controllers/webui/webui_controller.rb b/src/api/app/controllers/webui/webui_controller.rb index 09c8f0f9e1a..7e51371fd7d 100644 --- a/src/api/app/controllers/webui/webui_controller.rb +++ b/src/api/app/controllers/webui/webui_controller.rb @@ -120,7 +120,7 @@ def require_login def required_parameters(*parameters) parameters.each do |parameter| unless params.include? parameter.to_s - raise MissingParameterError.new "Required Parameter #{parameter} missing" + raise MissingParameterError, "Required Parameter #{parameter} missing" end end end @@ -255,7 +255,7 @@ def setup_view_path end def check_ajax - raise ActionController::RoutingError.new('Expected AJAX call') unless request.xhr? + raise ActionController::RoutingError, 'Expected AJAX call' unless request.xhr? end def pundit_user diff --git a/src/api/app/helpers/flag_helper.rb b/src/api/app/helpers/flag_helper.rb index 9a91fdd389d..28ea4154e96 100644 --- a/src/api/app/helpers/flag_helper.rb +++ b/src/api/app/helpers/flag_helper.rb @@ -22,7 +22,7 @@ def self.flag_types end def validate_type( flag ) - raise InvalidFlag.new( "Error: unknown flag type '#{flag}' not found." ) unless TYPES.has_key? flag.to_s + raise InvalidFlag, "Error: unknown flag type '#{flag}' not found." unless TYPES.has_key? flag.to_s end def update_all_flags(xmlhash) @@ -86,7 +86,7 @@ def remove_flag(flag, repository, arch = nil) def add_flag(flag, status, repository = nil, arch = nil) validate_type flag unless status == 'enable' || status == 'disable' - raise ArgumentError.new("Error: unknown status for flag '#{status}'") + raise ArgumentError, "Error: unknown status for flag '#{status}'" end flags.build( status: status, flag: flag ) do |f| f.architecture = Architecture.find_by_name(arch) if arch diff --git a/src/api/app/helpers/maintenance_helper.rb b/src/api/app/helpers/maintenance_helper.rb index 58d27b615b5..dfa2838161f 100644 --- a/src/api/app/helpers/maintenance_helper.rb +++ b/src/api/app/helpers/maintenance_helper.rb @@ -250,7 +250,7 @@ def get_updateinfo_id(source_package, target_repo) first_ct = cts.first unless cts.all?{|c| c.id_template == first_ct.id_template} msg = cts.map{|cti| "#{cti.channel.package.project.name}/#{cti.channel.package.name}"}.join(", ") - raise MultipleUpdateInfoTemplate.new "Multiple channel targets found in #{msg} for repository #{target_repo.project.name}/#{target_repo.name}" + raise MultipleUpdateInfoTemplate, "Multiple channel targets found in #{msg} for repository #{target_repo.project.name}/#{target_repo.name}" end id_template = cts.first.id_template if cts.first && cts.first.id_template diff --git a/src/api/app/mixins/has_attributes.rb b/src/api/app/mixins/has_attributes.rb index 3a6211e4bae..617d9895421 100644 --- a/src/api/app/mixins/has_attributes.rb +++ b/src/api/app/mixins/has_attributes.rb @@ -16,7 +16,7 @@ def write_attributes(comment = nil) begin Backend::Connection.put_source(path, render_attribute_axml) rescue ActiveXML::Transport::Error => e - raise AttributeSaveError.new e.summary + raise AttributeSaveError, e.summary end end diff --git a/src/api/app/models/branch_package.rb b/src/api/app/models/branch_package.rb index b9ec17a922e..cbe95d9764f 100644 --- a/src/api/app/models/branch_package.rb +++ b/src/api/app/models/branch_package.rb @@ -30,8 +30,8 @@ def initialize(params) @extend_names = params[:extend_package_names] @rebuild_policy = params[:add_repositories_rebuild] @block_policy = params[:add_repositories_block] - raise InvalidArgument.new unless [nil, "all", "local", "never"].include? @block_policy - raise InvalidArgument.new unless [nil, "transitive", "direct", "local", "copy"].include? @rebuild_policy + raise InvalidArgument unless [nil, "all", "local", "never"].include? @block_policy + raise InvalidArgument unless [nil, "transitive", "direct", "local", "copy"].include? @rebuild_policy # copy from devel package instead branching ? @copy_from_devel = false @copy_from_devel = true if params[:newinstance] @@ -88,7 +88,7 @@ def branch tprj = create_branch_project unless User.current.can_modify_project?(tprj) - raise Project::WritePermissionError.new "no permission to modify project '#{@target_project}' while executing branch project command" + raise Project::WritePermissionError, "no permission to modify project '#{@target_project}' while executing branch project command" end # all that worked ? :) @@ -201,13 +201,13 @@ def create_branch_packages(tprj) def create_branch_project if Project.exists_by_name @target_project if @noaccess - raise CreateProjectNoPermission.new "The destination project already exists, so the api can't make it not readable" + raise CreateProjectNoPermission, "The destination project already exists, so the api can't make it not readable" end tprj = Project.get_by_name @target_project else # permission check unless User.current.can_create_project?(@target_project) - raise CreateProjectNoPermission.new "no permission to create project '#{@target_project}' while executing branch command" + raise CreateProjectNoPermission, "no permission to create project '#{@target_project}' while executing branch command" end title = "Branch project for package #{params[:package]}" @@ -365,10 +365,10 @@ def determine_details_about_package_to_branch(p) def expand_rev_to_srcmd5(p) dir = Directory.find(project: params[:project], package: params[:package], rev: params[:rev]) - raise InvalidFilelistError.new 'no such revision' unless dir + raise InvalidFilelistError, 'no such revision' unless dir p[:rev] = dir.value(:srcmd5) return if p[:rev] - raise InvalidFilelistError.new 'no srcmd5 revision found' + raise InvalidFilelistError, 'no srcmd5 revision found' end def check_for_update_project(p) @@ -489,7 +489,7 @@ def set_update_project_attribute aname = params[:update_project_attribute] || 'OBS:UpdateProject' update_project_at = aname.split(/:/) if update_project_at.length != 2 - raise ArgumentError.new "attribute '#{aname}' must be in the $NAMESPACE:$NAME style" + raise ArgumentError, "attribute '#{aname}' must be in the $NAMESPACE:$NAME style" end @up_attribute_namespace = update_project_at[0] @up_attribute_name = update_project_at[1] @@ -513,7 +513,7 @@ def find_packages_to_branch prj = Project.get_by_name params[:project] if params[:missingok] if Package.exists_by_project_and_name(params[:project], params[:package], follow_project_links: true, allow_remote_packages: true) - raise NotMissingError.new "Branch call with missingok parameter but branched source (#{params[:project]}/#{params[:package]}) exists." + raise NotMissingError, "Branch call with missingok parameter but branched source (#{params[:project]}/#{params[:package]}) exists." end else pkg = Package.get_by_project_and_name params[:project], params[:package], {check_update_project: true} @@ -573,7 +573,7 @@ def find_packages_to_branch end end - raise NotFoundError.new 'no packages found by search criteria' if @packages.empty? + raise NotFoundError, 'no packages found by search criteria' if @packages.empty? end def set_target_project diff --git a/src/api/app/models/bs_request.rb b/src/api/app/models/bs_request.rb index a5a81a4c285..11188e8754e 100644 --- a/src/api/app/models/bs_request.rb +++ b/src/api/app/models/bs_request.rb @@ -73,7 +73,7 @@ def self.find_by_number!(number) unless r # the external visible request id is stored in number row. # the database id must not be exposed to the outside - raise NotFoundError.new("Couldn't find request with id '#{number}'") + raise NotFoundError, "Couldn't find request with id '#{number}'" end r end @@ -403,7 +403,7 @@ def permission_check_addreview! def permission_check_change_groups! # adding and removing of requests is only allowed for groups return unless bs_request_actions.first.action_type != :group - raise GroupRequestSpecial.new "Command is only valid for group requests" + raise GroupRequestSpecial, "Command is only valid for group requests" end def permission_check_change_state!(opts) @@ -457,7 +457,7 @@ def changestate_accepted(opts) opts[:check_for_patchinfo] = true unless incident_project.name.start_with?(target_project.name) - raise MultipleMaintenanceIncidents.new 'This request handles different maintenance incidents, this is not allowed !' + raise MultipleMaintenanceIncidents, 'This request handles different maintenance incidents, this is not allowed !' end action.target_project = incident_project.name action.save! @@ -571,14 +571,14 @@ def _assignreview_update_reviews(reviewer, opts, new_review = nil) review_comment += "review for package #{opts[:by_project]} / #{opts[:by_package]}" if opts[:by_package] history_class.create(review: review, comment: "review assigend to user #{reviewer.login}", user_id: User.current.id) end - raise Review::NotFoundError.new unless review_comment + raise Review::NotFoundError unless review_comment review_comment end private :_assignreview_update_reviews def assignreview(opts = {}) unless state == :review || (state == :new && state == :new) - raise InvalidStateError.new 'request is not in review state' + raise InvalidStateError, 'request is not in review state' end reviewer = User.find_by_login!(opts[:reviewer]) @@ -587,9 +587,9 @@ def assignreview(opts = {}) user_review = reviews.where(by_user: reviewer.login).last if opts[:revert] _assignreview_update_reviews(reviewer, opts) - raise Review::NotFoundError.new unless user_review - raise InvalidStateError.new "review is not in new state" unless user_review.state == :new - raise Review::NotFoundError.new "Not an assigned review" unless HistoryElement::ReviewAssigned.where(op_object_id: user_review.id).last + raise Review::NotFoundError unless user_review + raise InvalidStateError, "review is not in new state" unless user_review.state == :new + raise Review::NotFoundError, "Not an assigned review" unless HistoryElement::ReviewAssigned.where(op_object_id: user_review.id).last user_review.destroy elsif user_review review_comment = _assignreview_update_reviews(reviewer, opts) @@ -610,11 +610,11 @@ def change_review_state(new_review_state, opts = {}) new_review_state = new_review_state.to_sym unless state == :review || (state == :new && new_review_state == :new) - raise InvalidStateError.new 'request is not in review state' + raise InvalidStateError, 'request is not in review state' end check_if_valid_review!(opts) unless new_review_state.in?([:new, :accepted, :declined, :superseded]) - raise InvalidStateError.new "review state must be new, accepted, declined or superseded, was #{new_review_state}" + raise InvalidStateError, "review state must be new, accepted, declined or superseded, was #{new_review_state}" end # to track if the request state needs to be changed as well go_new_state = :review @@ -663,7 +663,7 @@ def change_review_state(new_review_state, opts = {}) go_new_state = nil end end - raise Review::NotFoundError.new unless found + raise Review::NotFoundError unless found history = nil p = {request: self, comment: opts[:comment], user_id: User.current.id} if new_review_state == :superseded @@ -712,7 +712,7 @@ def change_review_state(new_review_state, opts = {}) def check_if_valid_review!(opts) return unless !opts[:by_user] && !opts[:by_group] && !opts[:by_project] - raise InvalidReview.new + raise InvalidReview end def addreview(opts) @@ -1127,7 +1127,7 @@ def expand_targets newactions.concat(na) end # will become an empty request - raise MissingAction.new if newactions.empty? && oldactions.size == bs_request_actions.size + raise MissingAction if newactions.empty? && oldactions.size == bs_request_actions.size oldactions.each { |a| bs_request_actions.destroy a } newactions.each { |a| bs_request_actions << a } diff --git a/src/api/app/models/bs_request_action.rb b/src/api/app/models/bs_request_action.rb index 2414ea24191..f93fdd737fa 100644 --- a/src/api/app/models/bs_request_action.rb +++ b/src/api/app/models/bs_request_action.rb @@ -55,9 +55,9 @@ def self.get_package_diff(path, query) begin Backend::Connection.post(path, '', 'Timeout' => 30).body rescue Timeout::Error - raise DiffError.new("Timeout while diffing #{path}") + raise DiffError, "Timeout while diffing #{path}" rescue ActiveXML::Transport::Error => e - raise DiffError.new("The diff call for #{path} failed: #{e.summary}") + raise DiffError, "The diff call for #{path} failed: #{e.summary}" end end @@ -323,7 +323,7 @@ def default_reviewers tprj = Project.get_by_name target_project if tprj.class == String - raise RemoteTarget.new 'No support to target to remote projects. Create a request in remote instance instead.' + raise RemoteTarget, 'No support to target to remote projects. Create a request in remote instance instead.' end tpkg = nil if target_package @@ -362,7 +362,7 @@ def default_reviewers if action_type == :submit if sourceupdate || updatelink # FIXME: completely misplaced in this function - raise LackingMaintainership.new + raise LackingMaintainership end end if !spkg.project.find_attribute('OBS', 'ApprovedRequestSource') && @@ -375,7 +375,7 @@ def default_reviewers if sprj && !User.current.can_modify_project?(sprj) && !sprj.find_attribute('OBS', 'ApprovedRequestSource') if action_type == :submit if sourceupdate || updatelink - raise LackingMaintainership.new + raise LackingMaintainership end end reviews.push(sprj) unless sprj.find_attribute('OBS', 'ApprovedRequestSource') @@ -478,7 +478,7 @@ def check_maintenance_release(pkg, repo, arch) # rubocop:enable Metrics/LineLength l = binaries.elements('binary') unless l && l.count > 0 - raise BuildNotFinished.new "patchinfo #{pkg.name} is not yet build for repository '#{repo.name}'" + raise BuildNotFinished, "patchinfo #{pkg.name} is not yet build for repository '#{repo.name}'" end # check that we did not skip a source change of patchinfo @@ -490,7 +490,7 @@ def check_maintenance_release(pkg, repo, arch) last = history.elements('entry').last return if last && last['srcmd5'].to_s == verifymd5.to_s - raise BuildNotFinished.new "last patchinfo #{pkg.name} is not yet build for repository '#{repo.name}'" + raise BuildNotFinished, "last patchinfo #{pkg.name} is not yet build for repository '#{repo.name}'" end # rubocop:disable Metrics/CyclomaticComplexity @@ -509,7 +509,7 @@ def create_expand_package(packages, opts = {}) packages.each do |pkg| unless pkg.kind_of? Package - raise RemoteSource.new 'No support for auto expanding from remote instance. You need to submit a full specified request in that case.' + raise RemoteSource, 'No support for auto expanding from remote instance. You need to submit a full specified request in that case.' end # find target via linkinfo or submit to all. # FIXME: this is currently handling local project links for packages with multiple spec files. @@ -555,7 +555,7 @@ def create_expand_package(packages, opts = {}) # overwrite target if defined tprj = Project.get_by_name(target_project) if target_project - raise UnknownTargetProject.new 'target project does not exist' unless tprj || is_maintenance_release? + raise UnknownTargetProject, 'target project does not exist' unless tprj || is_maintenance_release? # do not allow release requests without binaries if is_maintenance_release? && pkg.is_patchinfo? && data && !opts[:ignore_build_state] @@ -563,22 +563,22 @@ def create_expand_package(packages, opts = {}) state = REXML::Document.new(Backend::Connection.get("/build/#{URI.escape(pkg.project.name)}/_result?view=versrel").body) results = state.get_elements("/resultlist/result[@project='#{pkg.project.name}'')]") unless results - raise BuildNotFinished.new "The project'#{pkg.project.name}' has no building repositories" + raise BuildNotFinished, "The project'#{pkg.project.name}' has no building repositories" end versrel = {} results.each do |result| repo = result.attributes['repository'] arch = result.attributes['arch'] if result.attributes['dirty'] - raise BuildNotFinished.new "The repository '#{pkg.project.name}' / '#{repo}' / #{arch} " + + raise BuildNotFinished, "The repository '#{pkg.project.name}' / '#{repo}' / #{arch} " + "needs recalculation by the schedulers" end if result.attributes['state'].in?(["finished", "publishing"]) - raise BuildNotFinished.new "The repository '#{pkg.project.name}' / '#{repo}' / #{arch}" + + raise BuildNotFinished, "The repository '#{pkg.project.name}' / '#{repo}' / #{arch}" + "did not finish the publish yet" end unless result.attributes['state'].in?(["published", "unpublished"]) - raise BuildNotFinished.new "The repository '#{pkg.project.name}' / '#{repo}' / #{arch} " + + raise BuildNotFinished, "The repository '#{pkg.project.name}' / '#{repo}' / #{arch} " + "did not finish the build yet" end @@ -589,7 +589,7 @@ def create_expand_package(packages, opts = {}) vrel = status.attributes['versrel'] next unless vrel if versrel[repo][package] && versrel[repo][package] != vrel - raise VersionReleaseDiffers.new "#{package} has a different version release in same repository" + raise VersionReleaseDiffers, "#{package} has a different version release in same repository" end versrel[repo][package] ||= vrel end @@ -603,7 +603,7 @@ def create_expand_package(packages, opts = {}) # skip excluded patchinfos status = state.get_elements("/resultlist/result[@repository='#{repo.name}' and @arch='#{firstarch.name}']").first next if status && (s = status.get_elements("status[@package='#{pkg.name}']").first) && s.attributes['code'] == 'excluded' - raise BuildNotFinished.new "patchinfo #{pkg.name} is broken" if s.attributes['code'] == 'broken' + raise BuildNotFinished, "patchinfo #{pkg.name} is broken" if s.attributes['code'] == 'broken' check_maintenance_release(pkg, repo, firstarch) @@ -622,12 +622,12 @@ def create_expand_package(packages, opts = {}) next if rt.trigger != "maintenance" next unless rt.target_repository.project.is_maintenance_release? if release_target && release_target != rt.target_repository.project - raise InvalidReleaseTarget.new "Multiple release target projects are not supported" + raise InvalidReleaseTarget, "Multiple release target projects are not supported" end release_target = rt.target_repository.project end end - raise InvalidReleaseTarget.new "Can not release to a maintenance incident project" unless release_target + raise InvalidReleaseTarget, "Can not release to a maintenance incident project" unless release_target tprj = release_target end end @@ -644,7 +644,7 @@ def create_expand_package(packages, opts = {}) new_packages << pkg next elsif !is_maintenance_incident? && !is_submit? - raise UnknownTargetPackage.new 'target package does not exist' + raise UnknownTargetPackage, 'target package does not exist' end end end @@ -674,7 +674,7 @@ def create_expand_package(packages, opts = {}) else # non-channel package next if ReleaseTarget.where(repository: pkg.project.repositories, target_repository: tprj.repositories, trigger: "maintenance").empty? unless pkg.project.can_be_released_to_project?(tprj) - raise WrongLinkedPackageSource.new "According to the source link of package " + + raise WrongLinkedPackageSource, "According to the source link of package " + "#{pkg.project.name}/#{pkg.name} it would go to project" + "#{tprj.name} which is not specified as release target." end @@ -691,7 +691,7 @@ def create_expand_package(packages, opts = {}) end end if is_maintenance_release? && !found_patchinfo && !opts[:ignore_build_state] - raise MissingPatchinfo.new 'maintenance release request without patchinfo would release no binaries' + raise MissingPatchinfo, 'maintenance release request without patchinfo would release no binaries' end # new packages (eg patchinfos) go to all target projects by default in maintenance requests @@ -739,10 +739,10 @@ def check_action_permission_source! sprj = Project.get_by_name source_project unless sprj - raise UnknownProject.new "Unknown source project #{source_project}" + raise UnknownProject, "Unknown source project #{source_project}" end unless sprj.class == Project || action_type.in?([:submit, :maintenance_incident]) - raise NotSupported.new "Source project #{source_project} is not a local project. This is not supported yet." + raise NotSupported, "Source project #{source_project} is not a local project. This is not supported yet." end if source_package spkg = Package.get_by_project_and_name(source_project, source_package, use_source: true, follow_project_links: true) @@ -776,29 +776,29 @@ def check_action_permission!(skip_source = nil) if action_type == :delete || action_type == :add_role || action_type == :set_bugowner # check existence of target unless tprj - raise UnknownProject.new 'No target project specified' + raise UnknownProject, 'No target project specified' end if action_type == :add_role unless role - raise UnknownRole.new 'No role specified' + raise UnknownRole, 'No role specified' end end elsif action_type.in?([:submit, :change_devel, :maintenance_release, :maintenance_incident]) # check existence of source unless sprj || skip_source # no support for remote projects yet, it needs special support during accept as well - raise UnknownProject.new 'No target project specified' + raise UnknownProject, 'No target project specified' end if is_maintenance_incident? if target_package - raise IllegalRequest.new 'Maintenance requests accept only projects as target' + raise IllegalRequest, 'Maintenance requests accept only projects as target' end raise 'We should have expanded a target_project' unless target_project # validate project type prj = Project.get_by_name(target_project) unless prj.kind.in?(["maintenance", "maintenance_incident"]) - raise IncidentHasNoMaintenanceProject.new 'incident projects shall only create below maintenance projects' + raise IncidentHasNoMaintenanceProject, 'incident projects shall only create below maintenance projects' end end @@ -817,12 +817,12 @@ def check_action_permission!(skip_source = nil) end # allow cleanup only, if no devel package reference if sourceupdate == 'cleanup' && sprj.class != Project && !skip_source - raise NotSupported.new "Source project #{source_project} is not a local project. cleanup is not supported." + raise NotSupported, "Source project #{source_project} is not a local project. cleanup is not supported." end if action_type == :change_devel unless target_package - raise UnknownPackage.new 'No target package specified' + raise UnknownPackage, 'No target package specified' end end end @@ -836,13 +836,13 @@ def check_action_permission_target! tprj = Project.get_by_name target_project if tprj.is_a? Project if tprj.is_maintenance_release? && action_type == :submit - raise SubmitRequestRejected.new "The target project #{target_project} is a maintenance release project, " + + raise SubmitRequestRejected, "The target project #{target_project} is a maintenance release project, " + "a submit self is not possible, please use the maintenance workflow instead." end a = tprj.find_attribute('OBS', 'RejectRequests') if a && a.values.first if a.values.length < 2 || a.values.find_by_value(action_type) - raise RequestRejected.new "The target project #{target_project} is not accepting requests because: #{a.values.first.value}" + raise RequestRejected, "The target project #{target_project} is not accepting requests because: #{a.values.first.value}" end end end @@ -854,7 +854,7 @@ def check_action_permission_target! a = tpkg.find_attribute('OBS', 'RejectRequests') if defined?(tpkg) && tpkg if defined?(a) && a && a.values.first if a.values.length < 2 || a.values.find_by_value(action_type) - raise RequestRejected.new "The target package #{target_project} / #{target_package} is not accepting " + + raise RequestRejected, "The target package #{target_project} / #{target_package} is not accepting " + "requests because: #{a.values.first.value}" end end @@ -873,7 +873,7 @@ def expand_targets(ignore_build_state) if action_type.in?([:submit, :maintenance_incident]) if target_package && Package.exists_by_project_and_name(target_project, target_package, { follow_project_links: false }) - raise MissingAction.new unless contains_change? + raise MissingAction unless contains_change? return end end @@ -957,7 +957,7 @@ def check_for_expand_errors!(add_revision) self.source_rev = dir['srcmd5'] end rescue ActiveXML::Transport::Error - raise ExpandError.new "The source of package #{source_project}/#{source_package}#{source_rev ? " for revision #{source_rev}" : ''} is broken" + raise ExpandError, "The source of package #{source_project}/#{source_package}#{source_rev ? " for revision #{source_rev}" : ''} is broken" # rubocop:enable Metrics/LineLength end end diff --git a/src/api/app/models/bs_request_action_delete.rb b/src/api/app/models/bs_request_action_delete.rb index 43359dc3067..4787d54a79a 100644 --- a/src/api/app/models/bs_request_action_delete.rb +++ b/src/api/app/models/bs_request_action_delete.rb @@ -28,7 +28,7 @@ def remove_repository(opts) prj = Project.get_by_name(target_project) r = prj.repositories.find_by_name(target_repository) unless r - raise RepositoryMissing.new "The repository #{target_project} / #{target_repository} does not exist" + raise RepositoryMissing, "The repository #{target_project} / #{target_repository} does not exist" end r.destroy prj.store(lowprio: opts[:lowprio], comment: opts[:comment], request: bs_request) @@ -49,7 +49,7 @@ def sourcediff(opts = {}) elsif target_repository # no source diff else - raise DiffError.new("Project diff isn't implemented yet") + raise DiffError, "Project diff isn't implemented yet" end '' end diff --git a/src/api/app/models/bs_request_action_group.rb b/src/api/app/models/bs_request_action_group.rb index 9caaeb83efc..e37198d9483 100644 --- a/src/api/app/models/bs_request_action_group.rb +++ b/src/api/app/models/bs_request_action_group.rb @@ -43,16 +43,16 @@ def check_permissions_on(req) return if req.is_target_maintainer?(User.current) - raise CantGroupRequest.new "Request #{req.number} does not match in the group" + raise CantGroupRequest, "Request #{req.number} does not match in the group" end def check_and_add_request(newid) req = BsRequest.find_by_number(newid) if bs_requests.where(id: req.id).exists? - raise AlreadyGrouped.new "#{req.number} is already part of the group request #{bs_request.number}" + raise AlreadyGrouped, "#{req.number} is already part of the group request #{bs_request.number}" end if req.bs_request_actions.first.action_type == :group - raise CantGroupInGroups.new 'Groups are not supported in groups' + raise CantGroupInGroups, 'Groups are not supported in groups' end check_permissions_on(req) bs_requests << req @@ -74,7 +74,7 @@ def check_permissions! end return unless bs_request.bs_request_actions.size > 1 - raise GroupActionMustBeSingle.new "You can't mix group actions with other actions" + raise GroupActionMustBeSingle, "You can't mix group actions with other actions" end def render_xml_attributes(node) @@ -91,7 +91,7 @@ def execute_accept(opts) def remove_request(oldid) req = BsRequest.find_by_number oldid unless req - raise NotInGroup.new "Request #{oldid} can't be removed from group request #{bs_request.number}" + raise NotInGroup, "Request #{oldid} can't be removed from group request #{bs_request.number}" end req.remove_from_group(self) end @@ -146,7 +146,7 @@ def addrequest(opts) begin newid = Integer(opts['newid']) rescue TypeError, ArgumentError - raise RequireId.new('Need the new id in the newid parameter') + raise RequireId, 'Need the new id in the newid parameter' end check_and_add_request(newid) group_state = find_review_state_of_group @@ -166,7 +166,7 @@ def removerequest(opts) begin old_id = Integer(opts['oldid']) rescue TypeError, ArgumentError - raise RequireId.new('Need the old id in the oldid parameter') + raise RequireId, 'Need the old id in the oldid parameter' end remove_request(old_id) check_for_group_in_new diff --git a/src/api/app/models/bs_request_action_maintenance_incident.rb b/src/api/app/models/bs_request_action_maintenance_incident.rb index a99130b14d7..38ecfe58891 100644 --- a/src/api/app/models/bs_request_action_maintenance_incident.rb +++ b/src/api/app/models/bs_request_action_maintenance_incident.rb @@ -33,14 +33,14 @@ def get_releaseproject(pkg, tprj) releaseproject = target_releaseproject ? Project.get_by_name(target_releaseproject) : tprj if releaseproject.try(:name).blank? - raise NoMaintenanceReleaseTarget.new "Maintenance incident request contains no defined release" + + raise NoMaintenanceReleaseTarget, "Maintenance incident request contains no defined release" + " target project for package #{pkg.name}" end # Automatically switch to update project releaseproject = releaseproject.update_instance unless releaseproject.is_maintenance_release? - raise NoMaintenanceReleaseTarget.new "Maintenance incident request contains release target " + + raise NoMaintenanceReleaseTarget, "Maintenance incident request contains release target " + "project #{releaseproject.name} with invalid project" + "kind \"#{releaseproject.kind}\" for package #{pkg.name}" end @@ -205,9 +205,9 @@ def expand_targets(ignore_build_state) self.target_project = maintenance_project.name end unless maintenance_project.is_maintenance_incident? || maintenance_project.is_maintenance? - raise NoMaintenanceProject.new 'Maintenance incident requests have to go to projects of type maintenance or maintenance_incident' + raise NoMaintenanceProject, 'Maintenance incident requests have to go to projects of type maintenance or maintenance_incident' end - raise IllegalRequest.new 'Target package must not be specified in maintenance_incident actions' if target_package + raise IllegalRequest, 'Target package must not be specified in maintenance_incident actions' if target_package super(ignore_build_state) end diff --git a/src/api/app/models/bs_request_action_maintenance_release.rb b/src/api/app/models/bs_request_action_maintenance_release.rb index 14d9211d219..d7b2d786eec 100644 --- a/src/api/app/models/bs_request_action_maintenance_release.rb +++ b/src/api/app/models/bs_request_action_maintenance_release.rb @@ -80,19 +80,19 @@ def sanity_check! prj = Project.get_by_name(source_project) prj.repositories.includes(:release_targets).each do |repo| if repo.release_targets.empty? - raise RepositoryWithoutReleaseTarget.new "Release target definition is missing in #{prj.name} / #{repo.name}" + raise RepositoryWithoutReleaseTarget, "Release target definition is missing in #{prj.name} / #{repo.name}" end if repo.architectures.empty? - raise RepositoryWithoutArchitecture.new "Repository has no architecture #{prj.name} / #{repo.name}" + raise RepositoryWithoutArchitecture, "Repository has no architecture #{prj.name} / #{repo.name}" end repo.release_targets.each do |rt| unless repo.architectures.size == rt.target_repository.architectures.size - raise ArchitectureOrderMissmatch.new "Repository '#{repo.name}' and releasetarget " + + raise ArchitectureOrderMissmatch, "Repository '#{repo.name}' and releasetarget " + "'#{rt.target_repository.name}' have different architectures" end for i in 1..(repo.architectures.size) unless repo.architectures[i - 1] == rt.target_repository.architectures[i - 1] - raise ArchitectureOrderMissmatch.new "Repository and releasetarget don't have the same architecture " + + raise ArchitectureOrderMissmatch, "Repository and releasetarget don't have the same architecture " + "on position #{i}: #{prj.name} / #{repo.name}" end end @@ -124,13 +124,13 @@ def check_permissions! open_ids.delete(bs_request.number) if bs_request if open_ids.count > 0 msg = "The following open requests have the same target #{target_project} / #{tpkgprefix}: " + open_ids.join(', ') - raise OpenReleaseRequests.new msg + raise OpenReleaseRequests, msg end # creating release requests is also locking the source package, therefore we require write access there. spkg = Package.find_by_project_and_name source_project, source_package return if spkg || !User.current.can_modify_package?(spkg) - raise LackingReleaseMaintainership.new 'Creating a release request action requires maintainership in source package' + raise LackingReleaseMaintainership, 'Creating a release request action requires maintainership in source package' end def set_acceptinfo(ai) diff --git a/src/api/app/models/bs_request_permission_check.rb b/src/api/app/models/bs_request_permission_check.rb index 429d97fc84a..cf2e331eef9 100644 --- a/src/api/app/models/bs_request_permission_check.rb +++ b/src/api/app/models/bs_request_permission_check.rb @@ -39,7 +39,7 @@ class ReviewNotSpecified < APIException; def check_accepted_action(action) unless @target_project - raise NotExistingTarget.new "Unable to process project #{action.target_project}; it does not exist." + raise NotExistingTarget, "Unable to process project #{action.target_project}; it does not exist." end check_action_target(action) @@ -53,7 +53,7 @@ def check_accepted_action(action) ActiveXML.backend.direct_http(url) rescue ActiveXML::Transport::Error # rubocop:disable Metrics/LineLength - raise ExpandError.new "The source of package #{action.source_project}/#{action.source_package}#{action.source_rev ? " for revision #{action.source_rev}" : ''} is broken" + raise ExpandError, "The source of package #{action.source_project}/#{action.source_package}#{action.source_rev ? " for revision #{action.source_rev}" : ''} is broken" # rubocop:enable Metrics/LineLength end end @@ -68,7 +68,7 @@ def check_accepted_action(action) # target must exist if action.target_package unless @target_package - raise NotExistingTarget.new "Unable to process package #{action.target_project}/#{action.target_package}; it does not exist." + raise NotExistingTarget, "Unable to process package #{action.target_project}/#{action.target_package}; it does not exist." end end end @@ -83,7 +83,7 @@ def check_accepted_action(action) originpkg = Package.get_by_project_and_name action.target_project, action.target_package return if User.current.can_modify_package?(originpkg, true) - raise PostRequestNoPermission.new "Package target can not get initialized using makeoriginolder." + + raise PostRequestNoPermission, "Package target can not get initialized using makeoriginolder." + "No permission in project #{originpkg.project.name}" end @@ -93,7 +93,7 @@ def check_delete_accept(action) elsif action.target_repository r = Repository.find_by_project_and_name(@target_project.name, action.target_repository) unless r - raise RepositoryMissing.new "The repository #{@target_project} / #{action.target_repository} does not exist" + raise RepositoryMissing, "The repository #{@target_project} / #{action.target_repository} does not exist" end else # remove entire project @@ -108,7 +108,7 @@ def check_maintenance_release_accept(action) c = ActiveXML.backend.direct_http(url) data = REXML::Document.new(c) unless action.source_rev == data.elements['directory'].attributes['srcmd5'] - raise SourceChanged.new "The current source revision in #{action.source_project}/#{action.source_package}" + + raise SourceChanged, "The current source revision in #{action.source_project}/#{action.source_package}" + "are not on revision #{action.source_rev} anymore." end end @@ -118,7 +118,7 @@ def check_maintenance_release_accept(action) repo.release_targets.each do |releasetarget| next unless releasetarget.trigger == 'maintenance' unless User.current.can_modify_project? releasetarget.target_repository.project - raise ReleaseTargetNoPermission.new "Release target project #{releasetarget.target_repository.project.name} is not writable by you" + raise ReleaseTargetNoPermission, "Release target project #{releasetarget.target_repository.project.name} is not writable by you" end end end @@ -140,7 +140,7 @@ def check_action_target(action) return unless action.action_type.in?([:submit, :change_devel, :maintenance_release, :maintenance_incident]) if action.action_type == :change_devel && !action.target_package - raise PostRequestNoPermission.new "Target package is missing in request #{action.bs_request.number} (type #{action.action_type})" + raise PostRequestNoPermission, "Target package is missing in request #{action.bs_request.number} (type #{action.action_type})" end # full read access checks @@ -159,13 +159,13 @@ def check_action_target(action) else action.source_access_check! end - raise SourceMissing.new err if err + raise SourceMissing, err if err end # maintenance incident target permission checks return unless action.is_maintenance_incident? return if @target_project.kind.in?(["maintenance", "maintenance_incident"]) - raise TargetNotMaintenance.new "The target project is not of type maintenance or incident but #{@target_project.kind}" + raise TargetNotMaintenance, "The target project is not of type maintenance or incident but #{@target_project.kind}" end def set_permissions_for_action(action, new_state = nil) @@ -223,7 +223,7 @@ def set_permissions_for_action(action, new_state = nil) def cmd_addreview_permissions(permissions_granted) unless req.state.in?([:review, :new]) - raise ReviewChangeStateNoPermission.new 'The request is not in state new or review' + raise ReviewChangeStateNoPermission, 'The request is not in state new or review' end req.bs_request_actions.each do |action| @@ -234,7 +234,7 @@ def cmd_addreview_permissions(permissions_granted) def cmd_setpriority_permissions unless req.state.in?([:review, :new]) - raise SetPriorityNoPermission.new 'The request is not in state new or review' + raise SetPriorityNoPermission, 'The request is not in state new or review' end req.bs_request_actions.each do |action| @@ -242,26 +242,26 @@ def cmd_setpriority_permissions end return if @write_permission_in_target - raise SetPriorityNoPermission.new 'No write permission in target of request actions' + raise SetPriorityNoPermission, 'No write permission in target of request actions' end def cmd_setincident_permissions unless req.state.in?([:review, :new]) - raise ReviewChangeStateNoPermission.new 'The request is not in state new or review' + raise ReviewChangeStateNoPermission, 'The request is not in state new or review' end req.bs_request_actions.each do |action| set_permissions_for_action(action) if @target_project.is_maintenance_incident? - raise TargetNotMaintenance.new 'The target project is already an incident, changing is not possible via set_incident' + raise TargetNotMaintenance, 'The target project is already an incident, changing is not possible via set_incident' end unless @target_project.kind == 'maintenance' - raise TargetNotMaintenance.new "The target project is not of type maintenance but #{@target_project.kind}" + raise TargetNotMaintenance, "The target project is not of type maintenance but #{@target_project.kind}" end tip = Project.get_by_name(action.target_project + ':' + opts[:incident]) if tip && tip.is_locked? - raise ProjectLocked.new + raise ProjectLocked end end @@ -282,30 +282,30 @@ def cmd_changereviewstate_permissions(opts) return true if User.current.is_admin? unless req.state.in?([:review, :new]) - raise ReviewChangeStateNoPermission.new 'The request is neither in state review nor new' + raise ReviewChangeStateNoPermission, 'The request is neither in state review nor new' end unless by_user || by_group || by_package || by_project - raise ReviewNotSpecified.new 'The review must specified via by_user, by_group or by_project(by_package) argument.' + raise ReviewNotSpecified, 'The review must specified via by_user, by_group or by_project(by_package) argument.' end if by_user && !(User.current == by_user) - raise ReviewChangeStateNoPermission.new "review state change is not permitted for #{User.current.login}" + raise ReviewChangeStateNoPermission, "review state change is not permitted for #{User.current.login}" end if by_group && !User.current.is_in_group?(by_group) - raise ReviewChangeStateNoPermission.new "review state change for group #{by_group.title} is not permitted for #{User.current.login}" + raise ReviewChangeStateNoPermission, "review state change for group #{by_group.title} is not permitted for #{User.current.login}" end if by_package && !User.current.can_modify_package?(by_package, true) - raise ReviewChangeStateNoPermission.new "review state change for package #{opts[:by_project]}/#{opts[:by_package]} " + + raise ReviewChangeStateNoPermission, "review state change for package #{opts[:by_project]}/#{opts[:by_package]} " + "is not permitted for #{User.current.login}" end return unless by_project && !User.current.can_modify_project?(by_project, true) - raise ReviewChangeStateNoPermission.new "review state change for project #{opts[:by_project]} is not permitted for #{User.current.login}" + raise ReviewChangeStateNoPermission, "review state change for project #{opts[:by_project]} is not permitted for #{User.current.login}" end def cmd_changestate_permissions(opts) # We do not support to revert changes from accepted requests (yet) if req.state == :accepted - raise PostRequestNoPermission.new 'change state from an accepted state is not allowed.' + raise PostRequestNoPermission, 'change state from an accepted state is not allowed.' end # enforce state to "review" if going to "new", when review tasks are open @@ -318,29 +318,29 @@ def cmd_changestate_permissions(opts) if opts[:newstate] == 'accepted' if req.state == :review unless opts[:force] - raise PostRequestNoPermission.new 'Request is in review state. You may use the force parameter to ignore this.' + raise PostRequestNoPermission, 'Request is in review state. You may use the force parameter to ignore this.' end elsif req.state != :new - raise PostRequestNoPermission.new 'Request is not in new state. You may reopen it by setting it to new.' + raise PostRequestNoPermission, 'Request is not in new state. You may reopen it by setting it to new.' end end # do not allow direct switches from a final state to another one to avoid races and double actions. # request needs to get reopened first. if req.state.in?([:accepted, :superseded, :revoked]) if opts[:newstate].in?(["accepted", "declined", "superseded", "revoked"]) - raise PostRequestNoPermission.new "set state to #{opts[:newstate]} from a final state is not allowed." + raise PostRequestNoPermission, "set state to #{opts[:newstate]} from a final state is not allowed." end end if opts[:newstate] == 'superseded' && !opts[:superseded_by] - raise PostRequestMissingParamater.new "Supersed a request requires a 'superseded_by' parameter with the request id." + raise PostRequestMissingParamater, "Supersed a request requires a 'superseded_by' parameter with the request id." end permission_granted = false if User.current.is_admin? permission_granted = true elsif opts[:newstate] == 'deleted' - raise PostRequestNoPermission.new 'Deletion of a request is only permitted for administrators. Please revoke the request instead.' + raise PostRequestNoPermission, 'Deletion of a request is only permitted for administrators. Please revoke the request instead.' end if opts[:newstate].in?(["new", "review", "revoked", "superseded"]) && req.creator == User.current.login @@ -363,7 +363,7 @@ def cmd_changestate_permissions(opts) msg = "No permission to modify target of request " + "#{action.bs_request.number} (type #{action.action_type}): project #{action.target_project}" unless action.bs_request.new_record? msg += ", package #{action.target_package}" if action.target_package - raise PostRequestNoPermission.new msg + raise PostRequestNoPermission, msg end end @@ -384,7 +384,7 @@ def initialize(_req, _opts) # Is the user involved in any project or package ? def require_permissions_in_target_or_source unless @write_permission_in_target || @write_permission_in_source - raise AddReviewNotPermitted.new "You have no role in request #{req.number}" + raise AddReviewNotPermitted, "You have no role in request #{req.number}" end true end @@ -417,6 +417,6 @@ def extra_permissions_check_changestate else "No permission to change request #{req.number} state" end - raise PostRequestNoPermission.new err if err + raise PostRequestNoPermission, err if err end end diff --git a/src/api/app/models/channel.rb b/src/api/app/models/channel.rb index 281d4233b81..6b0980a616d 100644 --- a/src/api/app/models/channel.rb +++ b/src/api/app/models/channel.rb @@ -10,7 +10,7 @@ def self.verify_xml!(xmlhash) xmlhash.elements('target') { |p| prj = Project.get_by_name(p['project']) unless prj.repositories.find_by_name(p['repository']) - raise UnknownRepository.new "Repository does not exist #{prj.name}/#{p['repository']}" + raise UnknownRepository, "Repository does not exist #{prj.name}/#{p['repository']}" end } xmlhash.elements('binaries').each { |p| @@ -27,10 +27,10 @@ def self.verify_xml!(xmlhash) prj = Project.get_by_name( project ) if b['package'] pkg = prj.find_package(b['package'] ) - raise UnknownPackage.new "Package does not exist #{prj.name}/#{p['package']}" unless pkg + raise UnknownPackage, "Package does not exist #{prj.name}/#{p['package']}" unless pkg end if b['repository'] && !prj.repositories.find_by_name(b['repository']) - raise UnknownRepository.new "Repository does not exist #{prj.name}/#{b['repository']}" + raise UnknownRepository, "Repository does not exist #{prj.name}/#{b['repository']}" end end } diff --git a/src/api/app/models/flag.rb b/src/api/app/models/flag.rb index a187d4c9e7f..8f332b81819 100644 --- a/src/api/app/models/flag.rb +++ b/src/api/app/models/flag.rb @@ -112,7 +112,7 @@ def has_children end def to_xml(builder) - raise RuntimeError.new( "FlagError: No flag-status set. \n #{inspect}" ) if status.nil? + raise RuntimeError, "FlagError: No flag-status set. \n #{inspect}" if status.nil? options = Hash.new options['arch'] = architecture.name unless architecture.nil? options['repository'] = repo unless repo.nil? diff --git a/src/api/app/models/group.rb b/src/api/app/models/group.rb index 16dffcce857..ab4c974d790 100644 --- a/src/api/app/models/group.rb +++ b/src/api/app/models/group.rb @@ -28,7 +28,7 @@ class Group < ApplicationRecord has_and_belongs_to_many :roles, -> { distinct } def self.find_by_title!(title) - find_by_title(title) || raise(NotFoundError.new("Couldn't find Group '#{title}'")) + find_by_title(title) || (raise NotFoundError, "Couldn't find Group '#{title}'") end def update_from_xml( xmlhash ) diff --git a/src/api/app/models/issue.rb b/src/api/app/models/issue.rb index ad0d937ad2d..c9aee18cd11 100644 --- a/src/api/app/models/issue.rb +++ b/src/api/app/models/issue.rb @@ -22,7 +22,7 @@ def self.find_or_create_by_name_and_tracker( name, issue_tracker_name, force_upd def self.find_by_name_and_tracker(name, issue_tracker_name, options = {}) issue_tracker = IssueTracker.find_by_name(issue_tracker_name) unless issue_tracker - raise IssueTracker::NotFoundError.new("Error: Issue Tracker '#{issue_tracker_name}' not found.") + raise IssueTracker::NotFoundError, "Error: Issue Tracker '#{issue_tracker_name}' not found." end issue = issue_tracker.issues.find_by_name(name) diff --git a/src/api/app/models/package.rb b/src/api/app/models/package.rb index 6d7e2587606..168f1056f7f 100644 --- a/src/api/app/models/package.rb +++ b/src/api/app/models/package.rb @@ -300,7 +300,7 @@ def check_source_access! return if check_source_access? # TODO: Use pundit for authorization instead if !User.current || User.current.is_nobody? - raise Authenticator::AnonymousUser.new 'Anonymous user is not allowed here - please login' + raise Authenticator::AnonymousUser, 'Anonymous user is not allowed here - please login' end raise ReadSourceAccessError, "#{project.name}/#{name}" @@ -616,7 +616,7 @@ def update_product_list end def self.detect_package_kinds(directory) - raise ArgumentError.new 'neh!' if directory.has_key? 'time' + raise ArgumentError, 'neh!' if directory.has_key? 'time' ret = [] directory.elements('entry') do |e| %w{patchinfo aggregate link channel}.each do |kind| @@ -646,7 +646,7 @@ def resolve_devel_package processed = {} if pkg == pkg.develpackage - raise CycleError.new 'Package defines itself as devel package' + raise CycleError, 'Package defines itself as devel package' end while (pkg.develpackage || pkg.project.develproject) # logger.debug "resolve_devel_package #{pkg.inspect}" @@ -657,7 +657,7 @@ def resolve_devel_package processed.keys.each do |key| str = str + ' -- ' + key end - raise CycleError.new "There is a cycle in devel definition at #{str}" + raise CycleError, "There is a cycle in devel definition at #{str}" end processed[str] = 1 # get project and package name @@ -1163,7 +1163,7 @@ def delete_file(name, opt = {}) delete_opt[:comment] = opt[:comment] if opt[:comment] unless User.current.can_modify_package? self - raise DeleteFileNoPermission.new 'Insufficient permissions to delete file' + raise DeleteFileNoPermission, 'Insufficient permissions to delete file' end Backend::Connection.delete source_path(name, delete_opt) @@ -1260,7 +1260,7 @@ def self.verify_file!(pkg, name, content) if data.has_attribute? 'missingok' Project.get_by_name(tproject_name) # permission check if Package.exists_by_project_and_name(tproject_name, tpackage_name, follow_project_links: true, allow_remote_packages: true) - raise NotMissingError.new "Link contains a missingok statement but link target (#{tproject_name}/#{tpackage_name}) exists." + raise NotMissingError, "Link contains a missingok statement but link target (#{tproject_name}/#{tpackage_name}) exists." end else # permission check diff --git a/src/api/app/models/package_build_status.rb b/src/api/app/models/package_build_status.rb index 81d8ba035cc..61b77ed56e2 100644 --- a/src/api/app/models/package_build_status.rb +++ b/src/api/app/models/package_build_status.rb @@ -17,7 +17,7 @@ def result(opts = {}) tocheck_repos = @pkg.project.repositories_linking_project(opts[:target_project]) - raise NoRepositoriesFound.new if tocheck_repos.empty? + raise NoRepositoriesFound if tocheck_repos.empty? @result = {} tocheck_repos.each do |srep| @@ -39,7 +39,7 @@ def check_repo_status(srep) end end archs.uniq! - raise NoRepositoriesFound.new "Can not find repository building against target" unless trepo + raise NoRepositoriesFound, "Can not find repository building against target" unless trepo gather_target_packages(trepo) @@ -132,7 +132,7 @@ def check_missingdeps(srep, arch) buildinfo = Xmlhash.parse(ActiveXML.backend.direct_http(uri)) rescue ActiveXML::Transport::Error => e # if there is an error, we ignore - raise FailedToRetrieveBuildInfo.new "Can't get buildinfo: #{e.summary}" + raise FailedToRetrieveBuildInfo, "Can't get buildinfo: #{e.summary}" end buildinfo.get("package").elements("pkgdep") do |b| diff --git a/src/api/app/models/patchinfo.rb b/src/api/app/models/patchinfo.rb index cb69c20b64b..fd2ac3d1f37 100644 --- a/src/api/app/models/patchinfo.rb +++ b/src/api/app/models/patchinfo.rb @@ -60,7 +60,7 @@ def check_releasetarget!(rt) return if is_repository_matching?(prt.target_repository, rt) end end - raise ReleasetargetNotFound.new "Release target '#{rt['project']}/#{rt['repository']}' is not defined " + + raise ReleasetargetNotFound, "Release target '#{rt['project']}/#{rt['repository']}' is not defined " + "in this project '#{@project.name}'. Please ask your OBS administrator to add it." end @@ -72,8 +72,8 @@ def verify_data(project, raw_post) # valid tracker? data.elements('issue').each do |i| tracker = IssueTracker.find_by_name(i['tracker']) - raise TrackerNotFound.new "Tracker #{i['tracker']} is not registered in this OBS instance" unless tracker - raise IssueTracker::InvalidIssueName.new "The issue name is not supported: #{i['id']}" unless tracker.valid_issue_name?(i['id']) + raise TrackerNotFound, "Tracker #{i['tracker']} is not registered in this OBS instance" unless tracker + raise IssueTracker::InvalidIssueName, "The issue name is not supported: #{i['id']}" unless tracker.valid_issue_name?(i['id']) end # are releasetargets specified ? validate that this project is actually defining them. data.elements('releasetarget') { |r| check_releasetarget!(r) } @@ -173,10 +173,10 @@ def require_package_for_patchinfo(project, pkg_name, force) @pkg = Package.get_by_project_and_name project, pkg_name return if force if @pkg.is_patchinfo? - raise PatchinfoFileExists.new "createpatchinfo command: the patchinfo #{pkg_name} exists already. " + + raise PatchinfoFileExists, "createpatchinfo command: the patchinfo #{pkg_name} exists already. " + 'Either use force=1 re-create the _patchinfo or use updatepatchinfo for updating.' else - raise PackageAlreadyExists.new "createpatchinfo command: the package #{pkg_name} exists already, " + + raise PackageAlreadyExists, "createpatchinfo command: the package #{pkg_name} exists already, " + 'but is no patchinfo. Please create a new package instead.' end end @@ -227,11 +227,11 @@ def fetch_release_targets(pkg) data = read_patchinfo_xmlhash(pkg) # validate _patchinfo for completeness if data.empty? - raise IncompletePatchinfo.new 'The _patchinfo file is not parseble' + raise IncompletePatchinfo, 'The _patchinfo file is not parseble' end %w(rating category summary).each do |field| if data[field].blank? - raise IncompletePatchinfo.new "The _patchinfo has no #{field} set" + raise IncompletePatchinfo, "The _patchinfo has no #{field} set" end end # a patchinfo may limit the targets diff --git a/src/api/app/models/product.rb b/src/api/app/models/product.rb index f7032d06ef8..154f151bc52 100644 --- a/src/api/app/models/product.rb +++ b/src/api/app/models/product.rb @@ -6,7 +6,7 @@ class Product < ApplicationRecord include CanRenderModel def self.find_or_create_by_name_and_package( name, package ) - raise Product::NotFoundError.new( "Error: Package not valid." ) unless package.class == Package + raise Product::NotFoundError, "Error: Package not valid." unless package.class == Package product = find_by_name_and_package name, package product = create( name: name, package: package ) if product.empty? diff --git a/src/api/app/models/project.rb b/src/api/app/models/project.rb index f6dd3ec2cb1..8594a37ee45 100644 --- a/src/api/app/models/project.rb +++ b/src/api/app/models/project.rb @@ -393,7 +393,7 @@ def self.get_maintenance_project(at = nil) at ||= AttribType.find_by_namespace_and_name!('OBS', 'MaintenanceProject') maintenance_project = Project.find_by_attribute_type(at).first unless maintenance_project && check_access?(maintenance_project) - raise UnknownObjectError.new 'There is no project flagged as maintenance project on server and no target in request defined.' + raise UnknownObjectError, 'There is no project flagged as maintenance project on server and no target in request defined.' end maintenance_project end @@ -522,7 +522,7 @@ def check_weak_dependencies! return unless is_maintenance? return unless MaintenanceIncident.find_by_maintenance_db_project_id id - raise DeleteError.new 'This maintenance project has incident projects and can therefore not be deleted.' + raise DeleteError, 'This maintenance project has incident projects and can therefore not be deleted.' end def can_be_unlocked?(with_exception = true) @@ -531,7 +531,7 @@ def can_be_unlocked?(with_exception = true) maintenance_release_requests = requests.where(bs_request_actions: { type: 'maintenance_release', source_project: name}) if maintenance_release_requests.exists? if with_exception - raise OpenReleaseRequest.new "Unlock of maintenance incident #{name} is not possible," + + raise OpenReleaseRequest, "Unlock of maintenance incident #{name} is not possible," + " because there is a running release request: #{maintenance_release_requests.first.id}" else errors.add(:base, "Unlock of maintenance incident #{name} is not possible," + @@ -541,7 +541,7 @@ def can_be_unlocked?(with_exception = true) end unless flags.find_by_flag_and_status('lock', 'enable') - raise ProjectNotLocked.new "project '#{name}' is not locked" if with_exception + raise ProjectNotLocked, "project '#{name}' is not locked" if with_exception errors.add(:base, 'is not locked') end diff --git a/src/api/app/models/project/update_from_xml_command.rb b/src/api/app/models/project/update_from_xml_command.rb index bacd7138449..ce0d0c5fef4 100644 --- a/src/api/app/models/project/update_from_xml_command.rb +++ b/src/api/app/models/project/update_from_xml_command.rb @@ -12,18 +12,18 @@ def run(xmlhash, force = nil) # check for raising read access permissions, which can't get ensured atm unless project.new_record? || project.disabled_for?('access', nil, nil) if FlagHelper.xml_disabled_for?(xmlhash, 'access') && !User.current.is_admin? - raise ForbiddenError.new + raise ForbiddenError end end unless project.new_record? || project.disabled_for?('sourceaccess', nil, nil) if FlagHelper.xml_disabled_for?(xmlhash, 'sourceaccess') && !User.current.is_admin? - raise ForbiddenError.new + raise ForbiddenError end end new_record = project.new_record? if ::Configuration.default_access_disabled == true && !new_record if project.disabled_for?('access', nil, nil) && !FlagHelper.xml_disabled_for?(xmlhash, 'access') && !User.current.is_admin? - raise ForbiddenError.new + raise ForbiddenError end end @@ -113,7 +113,7 @@ def parse_develproject(xmlhash) while prj && prj.develproject if processed[prj.name] - raise CycleError.new "There is a cycle in devel definition at #{processed.keys.join(' -- ')}" + raise CycleError, "There is a cycle in devel definition at #{processed.keys.join(' -- ')}" end processed[prj.name] = 1 prj = prj.develproject @@ -224,7 +224,7 @@ def update_path_elements(current_repo, xml_hash) def check_for_empty_repo_list(list, error_prefix) return if list.empty? linking_repos = list.map { |x| x.repository.project.name + '/' + x.repository.name }.join "\n" - raise SaveError.new(error_prefix + "\n" + linking_repos) + raise SaveError, error_prefix + "\n" + linking_repos end def update_repository_flags(current_repo, xml_hash) diff --git a/src/api/app/models/role.rb b/src/api/app/models/role.rb index a5bf519cd08..505c789e5b6 100644 --- a/src/api/app/models/role.rb +++ b/src/api/app/models/role.rb @@ -50,7 +50,7 @@ def self.hashed end def self.find_by_title!(title) - find_by_title(title) || raise(NotFound.new("Couldn't find Role '#{title}'")) + find_by_title(title) || raise(NotFound, "Couldn't find Role '#{title}'") end def self.local_roles diff --git a/src/api/app/models/service.rb b/src/api/app/models/service.rb index a557ab56f7d..cca23d0d216 100644 --- a/src/api/app/models/service.rb +++ b/src/api/app/models/service.rb @@ -18,9 +18,9 @@ def self.valid_name?(name) def self.verify_xml!(raw_post) Xmlhash.parse(raw_post).elements('service').each do |s| - raise InvalidParameter.new "service name #{s['name']} contains invalid chars" unless valid_name?(s['name']) + raise InvalidParameter, "service name #{s['name']} contains invalid chars" unless valid_name?(s['name']) s.elements('param').each do |p| - raise InvalidParameter.new "service parameter #{p['name']} contains invalid chars" unless valid_name?(p['name']) + raise InvalidParameter, "service parameter #{p['name']} contains invalid chars" unless valid_name?(p['name']) end end end diff --git a/src/api/app/models/unregistered_user.rb b/src/api/app/models/unregistered_user.rb index b65f58e068f..c10af1b0cc2 100644 --- a/src/api/app/models/unregistered_user.rb +++ b/src/api/app/models/unregistered_user.rb @@ -60,12 +60,12 @@ def self.register(opts) unless newuser.errors.empty? details = newuser.errors.map{ |key, msg| "#{key}: #{msg}" }.join(', ') - raise ErrRegisterSave.new "Could not save the registration, details: #{details}" + raise ErrRegisterSave, "Could not save the registration, details: #{details}" end return unless newuser.state == "unconfirmed" - raise ErrRegisterSave.new "Thank you for signing up! An admin has to confirm your account now. Please be patient." + raise ErrRegisterSave, "Thank you for signing up! An admin has to confirm your account now. Please be patient." end end diff --git a/src/api/app/models/user.rb b/src/api/app/models/user.rb index d208b0b9141..a92f590c4aa 100644 --- a/src/api/app/models/user.rb +++ b/src/api/app/models/user.rb @@ -281,7 +281,7 @@ def self.nobody_login def self.get_default_admin admin = CONFIG['default_admin'] || 'Admin' user = find_by_login(admin) - raise NotFoundError.new("Admin not found, user #{admin} has not admin permissions") unless user.is_admin? + raise NotFoundError, "Admin not found, user #{admin} has not admin permissions" unless user.is_admin? user end @@ -295,7 +295,7 @@ def self.find_nobody! def self.find_by_login!(login) user = find_by_login(login) if user.nil? || user.state == 'deleted' - raise NotFoundError.new("Couldn't find User with login = #{login}") + raise NotFoundError, "Couldn't find User with login = #{login}" end user end @@ -304,7 +304,7 @@ def self.get_by_login(login) user = find_by_login!(login) # FIXME: Move permission checks to controller level unless User.current.is_admin? || user == User.current - raise NoPermission.new "User #{login} can not be accessed by #{User.current.login}" + raise NoPermission, "User #{login} can not be accessed by #{User.current.login}" end user end diff --git a/src/api/config/routes.rb b/src/api/config/routes.rb index 69b3c3e09d8..3fc09741d39 100644 --- a/src/api/config/routes.rb +++ b/src/api/config/routes.rb @@ -7,7 +7,7 @@ def self.matches?(request) begin request.format.to_sym != :xml rescue ArgumentError => e - raise InvalidRequestFormat.new e.to_s + raise InvalidRequestFormat, e.to_s end end end diff --git a/src/api/lib/activexml/node.rb b/src/api/lib/activexml/node.rb index 541c1a87301..72ae65209ac 100644 --- a/src/api/lib/activexml/node.rb +++ b/src/api/lib/activexml/node.rb @@ -189,7 +189,7 @@ def initialize( data ) end def parse(data) - raise ParseError.new('Empty XML passed!') if data.empty? + raise ParseError, 'Empty XML passed!' if data.empty? begin # puts "parse #{self.class}" t0 = Time.now @@ -198,7 +198,7 @@ def parse(data) rescue Nokogiri::XML::SyntaxError => e Rails.logger.error "Error parsing XML: #{e}" Rails.logger.error "XML content was: #{data}" - raise ParseError.new e.message + raise ParseError, e.message end end private :parse diff --git a/src/api/lib/activexml/transport.rb b/src/api/lib/activexml/transport.rb index 5cd27ff3f5f..21328db5c2a 100644 --- a/src/api/lib/activexml/transport.rb +++ b/src/api/lib/activexml/transport.rb @@ -144,7 +144,7 @@ def find( model, *args ) params = args[1].merge params end when String - raise ArgumentError.new "find with string is no longer allowed #{args.inspect}" + raise ArgumentError, "find with string is no longer allowed #{args.inspect}" when Hash # logger.debug "Transport.find: using hash" if args[0].has_key?(:predicate) && args[0].has_key?(:what) diff --git a/src/api/lib/xpath_engine.rb b/src/api/lib/xpath_engine.rb index e6e132433bd..742353b40c4 100644 --- a/src/api/lib/xpath_engine.rb +++ b/src/api/lib/xpath_engine.rb @@ -394,7 +394,7 @@ def parse_predicate(root, stack) # logger.debug "------------------ predicate ---------------" # logger.debug "-- pred_array: #{stack.inspect} --" - raise IllegalXpathError.new "invalid predicate" if stack.nil? + raise IllegalXpathError, "invalid predicate" if stack.nil? while !stack.empty? token = stack.shift diff --git a/src/api/test/test_helper.rb b/src/api/test/test_helper.rb index 7b753297d0b..050b7d37216 100644 --- a/src/api/test/test_helper.rb +++ b/src/api/test/test_helper.rb @@ -437,20 +437,20 @@ def load_backend_file(path) def assert_xml_tag(conds) node = ActiveXML::Node.new(@response.body) ret = node.find_matching(NodeMatcher::Conditions.new(conds)) - raise MiniTest::Assertion.new("expected tag, but no tag found matching #{conds.inspect} in:\n#{node.dump_xml}") unless ret + raise MiniTest::Assertion, "expected tag, but no tag found matching #{conds.inspect} in:\n#{node.dump_xml}" unless ret end def assert_no_xml_tag(conds) node = ActiveXML::Node.new(@response.body) ret = node.find_matching(NodeMatcher::Conditions.new(conds)) - raise MiniTest::Assertion.new("expected no tag, but found tag matching #{conds.inspect} in:\n#{node.dump_xml}") if ret + raise MiniTest::Assertion, "expected no tag, but found tag matching #{conds.inspect} in:\n#{node.dump_xml}" if ret end # useful to fix our test cases def url_for(hash) - raise ArgumentError.new('we need a hash here') unless hash.kind_of? Hash - raise ArgumentError.new('we need a :controller') unless hash.has_key?(:controller) - raise ArgumentError.new('we need a :action') unless hash.has_key?(:action) + raise ArgumentError, 'we need a hash here' unless hash.kind_of? Hash + raise ArgumentError, 'we need a :controller' unless hash.has_key?(:controller) + raise ArgumentError, 'we need a :action' unless hash.has_key?(:action) super(hash) end