Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
c6b1043e
Commit
c6b1043e
authored
Apr 18, 2018
by
🙈 jacopo beschi 🙉
Committed by
Rémy Coutable
Apr 18, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Resolve "Make a Rubocop that forbids returning from a block"
parent
3529ccae
Changes
59
Hide whitespace changes
Inline
Side-by-side
Showing
59 changed files
with
434 additions
and
102 deletions
+434
-102
app/controllers/concerns/notes_actions.rb
app/controllers/concerns/notes_actions.rb
+2
-2
app/controllers/groups/variables_controller.rb
app/controllers/groups/variables_controller.rb
+1
-1
app/controllers/projects/merge_requests_controller.rb
app/controllers/projects/merge_requests_controller.rb
+2
-2
app/controllers/projects/variables_controller.rb
app/controllers/projects/variables_controller.rb
+1
-1
app/models/ci/build.rb
app/models/ci/build.rb
+3
-3
app/models/notification_recipient.rb
app/models/notification_recipient.rb
+6
-6
app/models/project.rb
app/models/project.rb
+1
-1
app/services/ci/register_job_service.rb
app/services/ci/register_job_service.rb
+1
-1
app/services/clusters/gcp/verify_provision_status_service.rb
app/services/clusters/gcp/verify_provision_status_service.rb
+1
-1
app/services/create_deployment_service.rb
app/services/create_deployment_service.rb
+2
-2
app/services/import_export_clean_up_service.rb
app/services/import_export_clean_up_service.rb
+1
-1
app/services/projects/destroy_service.rb
app/services/projects/destroy_service.rb
+1
-1
app/services/repository_archive_clean_up_service.rb
app/services/repository_archive_clean_up_service.rb
+1
-1
app/services/test_hooks/base_service.rb
app/services/test_hooks/base_service.rb
+1
-1
app/workers/post_receive.rb
app/workers/post_receive.rb
+1
-1
app/workers/stuck_ci_jobs_worker.rb
app/workers/stuck_ci_jobs_worker.rb
+1
-1
changelogs/unreleased/42889-avoid-return-inside-block.yml
changelogs/unreleased/42889-avoid-return-inside-block.yml
+5
-0
lib/api/discussions.rb
lib/api/discussions.rb
+5
-5
lib/api/group_variables.rb
lib/api/group_variables.rb
+2
-2
lib/api/internal.rb
lib/api/internal.rb
+5
-5
lib/api/issues.rb
lib/api/issues.rb
+1
-1
lib/api/job_artifacts.rb
lib/api/job_artifacts.rb
+1
-1
lib/api/jobs.rb
lib/api/jobs.rb
+2
-2
lib/api/project_snippets.rb
lib/api/project_snippets.rb
+1
-1
lib/api/projects.rb
lib/api/projects.rb
+1
-1
lib/api/runner.rb
lib/api/runner.rb
+3
-3
lib/api/snippets.rb
lib/api/snippets.rb
+4
-4
lib/api/triggers.rb
lib/api/triggers.rb
+4
-4
lib/api/v3/builds.rb
lib/api/v3/builds.rb
+4
-4
lib/api/v3/projects.rb
lib/api/v3/projects.rb
+1
-1
lib/api/v3/snippets.rb
lib/api/v3/snippets.rb
+3
-3
lib/api/v3/triggers.rb
lib/api/v3/triggers.rb
+2
-2
lib/api/variables.rb
lib/api/variables.rb
+2
-2
lib/declarative_policy/runner.rb
lib/declarative_policy/runner.rb
+1
-1
lib/gitlab/auth.rb
lib/gitlab/auth.rb
+1
-1
lib/gitlab/ci/trace.rb
lib/gitlab/ci/trace.rb
+1
-1
lib/gitlab/ci/trace/stream.rb
lib/gitlab/ci/trace/stream.rb
+1
-1
lib/gitlab/daemon.rb
lib/gitlab/daemon.rb
+2
-2
lib/gitlab/gfm/uploads_rewriter.rb
lib/gitlab/gfm/uploads_rewriter.rb
+1
-1
lib/gitlab/git/diff.rb
lib/gitlab/git/diff.rb
+1
-1
lib/gitlab/git/popen.rb
lib/gitlab/git/popen.rb
+3
-1
lib/gitlab/git/repository_mirroring.rb
lib/gitlab/git/repository_mirroring.rb
+1
-1
lib/gitlab/optimistic_locking.rb
lib/gitlab/optimistic_locking.rb
+8
-11
lib/gitlab/shell.rb
lib/gitlab/shell.rb
+1
-1
lib/gitlab/sidekiq_middleware/shutdown.rb
lib/gitlab/sidekiq_middleware/shutdown.rb
+1
-1
lib/tasks/gitlab/storage.rake
lib/tasks/gitlab/storage.rake
+2
-2
qa/qa/factory/base.rb
qa/qa/factory/base.rb
+1
-1
qa/qa/page/group/show.rb
qa/qa/page/group/show.rb
+1
-1
qa/qa/page/project/pipeline/show.rb
qa/qa/page/project/pipeline/show.rb
+2
-2
qa/qa/scenario/template.rb
qa/qa/scenario/template.rb
+1
-1
rubocop/cop/avoid_break_from_strong_memoize.rb
rubocop/cop/avoid_break_from_strong_memoize.rb
+48
-0
rubocop/cop/avoid_return_from_blocks.rb
rubocop/cop/avoid_return_from_blocks.rb
+77
-0
rubocop/cop/migration/safer_boolean_column.rb
rubocop/cop/migration/safer_boolean_column.rb
+2
-2
rubocop/rubocop.rb
rubocop/rubocop.rb
+2
-0
spec/lib/gitlab/ci/trace_spec.rb
spec/lib/gitlab/ci/trace_spec.rb
+1
-1
spec/lib/gitlab/shell_spec.rb
spec/lib/gitlab/shell_spec.rb
+1
-1
spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb
spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb
+74
-0
spec/rubocop/cop/avoid_return_from_blocks_spec.rb
spec/rubocop/cop/avoid_return_from_blocks_spec.rb
+127
-0
spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb
...red_examples/uploaders/gitlab_uploader_shared_examples.rb
+1
-1
No files found.
app/controllers/concerns/notes_actions.rb
View file @
c6b1043e
...
@@ -217,7 +217,7 @@ module NotesActions
...
@@ -217,7 +217,7 @@ module NotesActions
def
note_project
def
note_project
strong_memoize
(
:note_project
)
do
strong_memoize
(
:note_project
)
do
return
nil
unless
project
next
nil
unless
project
note_project_id
=
params
[
:note_project_id
]
note_project_id
=
params
[
:note_project_id
]
...
@@ -228,7 +228,7 @@ module NotesActions
...
@@ -228,7 +228,7 @@ module NotesActions
project
project
end
end
return
access_denied!
unless
can?
(
current_user
,
:create_note
,
the_project
)
next
access_denied!
unless
can?
(
current_user
,
:create_note
,
the_project
)
the_project
the_project
end
end
...
...
app/controllers/groups/variables_controller.rb
View file @
c6b1043e
...
@@ -15,7 +15,7 @@ module Groups
...
@@ -15,7 +15,7 @@ module Groups
def
update
def
update
if
@group
.
update
(
group_variables_params
)
if
@group
.
update
(
group_variables_params
)
respond_to
do
|
format
|
respond_to
do
|
format
|
format
.
json
{
re
turn
re
nder_group_variables
}
format
.
json
{
render_group_variables
}
end
end
else
else
respond_to
do
|
format
|
respond_to
do
|
format
|
...
...
app/controllers/projects/merge_requests_controller.rb
View file @
c6b1043e
...
@@ -60,13 +60,13 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
...
@@ -60,13 +60,13 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
end
end
format
.
patch
do
format
.
patch
do
return
render_404
unless
@merge_request
.
diff_refs
break
render_404
unless
@merge_request
.
diff_refs
send_git_patch
@project
.
repository
,
@merge_request
.
diff_refs
send_git_patch
@project
.
repository
,
@merge_request
.
diff_refs
end
end
format
.
diff
do
format
.
diff
do
return
render_404
unless
@merge_request
.
diff_refs
break
render_404
unless
@merge_request
.
diff_refs
send_git_diff
@project
.
repository
,
@merge_request
.
diff_refs
send_git_diff
@project
.
repository
,
@merge_request
.
diff_refs
end
end
...
...
app/controllers/projects/variables_controller.rb
View file @
c6b1043e
...
@@ -12,7 +12,7 @@ class Projects::VariablesController < Projects::ApplicationController
...
@@ -12,7 +12,7 @@ class Projects::VariablesController < Projects::ApplicationController
def
update
def
update
if
@project
.
update
(
variables_params
)
if
@project
.
update
(
variables_params
)
respond_to
do
|
format
|
respond_to
do
|
format
|
format
.
json
{
re
turn
re
nder_variables
}
format
.
json
{
render_variables
}
end
end
else
else
respond_to
do
|
format
|
respond_to
do
|
format
|
...
...
app/models/ci/build.rb
View file @
c6b1043e
...
@@ -479,7 +479,7 @@ module Ci
...
@@ -479,7 +479,7 @@ module Ci
def
user_variables
def
user_variables
Gitlab
::
Ci
::
Variables
::
Collection
.
new
.
tap
do
|
variables
|
Gitlab
::
Ci
::
Variables
::
Collection
.
new
.
tap
do
|
variables
|
return
variables
if
user
.
blank?
break
variables
if
user
.
blank?
variables
.
append
(
key:
'GITLAB_USER_ID'
,
value:
user
.
id
.
to_s
)
variables
.
append
(
key:
'GITLAB_USER_ID'
,
value:
user
.
id
.
to_s
)
variables
.
append
(
key:
'GITLAB_USER_EMAIL'
,
value:
user
.
email
)
variables
.
append
(
key:
'GITLAB_USER_EMAIL'
,
value:
user
.
email
)
...
@@ -594,7 +594,7 @@ module Ci
...
@@ -594,7 +594,7 @@ module Ci
def
persisted_variables
def
persisted_variables
Gitlab
::
Ci
::
Variables
::
Collection
.
new
.
tap
do
|
variables
|
Gitlab
::
Ci
::
Variables
::
Collection
.
new
.
tap
do
|
variables
|
return
variables
unless
persisted?
break
variables
unless
persisted?
variables
variables
.
append
(
key:
'CI_JOB_ID'
,
value:
id
.
to_s
)
.
append
(
key:
'CI_JOB_ID'
,
value:
id
.
to_s
)
...
@@ -643,7 +643,7 @@ module Ci
...
@@ -643,7 +643,7 @@ module Ci
def
persisted_environment_variables
def
persisted_environment_variables
Gitlab
::
Ci
::
Variables
::
Collection
.
new
.
tap
do
|
variables
|
Gitlab
::
Ci
::
Variables
::
Collection
.
new
.
tap
do
|
variables
|
return
variables
unless
persisted?
&&
persisted_environment
.
present?
break
variables
unless
persisted?
&&
persisted_environment
.
present?
variables
.
concat
(
persisted_environment
.
predefined_variables
)
variables
.
concat
(
persisted_environment
.
predefined_variables
)
...
...
app/models/notification_recipient.rb
View file @
c6b1043e
...
@@ -83,14 +83,14 @@ class NotificationRecipient
...
@@ -83,14 +83,14 @@ class NotificationRecipient
def
has_access?
def
has_access?
DeclarativePolicy
.
subject_scope
do
DeclarativePolicy
.
subject_scope
do
return
false
unless
user
.
can?
(
:receive_notifications
)
break
false
unless
user
.
can?
(
:receive_notifications
)
return
true
if
@skip_read_ability
break
true
if
@skip_read_ability
return
false
if
@target
&&
!
user
.
can?
(
:read_cross_project
)
break
false
if
@target
&&
!
user
.
can?
(
:read_cross_project
)
return
false
if
@project
&&
!
user
.
can?
(
:read_project
,
@project
)
break
false
if
@project
&&
!
user
.
can?
(
:read_project
,
@project
)
return
true
unless
read_ability
break
true
unless
read_ability
return
true
unless
DeclarativePolicy
.
has_policy?
(
@target
)
break
true
unless
DeclarativePolicy
.
has_policy?
(
@target
)
user
.
can?
(
read_ability
,
@target
)
user
.
can?
(
read_ability
,
@target
)
end
end
...
...
app/models/project.rb
View file @
c6b1043e
...
@@ -1637,7 +1637,7 @@ class Project < ActiveRecord::Base
...
@@ -1637,7 +1637,7 @@ class Project < ActiveRecord::Base
def
container_registry_variables
def
container_registry_variables
Gitlab
::
Ci
::
Variables
::
Collection
.
new
.
tap
do
|
variables
|
Gitlab
::
Ci
::
Variables
::
Collection
.
new
.
tap
do
|
variables
|
return
variables
unless
Gitlab
.
config
.
registry
.
enabled
break
variables
unless
Gitlab
.
config
.
registry
.
enabled
variables
.
append
(
key:
'CI_REGISTRY'
,
value:
Gitlab
.
config
.
registry
.
host_port
)
variables
.
append
(
key:
'CI_REGISTRY'
,
value:
Gitlab
.
config
.
registry
.
host_port
)
...
...
app/services/ci/register_job_service.rb
View file @
c6b1043e
...
@@ -44,7 +44,7 @@ module Ci
...
@@ -44,7 +44,7 @@ module Ci
build
.
run!
build
.
run!
register_success
(
build
)
register_success
(
build
)
return
Result
.
new
(
build
,
true
)
return
Result
.
new
(
build
,
true
)
# rubocop:disable Cop/AvoidReturnFromBlocks
rescue
Ci
::
Build
::
MissingDependenciesError
rescue
Ci
::
Build
::
MissingDependenciesError
build
.
drop!
(
:missing_dependency_failure
)
build
.
drop!
(
:missing_dependency_failure
)
end
end
...
...
app/services/clusters/gcp/verify_provision_status_service.rb
View file @
c6b1043e
...
@@ -17,7 +17,7 @@ module Clusters
...
@@ -17,7 +17,7 @@ module Clusters
when
'DONE'
when
'DONE'
finalize_creation
finalize_creation
else
else
return
provider
.
make_errored!
(
"Unexpected operation status;
#{
operation
.
status
}
#{
operation
.
status_message
}
"
)
provider
.
make_errored!
(
"Unexpected operation status;
#{
operation
.
status
}
#{
operation
.
status_message
}
"
)
end
end
end
end
end
end
...
...
app/services/create_deployment_service.rb
View file @
c6b1043e
...
@@ -19,8 +19,8 @@ class CreateDeploymentService
...
@@ -19,8 +19,8 @@ class CreateDeploymentService
environment
.
fire_state_event
(
action
)
environment
.
fire_state_event
(
action
)
return
unless
environment
.
save
break
unless
environment
.
save
return
if
environment
.
stopped?
break
if
environment
.
stopped?
deploy
.
tap
(
&
:update_merge_request_metrics!
)
deploy
.
tap
(
&
:update_merge_request_metrics!
)
end
end
...
...
app/services/import_export_clean_up_service.rb
View file @
c6b1043e
...
@@ -10,7 +10,7 @@ class ImportExportCleanUpService
...
@@ -10,7 +10,7 @@ class ImportExportCleanUpService
def
execute
def
execute
Gitlab
::
Metrics
.
measure
(
:import_export_clean_up
)
do
Gitlab
::
Metrics
.
measure
(
:import_export_clean_up
)
do
return
unless
File
.
directory?
(
path
)
next
unless
File
.
directory?
(
path
)
clean_up_export_files
clean_up_export_files
end
end
...
...
app/services/projects/destroy_service.rb
View file @
c6b1043e
...
@@ -137,7 +137,7 @@ module Projects
...
@@ -137,7 +137,7 @@ module Projects
return
true
unless
Gitlab
.
config
.
registry
.
enabled
return
true
unless
Gitlab
.
config
.
registry
.
enabled
ContainerRepository
.
build_root_repository
(
project
).
tap
do
|
repository
|
ContainerRepository
.
build_root_repository
(
project
).
tap
do
|
repository
|
return
repository
.
has_tags?
?
repository
.
delete_tags!
:
true
break
repository
.
has_tags?
?
repository
.
delete_tags!
:
true
end
end
end
end
...
...
app/services/repository_archive_clean_up_service.rb
View file @
c6b1043e
...
@@ -10,7 +10,7 @@ class RepositoryArchiveCleanUpService
...
@@ -10,7 +10,7 @@ class RepositoryArchiveCleanUpService
def
execute
def
execute
Gitlab
::
Metrics
.
measure
(
:repository_archive_clean_up
)
do
Gitlab
::
Metrics
.
measure
(
:repository_archive_clean_up
)
do
return
unless
File
.
directory?
(
path
)
next
unless
File
.
directory?
(
path
)
clean_up_old_archives
clean_up_old_archives
clean_up_empty_directories
clean_up_empty_directories
...
...
app/services/test_hooks/base_service.rb
View file @
c6b1043e
...
@@ -19,7 +19,7 @@ module TestHooks
...
@@ -19,7 +19,7 @@ module TestHooks
error_message
=
catch
(
:validation_error
)
do
error_message
=
catch
(
:validation_error
)
do
sample_data
=
self
.
__send__
(
trigger_data_method
)
# rubocop:disable GitlabSecurity/PublicSend
sample_data
=
self
.
__send__
(
trigger_data_method
)
# rubocop:disable GitlabSecurity/PublicSend
return
hook
.
execute
(
sample_data
,
trigger_key
)
return
hook
.
execute
(
sample_data
,
trigger_key
)
# rubocop:disable Cop/AvoidReturnFromBlocks
end
end
error
(
error_message
)
error
(
error_message
)
...
...
app/workers/post_receive.rb
View file @
c6b1043e
...
@@ -33,7 +33,7 @@ class PostReceive
...
@@ -33,7 +33,7 @@ class PostReceive
unless
@user
unless
@user
log
(
"Triggered hook for non-existing user
\"
#{
post_received
.
identifier
}
\"
"
)
log
(
"Triggered hook for non-existing user
\"
#{
post_received
.
identifier
}
\"
"
)
return
false
return
false
# rubocop:disable Cop/AvoidReturnFromBlocks
end
end
if
Gitlab
::
Git
.
tag_ref?
(
ref
)
if
Gitlab
::
Git
.
tag_ref?
(
ref
)
...
...
app/workers/stuck_ci_jobs_worker.rb
View file @
c6b1043e
...
@@ -38,7 +38,7 @@ class StuckCiJobsWorker
...
@@ -38,7 +38,7 @@ class StuckCiJobsWorker
def
drop_stuck
(
status
,
timeout
)
def
drop_stuck
(
status
,
timeout
)
search
(
status
,
timeout
)
do
|
build
|
search
(
status
,
timeout
)
do
|
build
|
return
unless
build
.
stuck?
break
unless
build
.
stuck?
drop_build
:stuck
,
build
,
status
,
timeout
drop_build
:stuck
,
build
,
status
,
timeout
end
end
...
...
changelogs/unreleased/42889-avoid-return-inside-block.yml
0 → 100644
View file @
c6b1043e
---
title
:
Rubocop rule to avoid returning from a block
merge_request
:
18000
author
:
Jacopo Beschi @jacopo-beschi
type
:
added
lib/api/discussions.rb
View file @
c6b1043e
...
@@ -25,7 +25,7 @@ module API
...
@@ -25,7 +25,7 @@ module API
get
":id/
#{
noteables_str
}
/:noteable_id/discussions"
do
get
":id/
#{
noteables_str
}
/:noteable_id/discussions"
do
noteable
=
find_noteable
(
parent_type
,
noteables_str
,
params
[
:noteable_id
])
noteable
=
find_noteable
(
parent_type
,
noteables_str
,
params
[
:noteable_id
])
return
not_found!
(
"Discussions"
)
unless
can?
(
current_user
,
noteable_read_ability_name
(
noteable
),
noteable
)
break
not_found!
(
"Discussions"
)
unless
can?
(
current_user
,
noteable_read_ability_name
(
noteable
),
noteable
)
notes
=
noteable
.
notes
notes
=
noteable
.
notes
.
inc_relations_for_view
.
inc_relations_for_view
...
@@ -50,7 +50,7 @@ module API
...
@@ -50,7 +50,7 @@ module API
notes
=
readable_discussion_notes
(
noteable
,
params
[
:discussion_id
])
notes
=
readable_discussion_notes
(
noteable
,
params
[
:discussion_id
])
if
notes
.
empty?
||
!
can?
(
current_user
,
noteable_read_ability_name
(
noteable
),
noteable
)
if
notes
.
empty?
||
!
can?
(
current_user
,
noteable_read_ability_name
(
noteable
),
noteable
)
return
not_found!
(
"Discussion"
)
break
not_found!
(
"Discussion"
)
end
end
discussion
=
Discussion
.
build
(
notes
,
noteable
)
discussion
=
Discussion
.
build
(
notes
,
noteable
)
...
@@ -98,7 +98,7 @@ module API
...
@@ -98,7 +98,7 @@ module API
notes
=
readable_discussion_notes
(
noteable
,
params
[
:discussion_id
])
notes
=
readable_discussion_notes
(
noteable
,
params
[
:discussion_id
])
if
notes
.
empty?
||
!
can?
(
current_user
,
noteable_read_ability_name
(
noteable
),
noteable
)
if
notes
.
empty?
||
!
can?
(
current_user
,
noteable_read_ability_name
(
noteable
),
noteable
)
return
not_found!
(
"Notes"
)
break
not_found!
(
"Notes"
)
end
end
present
notes
,
with:
Entities
::
Note
present
notes
,
with:
Entities
::
Note
...
@@ -117,8 +117,8 @@ module API
...
@@ -117,8 +117,8 @@ module API
noteable
=
find_noteable
(
parent_type
,
noteables_str
,
params
[
:noteable_id
])
noteable
=
find_noteable
(
parent_type
,
noteables_str
,
params
[
:noteable_id
])
notes
=
readable_discussion_notes
(
noteable
,
params
[
:discussion_id
])
notes
=
readable_discussion_notes
(
noteable
,
params
[
:discussion_id
])
return
not_found!
(
"Discussion"
)
if
notes
.
empty?
break
not_found!
(
"Discussion"
)
if
notes
.
empty?
return
bad_request!
(
"Discussion is an individual note."
)
unless
notes
.
first
.
part_of_discussion?
break
bad_request!
(
"Discussion is an individual note."
)
unless
notes
.
first
.
part_of_discussion?
opts
=
{
opts
=
{
note:
params
[
:body
],
note:
params
[
:body
],
...
...
lib/api/group_variables.rb
View file @
c6b1043e
...
@@ -31,7 +31,7 @@ module API
...
@@ -31,7 +31,7 @@ module API
key
=
params
[
:key
]
key
=
params
[
:key
]
variable
=
user_group
.
variables
.
find_by
(
key:
key
)
variable
=
user_group
.
variables
.
find_by
(
key:
key
)
return
not_found!
(
'GroupVariable'
)
unless
variable
break
not_found!
(
'GroupVariable'
)
unless
variable
present
variable
,
with:
Entities
::
Variable
present
variable
,
with:
Entities
::
Variable
end
end
...
@@ -67,7 +67,7 @@ module API
...
@@ -67,7 +67,7 @@ module API
put
':id/variables/:key'
do
put
':id/variables/:key'
do
variable
=
user_group
.
variables
.
find_by
(
key:
params
[
:key
])
variable
=
user_group
.
variables
.
find_by
(
key:
params
[
:key
])
return
not_found!
(
'GroupVariable'
)
unless
variable
break
not_found!
(
'GroupVariable'
)
unless
variable
variable_params
=
declared_params
(
include_missing:
false
).
except
(
:key
)
variable_params
=
declared_params
(
include_missing:
false
).
except
(
:key
)
...
...
lib/api/internal.rb
View file @
c6b1043e
...
@@ -50,7 +50,7 @@ module API
...
@@ -50,7 +50,7 @@ module API
access_checker
.
check
(
params
[
:action
],
params
[
:changes
])
access_checker
.
check
(
params
[
:action
],
params
[
:changes
])
@project
||=
access_checker
.
project
@project
||=
access_checker
.
project
rescue
Gitlab
::
GitAccess
::
UnauthorizedError
,
Gitlab
::
GitAccess
::
NotFoundError
=>
e
rescue
Gitlab
::
GitAccess
::
UnauthorizedError
,
Gitlab
::
GitAccess
::
NotFoundError
=>
e
return
{
status:
false
,
message:
e
.
message
}
break
{
status:
false
,
message:
e
.
message
}
end
end
log_user_activity
(
actor
)
log_user_activity
(
actor
)
...
@@ -142,21 +142,21 @@ module API
...
@@ -142,21 +142,21 @@ module API
if
key
if
key
key
.
update_last_used_at
key
.
update_last_used_at
else
else
return
{
'success'
=>
false
,
'message'
=>
'Could not find the given key'
}
break
{
'success'
=>
false
,
'message'
=>
'Could not find the given key'
}
end
end
if
key
.
is_a?
(
DeployKey
)
if
key
.
is_a?
(
DeployKey
)
return
{
success:
false
,
message:
'Deploy keys cannot be used to retrieve recovery codes'
}
break
{
success:
false
,
message:
'Deploy keys cannot be used to retrieve recovery codes'
}
end
end
user
=
key
.
user
user
=
key
.
user
unless
user
unless
user
return
{
success:
false
,
message:
'Could not find a user for the given key'
}
break
{
success:
false
,
message:
'Could not find a user for the given key'
}
end
end
unless
user
.
two_factor_enabled?
unless
user
.
two_factor_enabled?
return
{
success:
false
,
message:
'Two-factor authentication is not enabled for this user'
}
break
{
success:
false
,
message:
'Two-factor authentication is not enabled for this user'
}
end
end
codes
=
nil
codes
=
nil
...
...
lib/api/issues.rb
View file @
c6b1043e
...
@@ -310,7 +310,7 @@ module API
...
@@ -310,7 +310,7 @@ module API
issue
=
find_project_issue
(
params
[
:issue_iid
])
issue
=
find_project_issue
(
params
[
:issue_iid
])
return
not_found!
(
'UserAgentDetail'
)
unless
issue
.
user_agent_detail
break
not_found!
(
'UserAgentDetail'
)
unless
issue
.
user_agent_detail
present
issue
.
user_agent_detail
,
with:
Entities
::
UserAgentDetail
present
issue
.
user_agent_detail
,
with:
Entities
::
UserAgentDetail
end
end
...
...
lib/api/job_artifacts.rb
View file @
c6b1043e
...
@@ -77,7 +77,7 @@ module API
...
@@ -77,7 +77,7 @@ module API
build
=
find_build!
(
params
[
:job_id
])
build
=
find_build!
(
params
[
:job_id
])
authorize!
(
:update_build
,
build
)
authorize!
(
:update_build
,
build
)
return
not_found!
(
build
)
unless
build
.
artifacts?
break
not_found!
(
build
)
unless
build
.
artifacts?
build
.
keep_artifacts!
build
.
keep_artifacts!
...
...
lib/api/jobs.rb
View file @
c6b1043e
...
@@ -120,7 +120,7 @@ module API
...
@@ -120,7 +120,7 @@ module API
build
=
find_build!
(
params
[
:job_id
])
build
=
find_build!
(
params
[
:job_id
])
authorize!
(
:update_build
,
build
)
authorize!
(
:update_build
,
build
)
return
forbidden!
(
'Job is not retryable'
)
unless
build
.
retryable?
break
forbidden!
(
'Job is not retryable'
)
unless
build
.
retryable?
build
=
Ci
::
Build
.
retry
(
build
,
current_user
)
build
=
Ci
::
Build
.
retry
(
build
,
current_user
)
...
@@ -138,7 +138,7 @@ module API
...
@@ -138,7 +138,7 @@ module API
build
=
find_build!
(
params
[
:job_id
])
build
=
find_build!
(
params
[
:job_id
])
authorize!
(
:erase_build
,
build
)
authorize!
(
:erase_build
,
build
)
return
forbidden!
(
'Job is not erasable!'
)
unless
build
.
erasable?
break
forbidden!
(
'Job is not erasable!'
)
unless
build
.
erasable?
build
.
erase
(
erased_by:
current_user
)
build
.
erase
(
erased_by:
current_user
)
present
build
,
with:
Entities
::
Job
present
build
,
with:
Entities
::
Job
...
...
lib/api/project_snippets.rb
View file @
c6b1043e
...
@@ -145,7 +145,7 @@ module API
...
@@ -145,7 +145,7 @@ module API
snippet
=
Snippet
.
find_by!
(
id:
params
[
:snippet_id
],
project_id:
params
[
:id
])
snippet
=
Snippet
.
find_by!
(
id:
params
[
:snippet_id
],
project_id:
params
[
:id
])
return
not_found!
(
'UserAgentDetail'
)
unless
snippet
.
user_agent_detail
break
not_found!
(
'UserAgentDetail'
)
unless
snippet
.
user_agent_detail
present
snippet
.
user_agent_detail
,
with:
Entities
::
UserAgentDetail
present
snippet
.
user_agent_detail
,
with:
Entities
::
UserAgentDetail
end
end
...
...
lib/api/projects.rb
View file @
c6b1043e
...
@@ -402,7 +402,7 @@ module API
...
@@ -402,7 +402,7 @@ module API
end
end
unless
user_project
.
allowed_to_share_with_group?
unless
user_project
.
allowed_to_share_with_group?
return
render_api_error!
(
"The project sharing with group is disabled"
,
400
)
break
render_api_error!
(
"The project sharing with group is disabled"
,
400
)
end
end
link
=
user_project
.
project_group_links
.
new
(
declared_params
(
include_missing:
false
))
link
=
user_project
.
project_group_links
.
new
(
declared_params
(
include_missing:
false
))
...
...
lib/api/runner.rb
View file @
c6b1043e
...
@@ -29,7 +29,7 @@ module API
...
@@ -29,7 +29,7 @@ module API
project
.
runners
.
create
(
attributes
)
project
.
runners
.
create
(
attributes
)
end
end
return
forbidden!
unless
runner
break
forbidden!
unless
runner
if
runner
.
id
if
runner
.
id
present
runner
,
with:
Entities
::
RunnerRegistrationDetails
present
runner
,
with:
Entities
::
RunnerRegistrationDetails
...
@@ -83,7 +83,7 @@ module API
...
@@ -83,7 +83,7 @@ module API
if
current_runner
.
runner_queue_value_latest?
(
params
[
:last_update
])
if
current_runner
.
runner_queue_value_latest?
(
params
[
:last_update
])
header
'X-GitLab-Last-Update'
,
params
[
:last_update
]
header
'X-GitLab-Last-Update'
,
params
[
:last_update
]
Gitlab
::
Metrics
.
add_event
(
:build_not_found_cached
)
Gitlab
::
Metrics
.
add_event
(
:build_not_found_cached
)
return
no_content!
break
no_content!
end
end
new_update
=
current_runner
.
ensure_runner_queue_value
new_update
=
current_runner
.
ensure_runner_queue_value
...
@@ -152,7 +152,7 @@ module API
...
@@ -152,7 +152,7 @@ module API
stream_size
=
job
.
trace
.
append
(
request
.
body
.
read
,
content_range
[
0
].
to_i
)
stream_size
=
job
.
trace
.
append
(
request
.
body
.
read
,
content_range
[
0
].
to_i
)
if
stream_size
<
0
if
stream_size
<
0
return
error!
(
'416 Range Not Satisfiable'
,
416
,
{
'Range'
=>
"0-
#{
-
stream_size
}
"
})
break
error!
(
'416 Range Not Satisfiable'
,
416
,
{
'Range'
=>
"0-
#{
-
stream_size
}
"
})
end
end
status
202
status
202
...
...
lib/api/snippets.rb
View file @
c6b1043e
...
@@ -94,7 +94,7 @@ module API
...
@@ -94,7 +94,7 @@ module API
end
end
put
':id'
do
put
':id'
do
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
return
not_found!
(
'Snippet'
)
unless
snippet
break
not_found!
(
'Snippet'
)
unless
snippet
authorize!
:update_personal_snippet
,
snippet
authorize!
:update_personal_snippet
,
snippet
...
@@ -120,7 +120,7 @@ module API
...
@@ -120,7 +120,7 @@ module API
end
end
delete
':id'
do
delete
':id'
do
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
return
not_found!
(
'Snippet'
)
unless
snippet
break
not_found!
(
'Snippet'
)
unless
snippet
authorize!
:destroy_personal_snippet
,
snippet
authorize!
:destroy_personal_snippet
,
snippet
...
@@ -135,7 +135,7 @@ module API
...
@@ -135,7 +135,7 @@ module API
end
end
get
":id/raw"
do
get
":id/raw"
do
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
return
not_found!
(
'Snippet'
)
unless
snippet
break
not_found!
(
'Snippet'
)
unless
snippet
env
[
'api.format'
]
=
:txt
env
[
'api.format'
]
=
:txt
content_type
'text/plain'
content_type
'text/plain'
...
@@ -153,7 +153,7 @@ module API
...
@@ -153,7 +153,7 @@ module API
snippet
=
Snippet
.
find_by!
(
id:
params
[
:id
])
snippet
=
Snippet
.
find_by!
(
id:
params
[
:id
])
return
not_found!
(
'UserAgentDetail'
)
unless
snippet
.
user_agent_detail
break
not_found!
(
'UserAgentDetail'
)
unless
snippet
.
user_agent_detail
present
snippet
.
user_agent_detail
,
with:
Entities
::
UserAgentDetail
present
snippet
.
user_agent_detail
,
with:
Entities
::
UserAgentDetail
end
end
...
...
lib/api/triggers.rb
View file @
c6b1043e
...
@@ -62,7 +62,7 @@ module API
...
@@ -62,7 +62,7 @@ module API
authorize!
:admin_build
,
user_project
authorize!
:admin_build
,
user_project
trigger
=
user_project
.
triggers
.
find
(
params
.
delete
(
:trigger_id
))
trigger
=
user_project
.
triggers
.
find
(
params
.
delete
(
:trigger_id
))
return
not_found!
(
'Trigger'
)
unless
trigger
break
not_found!
(
'Trigger'
)
unless
trigger
present
trigger
,
with:
Entities
::
Trigger
present
trigger
,
with:
Entities
::
Trigger
end
end
...
@@ -99,7 +99,7 @@ module API
...
@@ -99,7 +99,7 @@ module API
authorize!
:admin_build
,
user_project
authorize!
:admin_build
,
user_project
trigger
=
user_project
.
triggers
.
find
(
params
.
delete
(
:trigger_id
))
trigger
=
user_project
.
triggers
.
find
(
params
.
delete
(
:trigger_id
))
return
not_found!
(
'Trigger'
)
unless
trigger
break
not_found!
(
'Trigger'
)
unless
trigger
if
trigger
.
update
(
declared_params
(
include_missing:
false
))
if
trigger
.
update
(
declared_params
(
include_missing:
false
))
present
trigger
,
with:
Entities
::
Trigger
present
trigger
,
with:
Entities
::
Trigger
...
@@ -119,7 +119,7 @@ module API
...
@@ -119,7 +119,7 @@ module API
authorize!
:admin_build
,
user_project
authorize!
:admin_build
,
user_project
trigger
=
user_project
.
triggers
.
find
(
params
.
delete
(
:trigger_id
))
trigger
=
user_project
.
triggers
.
find
(
params
.
delete
(
:trigger_id
))
return
not_found!
(
'Trigger'
)
unless
trigger
break
not_found!
(
'Trigger'
)
unless
trigger
if
trigger
.
update
(
owner:
current_user
)
if
trigger
.
update
(
owner:
current_user
)
status
:ok
status
:ok
...
@@ -140,7 +140,7 @@ module API
...
@@ -140,7 +140,7 @@ module API
authorize!
:admin_build
,
user_project
authorize!
:admin_build
,
user_project
trigger
=
user_project
.
triggers
.
find
(
params
.
delete
(
:trigger_id
))
trigger
=
user_project
.
triggers
.
find
(
params
.
delete
(
:trigger_id
))
return
not_found!
(
'Trigger'
)
unless
trigger
break
not_found!
(
'Trigger'
)
unless
trigger
destroy_conditionally!
(
trigger
)
destroy_conditionally!
(
trigger
)
end
end
...
...
lib/api/v3/builds.rb
View file @
c6b1043e
...
@@ -51,7 +51,7 @@ module API
...
@@ -51,7 +51,7 @@ module API
get
':id/repository/commits/:sha/builds'
do
get
':id/repository/commits/:sha/builds'
do
authorize_read_builds!
authorize_read_builds!
return
not_found!
unless
user_project
.
commit
(
params
[
:sha
])
break
not_found!
unless
user_project
.
commit
(
params
[
:sha
])
pipelines
=
user_project
.
pipelines
.
where
(
sha:
params
[
:sha
])
pipelines
=
user_project
.
pipelines
.
where
(
sha:
params
[
:sha
])
builds
=
user_project
.
builds
.
where
(
pipeline:
pipelines
).
order
(
'id DESC'
)
builds
=
user_project
.
builds
.
where
(
pipeline:
pipelines
).
order
(
'id DESC'
)
...
@@ -153,7 +153,7 @@ module API
...
@@ -153,7 +153,7 @@ module API
build
=
get_build!
(
params
[
:build_id
])
build
=
get_build!
(
params
[
:build_id
])
authorize!
(
:update_build
,
build
)
authorize!
(
:update_build
,
build
)
return
forbidden!
(
'Build is not retryable'
)
unless
build
.
retryable?
break
forbidden!
(
'Build is not retryable'
)
unless
build
.
retryable?
build
=
Ci
::
Build
.
retry
(
build
,
current_user
)
build
=
Ci
::
Build
.
retry
(
build
,
current_user
)
...
@@ -171,7 +171,7 @@ module API
...
@@ -171,7 +171,7 @@ module API
build
=
get_build!
(
params
[
:build_id
])
build
=
get_build!
(
params
[
:build_id
])
authorize!
(
:erase_build
,
build
)
authorize!
(
:erase_build
,
build
)
return
forbidden!
(
'Build is not erasable!'
)
unless
build
.
erasable?
break
forbidden!
(
'Build is not erasable!'
)
unless
build
.
erasable?
build
.
erase
(
erased_by:
current_user
)
build
.
erase
(
erased_by:
current_user
)
present
build
,
with:
::
API
::
V3
::
Entities
::
Build
present
build
,
with:
::
API
::
V3
::
Entities
::
Build
...
@@ -188,7 +188,7 @@ module API
...
@@ -188,7 +188,7 @@ module API
build
=
get_build!
(
params
[
:build_id
])
build
=
get_build!
(
params
[
:build_id
])
authorize!
(
:update_build
,
build
)
authorize!
(
:update_build
,
build
)
return
not_found!
(
build
)
unless
build
.
artifacts?
break
not_found!
(
build
)
unless
build
.
artifacts?
build
.
keep_artifacts!
build
.
keep_artifacts!
...
...
lib/api/v3/projects.rb
View file @
c6b1043e
...
@@ -423,7 +423,7 @@ module API
...
@@ -423,7 +423,7 @@ module API
end
end
unless
user_project
.
allowed_to_share_with_group?
unless
user_project
.
allowed_to_share_with_group?
return
render_api_error!
(
"The project sharing with group is disabled"
,
400
)
break
render_api_error!
(
"The project sharing with group is disabled"
,
400
)
end
end
link
=
user_project
.
project_group_links
.
new
(
declared_params
(
include_missing:
false
))
link
=
user_project
.
project_group_links
.
new
(
declared_params
(
include_missing:
false
))
...
...
lib/api/v3/snippets.rb
View file @
c6b1043e
...
@@ -90,7 +90,7 @@ module API
...
@@ -90,7 +90,7 @@ module API
end
end
put
':id'
do
put
':id'
do
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
return
not_found!
(
'Snippet'
)
unless
snippet
break
not_found!
(
'Snippet'
)
unless
snippet
authorize!
:update_personal_snippet
,
snippet
authorize!
:update_personal_snippet
,
snippet
...
@@ -114,7 +114,7 @@ module API
...
@@ -114,7 +114,7 @@ module API
end
end
delete
':id'
do
delete
':id'
do
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
return
not_found!
(
'Snippet'
)
unless
snippet
break
not_found!
(
'Snippet'
)
unless
snippet
authorize!
:destroy_personal_snippet
,
snippet
authorize!
:destroy_personal_snippet
,
snippet
snippet
.
destroy
snippet
.
destroy
...
@@ -129,7 +129,7 @@ module API
...
@@ -129,7 +129,7 @@ module API
end
end
get
":id/raw"
do
get
":id/raw"
do
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
snippet
=
snippets_for_current_user
.
find_by
(
id:
params
.
delete
(
:id
))
return
not_found!
(
'Snippet'
)
unless
snippet
break
not_found!
(
'Snippet'
)
unless
snippet
env
[
'api.format'
]
=
:txt
env
[
'api.format'
]
=
:txt
content_type
'text/plain'
content_type
'text/plain'
...
...
lib/api/v3/triggers.rb
View file @
c6b1043e
...
@@ -72,7 +72,7 @@ module API
...
@@ -72,7 +72,7 @@ module API
authorize!
:admin_build
,
user_project
authorize!
:admin_build
,
user_project
trigger
=
user_project
.
triggers
.
find_by
(
token:
params
[
:token
].
to_s
)
trigger
=
user_project
.
triggers
.
find_by
(
token:
params
[
:token
].
to_s
)
return
not_found!
(
'Trigger'
)
unless
trigger
break
not_found!
(
'Trigger'
)
unless
trigger
present
trigger
,
with:
::
API
::
V3
::
Entities
::
Trigger
present
trigger
,
with:
::
API
::
V3
::
Entities
::
Trigger
end
end
...
@@ -100,7 +100,7 @@ module API
...
@@ -100,7 +100,7 @@ module API
authorize!
:admin_build
,
user_project
authorize!
:admin_build
,
user_project
trigger
=
user_project
.
triggers
.
find_by
(
token:
params
[
:token
].
to_s
)
trigger
=
user_project
.
triggers
.
find_by
(
token:
params
[
:token
].
to_s
)
return
not_found!
(
'Trigger'
)
unless
trigger
break
not_found!
(
'Trigger'
)
unless
trigger
trigger
.
destroy
trigger
.
destroy
...
...
lib/api/variables.rb
View file @
c6b1043e
...
@@ -31,7 +31,7 @@ module API
...
@@ -31,7 +31,7 @@ module API
key
=
params
[
:key
]
key
=
params
[
:key
]
variable
=
user_project
.
variables
.
find_by
(
key:
key
)
variable
=
user_project
.
variables
.
find_by
(
key:
key
)
return
not_found!
(
'Variable'
)
unless
variable
break
not_found!
(
'Variable'
)
unless
variable
present
variable
,
with:
Entities
::
Variable
present
variable
,
with:
Entities
::
Variable
end
end
...
@@ -67,7 +67,7 @@ module API
...
@@ -67,7 +67,7 @@ module API
put
':id/variables/:key'
do
put
':id/variables/:key'
do
variable
=
user_project
.
variables
.
find_by
(
key:
params
[
:key
])
variable
=
user_project
.
variables
.
find_by
(
key:
params
[
:key
])
return
not_found!
(
'Variable'
)
unless
variable
break
not_found!
(
'Variable'
)
unless
variable
variable_params
=
declared_params
(
include_missing:
false
).
except
(
:key
)
variable_params
=
declared_params
(
include_missing:
false
).
except
(
:key
)
...
...
lib/declarative_policy/runner.rb
View file @
c6b1043e
...
@@ -77,7 +77,7 @@ module DeclarativePolicy
...
@@ -77,7 +77,7 @@ module DeclarativePolicy
@state
=
State
.
new
@state
=
State
.
new
steps_by_score
do
|
step
,
score
|
steps_by_score
do
|
step
,
score
|
return
if
!
debug
&&
@state
.
prevented?
break
if
!
debug
&&
@state
.
prevented?
passed
=
nil
passed
=
nil
case
step
.
action
case
step
.
action
...
...
lib/gitlab/auth.rb
View file @
c6b1043e
...
@@ -51,7 +51,7 @@ module Gitlab
...
@@ -51,7 +51,7 @@ module Gitlab
Gitlab
::
Auth
::
UniqueIpsLimiter
.
limit_user!
do
Gitlab
::
Auth
::
UniqueIpsLimiter
.
limit_user!
do
user
=
User
.
by_login
(
login
)
user
=
User
.
by_login
(
login
)
return
if
user
&&
!
user
.
active?
break
if
user
&&
!
user
.
active?
authenticators
=
[]
authenticators
=
[]
...
...
lib/gitlab/ci/trace.rb
View file @
c6b1043e
...
@@ -45,7 +45,7 @@ module Gitlab
...
@@ -45,7 +45,7 @@ module Gitlab
def
append
(
data
,
offset
)
def
append
(
data
,
offset
)
write
do
|
stream
|
write
do
|
stream
|
current_length
=
stream
.
size
current_length
=
stream
.
size
return
-
current_length
unless
current_length
==
offset
break
-
current_length
unless
current_length
==
offset
data
=
job
.
hide_secrets
(
data
)
data
=
job
.
hide_secrets
(
data
)
stream
.
append
(
data
,
offset
)
stream
.
append
(
data
,
offset
)
...
...
lib/gitlab/ci/trace/stream.rb
View file @
c6b1043e
...
@@ -87,7 +87,7 @@ module Gitlab
...
@@ -87,7 +87,7 @@ module Gitlab
match
=
matches
.
flatten
.
last
match
=
matches
.
flatten
.
last
coverage
=
match
.
gsub
(
/\d+(\.\d+)?/
).
first
coverage
=
match
.
gsub
(
/\d+(\.\d+)?/
).
first
return
coverage
if
coverage
.
present?
return
coverage
if
coverage
.
present?
# rubocop:disable Cop/AvoidReturnFromBlocks
end
end
nil
nil
...
...
lib/gitlab/daemon.rb
View file @
c6b1043e
...
@@ -30,7 +30,7 @@ module Gitlab
...
@@ -30,7 +30,7 @@ module Gitlab
return
unless
enabled?
return
unless
enabled?
@mutex
.
synchronize
do
@mutex
.
synchronize
do
return
thread
if
thread?
break
thread
if
thread?
@thread
=
Thread
.
new
{
start_working
}
@thread
=
Thread
.
new
{
start_working
}
end
end
...
@@ -38,7 +38,7 @@ module Gitlab
...
@@ -38,7 +38,7 @@ module Gitlab
def
stop
def
stop
@mutex
.
synchronize
do
@mutex
.
synchronize
do
return
unless
thread?
break
unless
thread?
stop_working
stop_working
...
...
lib/gitlab/gfm/uploads_rewriter.rb
View file @
c6b1043e
...
@@ -21,7 +21,7 @@ module Gitlab
...
@@ -21,7 +21,7 @@ module Gitlab
@text
.
gsub
(
@pattern
)
do
|
markdown
|
@text
.
gsub
(
@pattern
)
do
|
markdown
|
file
=
find_file
(
@source_project
,
$~
[
:secret
],
$~
[
:file
])
file
=
find_file
(
@source_project
,
$~
[
:secret
],
$~
[
:file
])
return
markdown
unless
file
.
try
(
:exists?
)
break
markdown
unless
file
.
try
(
:exists?
)
new_uploader
=
FileUploader
.
new
(
target_project
)
new_uploader
=
FileUploader
.
new
(
target_project
)
with_link_in_tmp_dir
(
file
.
file
)
do
|
open_tmp_file
|
with_link_in_tmp_dir
(
file
.
file
)
do
|
open_tmp_file
|
...
...
lib/gitlab/git/diff.rb
View file @
c6b1043e
...
@@ -249,7 +249,7 @@ module Gitlab
...
@@ -249,7 +249,7 @@ module Gitlab
if
size
>=
SIZE_LIMIT
if
size
>=
SIZE_LIMIT
too_large!
too_large!
return
true
return
true
# rubocop:disable Cop/AvoidReturnFromBlocks
end
end
end
end
end
end
...
...
lib/gitlab/git/popen.rb
View file @
c6b1043e
...
@@ -25,7 +25,9 @@ module Gitlab
...
@@ -25,7 +25,9 @@ module Gitlab
stdin
.
close
stdin
.
close
if
lazy_block
if
lazy_block
return
[
lazy_block
.
call
(
stdout
.
lazy
),
0
]
cmd_output
=
lazy_block
.
call
(
stdout
.
lazy
)
cmd_status
=
0
break
else
else
cmd_output
<<
stdout
.
read
cmd_output
<<
stdout
.
read
end
end
...
...
lib/gitlab/git/repository_mirroring.rb
View file @
c6b1043e
...
@@ -26,7 +26,7 @@ module Gitlab
...
@@ -26,7 +26,7 @@ module Gitlab
# When the remote repo does not have tags.
# When the remote repo does not have tags.
if
target
.
nil?
||
path
.
nil?
if
target
.
nil?
||
path
.
nil?
Rails
.
logger
.
info
"Empty or invalid list of tags for remote:
#{
remote
}
. Output:
#{
output
}
"
Rails
.
logger
.
info
"Empty or invalid list of tags for remote:
#{
remote
}
. Output:
#{
output
}
"
return
[]
break
[]
end
end
name
=
path
.
split
(
'/'
,
3
).
last
name
=
path
.
split
(
'/'
,
3
).
last
...
...
lib/gitlab/optimistic_locking.rb
View file @
c6b1043e
...
@@ -3,18 +3,15 @@ module Gitlab
...
@@ -3,18 +3,15 @@ module Gitlab
module_function
module_function
def
retry_lock
(
subject
,
retries
=
100
,
&
block
)
def
retry_lock
(
subject
,
retries
=
100
,
&
block
)
loop
do
ActiveRecord
::
Base
.
transaction
do
begin
yield
(
subject
)
ActiveRecord
::
Base
.
transaction
do
return
yield
(
subject
)
end
rescue
ActiveRecord
::
StaleObjectError
retries
-=
1
raise
unless
retries
>=
0
subject
.
reload
end
end
end
rescue
ActiveRecord
::
StaleObjectError
retries
-=
1
raise
unless
retries
>=
0
subject
.
reload
retry
end
end
alias_method
:retry_optimistic_lock
,
:retry_lock
alias_method
:retry_optimistic_lock
,
:retry_lock
...
...
lib/gitlab/shell.rb
View file @
c6b1043e
...
@@ -340,7 +340,7 @@ module Gitlab
...
@@ -340,7 +340,7 @@ module Gitlab
if
enabled
if
enabled
gitaly_namespace_client
(
storage
).
rename
(
old_name
,
new_name
)
gitaly_namespace_client
(
storage
).
rename
(
old_name
,
new_name
)
else
else
return
false
if
exists?
(
storage
,
new_name
)
||
!
exists?
(
storage
,
old_name
)
break
false
if
exists?
(
storage
,
new_name
)
||
!
exists?
(
storage
,
old_name
)
FileUtils
.
mv
(
full_path
(
storage
,
old_name
),
full_path
(
storage
,
new_name
))
FileUtils
.
mv
(
full_path
(
storage
,
old_name
),
full_path
(
storage
,
new_name
))
end
end
...
...
lib/gitlab/sidekiq_middleware/shutdown.rb
View file @
c6b1043e
...
@@ -25,7 +25,7 @@ module Gitlab
...
@@ -25,7 +25,7 @@ module Gitlab
# can be only one shutdown thread in the process.
# can be only one shutdown thread in the process.
def
self
.
create_shutdown_thread
def
self
.
create_shutdown_thread
mu_synchronize
do
mu_synchronize
do
return
unless
@shutdown_thread
.
nil?
break
unless
@shutdown_thread
.
nil?
@shutdown_thread
=
Thread
.
new
{
yield
}
@shutdown_thread
=
Thread
.
new
{
yield
}
end
end
...
...
lib/tasks/gitlab/storage.rake
View file @
c6b1043e
...
@@ -111,7 +111,7 @@ namespace :gitlab do
...
@@ -111,7 +111,7 @@ namespace :gitlab do
puts
" -
#{
project
.
full_path
}
(id:
#{
project
.
id
}
)"
.
color
(
:red
)
puts
" -
#{
project
.
full_path
}
(id:
#{
project
.
id
}
)"
.
color
(
:red
)
return
if
counter
>=
limit
# rubocop:disable Lint/NonLocalExitFromIterator
return
if
counter
>=
limit
# rubocop:disable Lint/NonLocalExitFromIterator
, Cop/AvoidReturnFromBlocks
end
end
end
end
end
end
...
@@ -132,7 +132,7 @@ namespace :gitlab do
...
@@ -132,7 +132,7 @@ namespace :gitlab do
puts
" -
#{
upload
.
path
}
(id:
#{
upload
.
id
}
)"
.
color
(
:red
)
puts
" -
#{
upload
.
path
}
(id:
#{
upload
.
id
}
)"
.
color
(
:red
)
return
if
counter
>=
limit
# rubocop:disable Lint/NonLocalExitFromIterator
return
if
counter
>=
limit
# rubocop:disable Lint/NonLocalExitFromIterator
, Cop/AvoidReturnFromBlocks
end
end
end
end
end
end
...
...
qa/qa/factory/base.rb
View file @
c6b1043e
...
@@ -22,7 +22,7 @@ module QA
...
@@ -22,7 +22,7 @@ module QA
factory
.
fabricate!
(
*
args
)
factory
.
fabricate!
(
*
args
)
return
Factory
::
Product
.
populate!
(
factory
)
break
Factory
::
Product
.
populate!
(
factory
)
end
end
end
end
...
...
qa/qa/page/group/show.rb
View file @
c6b1043e
...
@@ -29,7 +29,7 @@ module QA
...
@@ -29,7 +29,7 @@ module QA
filter_by_name
(
name
)
filter_by_name
(
name
)
wait
(
reload:
false
)
do
wait
(
reload:
false
)
do
return
false
if
page
.
has_content?
(
'Sorry, no groups or projects matched your search'
)
break
false
if
page
.
has_content?
(
'Sorry, no groups or projects matched your search'
)
page
.
has_link?
(
name
)
page
.
has_link?
(
name
)
end
end
...
...
qa/qa/page/project/pipeline/show.rb
View file @
c6b1043e
...
@@ -20,14 +20,14 @@ module QA::Page
...
@@ -20,14 +20,14 @@ module QA::Page
def
running?
def
running?
within
(
'.ci-header-container'
)
do
within
(
'.ci-header-container'
)
do
return
page
.
has_content?
(
'running'
)
page
.
has_content?
(
'running'
)
end
end
end
end
def
has_build?
(
name
,
status: :success
)
def
has_build?
(
name
,
status: :success
)
within
(
'.pipeline-graph'
)
do
within
(
'.pipeline-graph'
)
do
within
(
'.ci-job-component'
,
text:
name
)
do
within
(
'.ci-job-component'
,
text:
name
)
do
return
has_selector?
(
".ci-status-icon-
#{
status
}
"
)
has_selector?
(
".ci-status-icon-
#{
status
}
"
)
end
end
end
end
end
end
...
...
qa/qa/scenario/template.rb
View file @
c6b1043e
...
@@ -4,7 +4,7 @@ module QA
...
@@ -4,7 +4,7 @@ module QA
def
self
.
perform
(
*
args
)
def
self
.
perform
(
*
args
)
new
.
tap
do
|
scenario
|
new
.
tap
do
|
scenario
|
yield
scenario
if
block_given?
yield
scenario
if
block_given?
return
scenario
.
perform
(
*
args
)
break
scenario
.
perform
(
*
args
)
end
end
end
end
...
...
rubocop/cop/avoid_break_from_strong_memoize.rb
0 → 100644
View file @
c6b1043e
# frozen_string_literal: true
module
RuboCop
module
Cop
# Checks for break inside strong_memoize blocks.
# For more information see: https://gitlab.com/gitlab-org/gitlab-ce/issues/42889
#
# @example
# # bad
# strong_memoize(:result) do
# break if something
#
# do_an_heavy_calculation
# end
#
# # good
# strong_memoize(:result) do
# next if something
#
# do_an_heavy_calculation
# end
#
class
AvoidBreakFromStrongMemoize
<
RuboCop
::
Cop
::
Cop
MSG
=
'Do not use break inside strong_memoize, use next instead.'
def
on_block
(
node
)
block_body
=
node
.
body
return
unless
block_body
return
unless
node
.
method_name
==
:strong_memoize
block_body
.
each_node
(
:break
)
do
|
break_node
|
next
if
container_block_for
(
break_node
)
!=
node
add_offense
(
break_node
)
end
end
private
def
container_block_for
(
current_node
)
current_node
=
current_node
.
parent
until
current_node
.
type
==
:block
&&
current_node
.
method_name
==
:strong_memoize
current_node
end
end
end
end
rubocop/cop/avoid_return_from_blocks.rb
0 → 100644
View file @
c6b1043e
# frozen_string_literal: true
module
RuboCop
module
Cop
# Checks for return inside blocks.
# For more information see: https://gitlab.com/gitlab-org/gitlab-ce/issues/42889
#
# @example
# # bad
# call do
# return if something
#
# do_something_else
# end
#
# # good
# call do
# break if something
#
# do_something_else
# end
#
class
AvoidReturnFromBlocks
<
RuboCop
::
Cop
::
Cop
MSG
=
'Do not return from a block, use next or break instead.'
DEF_METHODS
=
%i[define_method lambda]
.
freeze
WHITELISTED_METHODS
=
%i[each each_filename times loop]
.
freeze
def
on_block
(
node
)
block_body
=
node
.
body
return
unless
block_body
return
unless
top_block?
(
node
)
block_body
.
each_node
(
:return
)
do
|
return_node
|
next
if
parent_blocks
(
node
,
return_node
).
all?
(
&
method
(
:whitelisted?
))
add_offense
(
return_node
)
end
end
private
def
top_block?
(
node
)
current_node
=
node
top_block
=
nil
while
current_node
&&
current_node
.
type
!=
:def
top_block
=
current_node
if
current_node
.
type
==
:block
current_node
=
current_node
.
parent
end
top_block
==
node
end
def
parent_blocks
(
node
,
current_node
)
blocks
=
[]
until
node
==
current_node
||
def
?(
current_node
)
blocks
<<
current_node
if
current_node
.
type
==
:
block
current_node
=
current_node
.
parent
end
blocks
<<
node
if
node
==
current_node
&&
!
def
?(
node
)
blocks
end
def
def?
(
node
)
node
.
type
==
:def
||
node
.
type
==
:
defs
||
(
node
.
type
==
:block
&&
DEF_METHODS
.
include?
(
node
.
method_name
))
end
def
whitelisted?
(
block_node
)
WHITELISTED_METHODS
.
include?
(
block_node
.
method_name
)
end
end
end
end
rubocop/cop/migration/safer_boolean_column.rb
View file @
c6b1043e
...
@@ -61,7 +61,7 @@ module RuboCop
...
@@ -61,7 +61,7 @@ module RuboCop
return
true
unless
opts
return
true
unless
opts
each_hash_node_pair
(
opts
)
do
|
key
,
value
|
each_hash_node_pair
(
opts
)
do
|
key
,
value
|
return
value
==
'nil'
if
key
==
:default
break
value
==
'nil'
if
key
==
:default
end
end
end
end
...
@@ -69,7 +69,7 @@ module RuboCop
...
@@ -69,7 +69,7 @@ module RuboCop
return
true
unless
opts
return
true
unless
opts
each_hash_node_pair
(
opts
)
do
|
key
,
value
|
each_hash_node_pair
(
opts
)
do
|
key
,
value
|
return
value
!=
'false'
if
key
==
:null
break
value
!=
'false'
if
key
==
:null
end
end
end
end
...
...
rubocop/rubocop.rb
View file @
c6b1043e
...
@@ -4,6 +4,8 @@ require_relative 'cop/gitlab/httparty'
...
@@ -4,6 +4,8 @@ require_relative 'cop/gitlab/httparty'
require_relative
'cop/gitlab/module_with_instance_variables'
require_relative
'cop/gitlab/module_with_instance_variables'
require_relative
'cop/gitlab/predicate_memoization'
require_relative
'cop/gitlab/predicate_memoization'
require_relative
'cop/include_sidekiq_worker'
require_relative
'cop/include_sidekiq_worker'
require_relative
'cop/avoid_return_from_blocks'
require_relative
'cop/avoid_break_from_strong_memoize'
require_relative
'cop/line_break_around_conditional_block'
require_relative
'cop/line_break_around_conditional_block'
require_relative
'cop/migration/add_column'
require_relative
'cop/migration/add_column'
require_relative
'cop/migration/add_concurrent_foreign_key'
require_relative
'cop/migration/add_concurrent_foreign_key'
...
...
spec/lib/gitlab/ci/trace_spec.rb
View file @
c6b1043e
...
@@ -458,7 +458,7 @@ describe Gitlab::Ci::Trace do
...
@@ -458,7 +458,7 @@ describe Gitlab::Ci::Trace do
context
'when job does not have trace artifact'
do
context
'when job does not have trace artifact'
do
context
'when trace file stored in default path'
do
context
'when trace file stored in default path'
do
let!
(
:build
)
{
create
(
:ci_build
,
:success
,
:trace_live
)
}
let!
(
:build
)
{
create
(
:ci_build
,
:success
,
:trace_live
)
}
let!
(
:src_path
)
{
trace
.
read
{
|
s
|
return
s
.
path
}
}
let!
(
:src_path
)
{
trace
.
read
{
|
s
|
s
.
path
}
}
let!
(
:src_checksum
)
{
Digest
::
SHA256
.
file
(
src_path
).
hexdigest
}
let!
(
:src_checksum
)
{
Digest
::
SHA256
.
file
(
src_path
).
hexdigest
}
it_behaves_like
'archive trace file'
it_behaves_like
'archive trace file'
...
...
spec/lib/gitlab/shell_spec.rb
View file @
c6b1043e
...
@@ -727,7 +727,7 @@ describe Gitlab::Shell do
...
@@ -727,7 +727,7 @@ describe Gitlab::Shell do
def
find_in_authorized_keys_file
(
key_id
)
def
find_in_authorized_keys_file
(
key_id
)
gitlab_shell
.
batch_read_key_ids
do
|
ids
|
gitlab_shell
.
batch_read_key_ids
do
|
ids
|
return
true
if
ids
.
include?
(
key_id
)
return
true
if
ids
.
include?
(
key_id
)
# rubocop:disable Cop/AvoidReturnFromBlocks
end
end
false
false
...
...
spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb
0 → 100644
View file @
c6b1043e
require
'spec_helper'
require
'rubocop'
require
'rubocop/rspec/support'
require_relative
'../../../rubocop/cop/avoid_break_from_strong_memoize'
describe
RuboCop
::
Cop
::
AvoidBreakFromStrongMemoize
do
include
CopHelper
subject
(
:cop
)
{
described_class
.
new
}
it
'flags violation for break inside strong_memoize'
do
expect_offense
(
<<~
RUBY
)
strong_memoize(:result) do
break if something
^^^^^ Do not use break inside strong_memoize, use next instead.
do_an_heavy_calculation
end
RUBY
end
it
'flags violation for break inside strong_memoize nested blocks'
do
expect_offense
(
<<~
RUBY
)
strong_memoize do
items.each do |item|
break item
^^^^^^^^^^ Do not use break inside strong_memoize, use next instead.
end
end
RUBY
end
it
"doesn't flag violation for next inside strong_memoize"
do
expect_no_offenses
(
<<~
RUBY
)
strong_memoize(:result) do
next if something
do_an_heavy_calculation
end
RUBY
end
it
"doesn't flag violation for break inside blocks"
do
expect_no_offenses
(
<<~
RUBY
)
call do
break if something
do_an_heavy_calculation
end
RUBY
end
it
"doesn't call add_offense twice for nested blocks"
do
source
=
<<~
RUBY
call do
strong_memoize(:result) do
break if something
do_an_heavy_calculation
end
end
RUBY
expect_any_instance_of
(
described_class
).
to
receive
(
:add_offense
).
once
inspect_source
(
source
)
end
it
"doesn't check when block is empty"
do
expect_no_offenses
(
<<~
RUBY
)
strong_memoize(:result) do
end
RUBY
end
end
spec/rubocop/cop/avoid_return_from_blocks_spec.rb
0 → 100644
View file @
c6b1043e
require
'spec_helper'
require
'rubocop'
require
'rubocop/rspec/support'
require_relative
'../../../rubocop/cop/avoid_return_from_blocks'
describe
RuboCop
::
Cop
::
AvoidReturnFromBlocks
do
include
CopHelper
subject
(
:cop
)
{
described_class
.
new
}
it
'flags violation for return inside a block'
do
expect_offense
(
<<~
RUBY
)
call do
do_something
return if something_else
^^^^^^ Do not return from a block, use next or break instead.
end
RUBY
end
it
"doesn't call add_offense twice for nested blocks"
do
source
=
<<~
RUBY
call do
call do
something
return if something_else
end
end
RUBY
expect_any_instance_of
(
described_class
).
to
receive
(
:add_offense
).
once
inspect_source
(
source
)
end
it
'flags violation for return inside included > def > block'
do
expect_offense
(
<<~
RUBY
)
included do
def a_method
return if something
call do
return if something_else
^^^^^^ Do not return from a block, use next or break instead.
end
end
end
RUBY
end
shared_examples
'examples with whitelisted method'
do
|
whitelisted_method
|
it
"doesn't flag violation for return inside
#{
whitelisted_method
}
"
do
expect_no_offenses
(
<<~
RUBY
)
items.
#{
whitelisted_method
}
do |item|
do_something
return if something_else
end
RUBY
end
end
%i[each each_filename times loop]
.
each
do
|
whitelisted_method
|
it_behaves_like
'examples with whitelisted method'
,
whitelisted_method
end
shared_examples
'examples with def methods'
do
|
def_method
|
it
"doesn't flag violation for return inside
#{
def_method
}
"
do
expect_no_offenses
(
<<~
RUBY
)
helpers do
#{
def_method
}
do
return if something
do_something_more
end
end
RUBY
end
end
%i[define_method lambda]
.
each
do
|
def_method
|
it_behaves_like
'examples with def methods'
,
def_method
end
it
"doesn't flag violation for return inside a lambda"
do
expect_no_offenses
(
<<~
RUBY
)
lambda do
do_something
return if something_else
end
RUBY
end
it
"doesn't flag violation for return used inside a method definition"
do
expect_no_offenses
(
<<~
RUBY
)
describe Klass do
def a_method
do_something
return if something_else
end
end
RUBY
end
it
"doesn't flag violation for next inside a block"
do
expect_no_offenses
(
<<~
RUBY
)
call do
do_something
next if something_else
end
RUBY
end
it
"doesn't flag violation for break inside a block"
do
expect_no_offenses
(
<<~
RUBY
)
call do
do_something
break if something_else
end
RUBY
end
it
"doesn't check when block is empty"
do
expect_no_offenses
(
<<~
RUBY
)
call do
end
RUBY
end
end
spec/support/shared_examples/uploaders/gitlab_uploader_shared_examples.rb
View file @
c6b1043e
...
@@ -4,7 +4,7 @@ shared_examples "matches the method pattern" do |method|
...
@@ -4,7 +4,7 @@ shared_examples "matches the method pattern" do |method|
let
(
:pattern
)
{
patterns
[
method
]
}
let
(
:pattern
)
{
patterns
[
method
]
}
it
do
it
do
return
skip
"No pattern provided, skipping."
unless
pattern
skip
"No pattern provided, skipping."
unless
pattern
expect
(
target
.
method
(
method
).
call
(
*
args
)).
to
match
(
pattern
)
expect
(
target
.
method
(
method
).
call
(
*
args
)).
to
match
(
pattern
)
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment