Running "fast unit specs" all in one go fail
Problem
Running fast unit specs currently fail
$ bin/rspec $(git grep -l -E '^require.*fast_spec_helper')
/home/peter/.dotfiles/asdf/installs/ruby/2.7.5/lib/ruby/gems/2.7.0/gems/set-1.0.1/lib/set.rb:648: warning: already initialized constant Set::InspectKey
/home/peter/.dotfiles/asdf/installs/ruby/2.7.5/lib/ruby/2.7.0/set.rb:618: warning: previous definition of InspectKey was here
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
............................................................................................bundle exec sidekiq -c2 -etest -t25 -gqueues:foo -r/home/peter/devel/gitlab/gdk-ee/gitlab -qfoo,1
..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................FFF.................................................................................................................................................................................................................................................................................................F.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Failures:
1) Gitlab::Pagination::OffsetHeaderBuilder#execute sets headers to request context
Failure/Error: uri.host = Gitlab.config.gitlab.host
Settingslogic::MissingSetting:
Missing setting 'gitlab' in /tmp/gitlab.yml20220120-2722047-jt8n88
# ./lib/gitlab/pagination/offset_header_builder.rb:48:in `block in base_request_uri'
# ./lib/gitlab/pagination/offset_header_builder.rb:47:in `tap'
# ./lib/gitlab/pagination/offset_header_builder.rb:47:in `base_request_uri'
# ./lib/gitlab/pagination/offset_header_builder.rb:54:in `build_page_url'
# ./lib/gitlab/pagination/offset_header_builder.rb:62:in `page_href'
# ./lib/gitlab/pagination/offset_header_builder.rb:38:in `block in pagination_links'
# ./lib/gitlab/pagination/offset_header_builder.rb:37:in `tap'
# ./lib/gitlab/pagination/offset_header_builder.rb:37:in `pagination_links'
# ./lib/gitlab/pagination/offset_header_builder.rb:26:in `execute'
# ./spec/lib/gitlab/pagination/offset_header_builder_spec.rb:38:in `block (3 levels) in <main>'
2) Gitlab::Pagination::OffsetHeaderBuilder#execute exclude total headers does not set total headers to request context
Failure/Error: uri.host = Gitlab.config.gitlab.host
Settingslogic::MissingSetting:
Missing setting 'gitlab' in /tmp/gitlab.yml20220120-2722047-jt8n88
# ./lib/gitlab/pagination/offset_header_builder.rb:48:in `block in base_request_uri'
# ./lib/gitlab/pagination/offset_header_builder.rb:47:in `tap'
# ./lib/gitlab/pagination/offset_header_builder.rb:47:in `base_request_uri'
# ./lib/gitlab/pagination/offset_header_builder.rb:54:in `build_page_url'
# ./lib/gitlab/pagination/offset_header_builder.rb:62:in `page_href'
# ./lib/gitlab/pagination/offset_header_builder.rb:38:in `block in pagination_links'
# ./lib/gitlab/pagination/offset_header_builder.rb:37:in `tap'
# ./lib/gitlab/pagination/offset_header_builder.rb:37:in `pagination_links'
# ./lib/gitlab/pagination/offset_header_builder.rb:26:in `execute'
# ./spec/lib/gitlab/pagination/offset_header_builder_spec.rb:46:in `block (4 levels) in <main>'
3) Gitlab::Pagination::OffsetHeaderBuilder#execute pass data without counts does not set total headers to request context
Failure/Error: uri.host = Gitlab.config.gitlab.host
Settingslogic::MissingSetting:
Missing setting 'gitlab' in /tmp/gitlab.yml20220120-2722047-jt8n88
# ./lib/gitlab/pagination/offset_header_builder.rb:48:in `block in base_request_uri'
# ./lib/gitlab/pagination/offset_header_builder.rb:47:in `tap'
# ./lib/gitlab/pagination/offset_header_builder.rb:47:in `base_request_uri'
# ./lib/gitlab/pagination/offset_header_builder.rb:54:in `build_page_url'
# ./lib/gitlab/pagination/offset_header_builder.rb:62:in `page_href'
# ./lib/gitlab/pagination/offset_header_builder.rb:38:in `block in pagination_links'
# ./lib/gitlab/pagination/offset_header_builder.rb:37:in `tap'
# ./lib/gitlab/pagination/offset_header_builder.rb:37:in `pagination_links'
# ./lib/gitlab/pagination/offset_header_builder.rb:26:in `execute'
# ./spec/lib/gitlab/pagination/offset_header_builder_spec.rb:57:in `block (4 levels) in <main>'
4) InstanceMetadata has the correct properties
Failure/Error: result = Gitlab::Popen.popen_with_detail(%W[#{config.git.bin_path} log --pretty=format:%h --abbrev=11 -n 1])
Settingslogic::MissingSetting:
Missing setting 'git' in /tmp/gitlab.yml20220120-2722047-jt8n88
# ./lib/gitlab.rb:36:in `revision'
# ./app/models/instance_metadata.rb:6:in `initialize'
# ./spec/models/instance_metadata_spec.rb:9:in `block (2 levels) in <main>'
Finished in 40.13 seconds (files took 5.01 seconds to load)
2294 examples, 4 failures
Failed examples:
rspec ./spec/lib/gitlab/pagination/offset_header_builder_spec.rb:33 # Gitlab::Pagination::OffsetHeaderBuilder#execute sets headers to request context
rspec ./spec/lib/gitlab/pagination/offset_header_builder_spec.rb:42 # Gitlab::Pagination::OffsetHeaderBuilder#execute exclude total headers does not set total headers to request context
rspec ./spec/lib/gitlab/pagination/offset_header_builder_spec.rb:53 # Gitlab::Pagination::OffsetHeaderBuilder#execute pass data without counts does not set total headers to request context
rspec ./spec/models/instance_metadata_spec.rb:8 # InstanceMetadata has the correct properties
Running them individually works fine
for i in $(git grep -l -E '^require.*fast_spec_helper'); do echo $i; echo; bin/rspec $i; done)
Proposed solution
This needs investigation. We could consider using rspec --bisect
.
Load order issues?
It's worth mentioning that running specs using rg
instead of git grep
produces more failures:
Click to expand
Running bin/rspec $(rg '^require.*fast_spec_helper' -l -t ruby)
gives 2294 examples, 8 failures
.
Note the warnings about reinitialization of constants
$ bin/rspec $(rg '^require.*fast_spec_helper' -l -t ruby)
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/cli_methods.rb:18: warning: already initialized constant Gitlab::SidekiqConfig::CliMethods::QUEUE_CONFIG_PATHS
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/cli_methods.rb:18: warning: previous definition of QUEUE_CONFIG_PATHS was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:6: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::WILDCARD_MATCH
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:6: warning: previous definition of WILDCARD_MATCH was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:7: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::QUERY_OR_OPERATOR
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:7: warning: previous definition of QUERY_OR_OPERATOR was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:8: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::QUERY_AND_OPERATOR
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:8: warning: previous definition of QUERY_AND_OPERATOR was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:9: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::QUERY_CONCATENATE_OPERATOR
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:9: warning: previous definition of QUERY_CONCATENATE_OPERATOR was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:10: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::QUERY_TERM_REGEX
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:10: warning: previous definition of QUERY_TERM_REGEX was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:12: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::QUERY_PREDICATES
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:12: warning: previous definition of QUERY_PREDICATES was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:22: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::QueryError
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:22: warning: previous definition of QueryError was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:23: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:23: warning: previous definition of InvalidTerm was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:24: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::UnknownOperator
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:24: warning: previous definition of UnknownOperator was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:25: warning: already initialized constant Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/sidekiq_config/worker_matcher.rb:25: warning: previous definition of UnknownPredicate was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/metrics/prometheus.rb:8: warning: already initialized constant Gitlab::Metrics::Prometheus::REGISTRY_MUTEX
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/metrics/prometheus.rb:8: warning: previous definition of REGISTRY_MUTEX was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/metrics/prometheus.rb:9: warning: already initialized constant Gitlab::Metrics::Prometheus::PROVIDER_MUTEX
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/metrics/prometheus.rb:9: warning: previous definition of PROVIDER_MUTEX was here
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/metrics.rb:7: warning: already initialized constant Gitlab::Metrics::EXECUTION_MEASUREMENT_BUCKETS
/home/peter/devel/gitlab/gdk-ee/gitlab/lib/gitlab/metrics.rb:7: warning: previous definition of EXECUTION_MEASUREMENT_BUCKETS was here
/home/peter/.dotfiles/asdf/installs/ruby/2.7.5/lib/ruby/gems/2.7.0/gems/set-1.0.1/lib/set.rb:648: warning: already initialized constant Set::InspectKey
/home/peter/.dotfiles/asdf/installs/ruby/2.7.5/lib/ruby/2.7.0/set.rb:618: warning: previous definition of InspectKey was here
Run options: include {:focus=>true}
All examples were filtered out; ignoring {:focus=>true}
.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................FFFF...................................................................................................................................................................................................bundle exec sidekiq -c2 -etest -t25 -gqueues:foo -r/home/peter/devel/gitlab/gdk-ee/gitlab -qfoo,1
......
...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................F........................................................................................FFF.........
Failures:
1) Gitlab::SidekiqConfig::WorkerMatcher#match? with invalid input query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
Failure/Error:
expect { described_class.new(query).match?(metadata) }
.to raise_error(error)
expected Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm, got #<Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm: Invalid term: feature_category="category_a"> with backtrace:
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:54:in `predicate_for_term'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:42:in `block (2 levels) in query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:41:in `map'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:41:in `block in query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:40:in `map'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:40:in `query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:28:in `initialize'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `new'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (7 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (6 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `each'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `block (5 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (6 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `each'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `block (5 levels) in <top (required)>'
2) Gitlab::SidekiqConfig::WorkerMatcher#match? with invalid input query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
Failure/Error:
expect { described_class.new(query).match?(metadata) }
.to raise_error(error)
expected Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm, got #<Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm: Invalid term: feature_category=> with backtrace:
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:54:in `predicate_for_term'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:42:in `block (2 levels) in query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:41:in `map'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:41:in `block in query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:40:in `map'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:40:in `query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:28:in `initialize'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `new'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (7 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (6 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `each'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `block (5 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (6 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `each'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `block (5 levels) in <top (required)>'
3) Gitlab::SidekiqConfig::WorkerMatcher#match? with invalid input query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
Failure/Error:
expect { described_class.new(query).match?(metadata) }
.to raise_error(error)
expected Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm, got #<Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm: Invalid term: feature_category~category_a> with backtrace:
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:54:in `predicate_for_term'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:42:in `block (2 levels) in query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:41:in `map'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:41:in `block in query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:40:in `map'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:40:in `query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:28:in `initialize'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `new'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (7 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (6 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `each'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `block (5 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (6 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `each'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `block (5 levels) in <top (required)>'
4) Gitlab::SidekiqConfig::WorkerMatcher#match? with invalid input query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate
Failure/Error:
expect { described_class.new(query).match?(metadata) }
.to raise_error(error)
expected Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate, got #<Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate: Unknown predicate: invalid_term> with backtrace:
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:77:in `predicate_factory'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:58:in `predicate_for_term'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:42:in `block (2 levels) in query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:41:in `map'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:41:in `block in query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:40:in `map'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:40:in `query_string_to_lambda'
# ./lib/gitlab/sidekiq_config/worker_matcher.rb:28:in `initialize'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `new'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (7 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (6 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `each'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `block (5 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:132:in `block (6 levels) in <top (required)>'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `each'
# ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb:131:in `block (5 levels) in <top (required)>'
5) InstanceMetadata has the correct properties
Failure/Error: result = Gitlab::Popen.popen_with_detail(%W[#{config.git.bin_path} log --pretty=format:%h --abbrev=11 -n 1])
Settingslogic::MissingSetting:
Missing setting 'git' in /home/peter/devel/gitlab/gdk-ee/gitlab/config/gitlab.yml
# (eval):3:in `git'
# (eval):1:in `git'
# ./lib/gitlab.rb:36:in `revision'
# ./app/models/instance_metadata.rb:6:in `initialize'
# ./spec/models/instance_metadata_spec.rb:9:in `block (2 levels) in <main>'
6) Gitlab::Patch::DrawRoute evaluates EE only routes
Failure/Error:
expect(subject).to have_received(:instance_eval)
.with(File.read(subject.route_path('ee/config/routes/oauth.rb')))
.once
(#<#<Class:0x000055e1341581a8>:0x000055e1341580e0>).instance_eval("# frozen_string_literal: true\n\nnamespace :oauth do\n scope path: 'geo', controller: :geo_auth, as: :geo do\n get 'auth'\n get 'callback'\n get 'logout'\n end\nend\n")
expected: 1 time with arguments: ("# frozen_string_literal: true\n\nnamespace :oauth do\n scope path: 'geo', controller: :geo_auth, as: :geo do\n get 'auth'\n get 'callback'\n get 'logout'\n end\nend\n")
received: 0 times
# ./ee/spec/lib/gitlab/patch/draw_route_spec.rb:25:in `block (2 levels) in <main>'
7) Gitlab::Patch::DrawRoute evaluates CE and EE routes
Failure/Error:
expect(subject).to have_received(:instance_eval)
.with(File.read(subject.route_path('ee/config/routes/admin.rb')))
.once
#<#<Class:0x000055e13414b638>:0x000055e13414b570> received :instance_eval with unexpected arguments
expected: ("# frozen_string_literal: true\n\nnamespace :admin do\n resources :users, only: [], constraints: { i... post :trigger_reindexing\n post :cancel_index_deletion\n post :retry_migration\n end\nend\n")
got: ("# frozen_string_literal: true\n\nnamespace :admin do\n resources :users, constraints: { id: %r{[a-z...'\n\n root to: 'dashboard#index'\n\n get :version_check, to: 'version_check#version_check'\nend\n")
Diff:
@@ -1,91 +1,192 @@
# frozen_string_literal: true
namespace :admin do
- resources :users, only: [], constraints: { id: %r{[a-zA-Z./0-9_\-]+} } do
+ resources :users, constraints: { id: %r{[a-zA-Z./0-9_\-]+} } do
+ resources :keys, only: [:show, :destroy]
+ resources :identities, except: [:show]
+ resources :impersonation_tokens, only: [:index, :create] do
+ member do
+ put :revoke
+ end
+ end
+
member do
- post :reset_runners_minutes
- get :card_match
+ get :projects
+ get :keys
+ put :block
+ put :unblock
+ put :ban
+ put :unban
+ put :deactivate
+ put :activate
+ put :unlock
+ put :confirm
+ put :approve
+ delete :reject
+ post :impersonate
+ patch :disable_two_factor
+ delete 'remove/:email_id', action: 'remove_email', as: 'remove_email'
end
end
+ resource :session, only: [:new, :create] do
+ post 'destroy', action: :destroy, as: :destroy
+ end
+
+ resource :impersonation, only: :destroy
+
+ resources :abuse_reports, only: [:index, :destroy]
+ resources :gitaly_servers, only: [:index]
+
+ resources :spam_logs, only: [:index, :destroy] do
+ member do
+ post :mark_as_ham
+ end
+ end
+
+ resources :applications
+
+ resources :groups, only: [:index, :new, :create]
+
scope(path: 'groups/*id',
controller: :groups,
constraints: { id: Gitlab::PathRegex.full_namespace_route_regex, format: /(html|json|atom)/ }) do
scope(as: :group) do
- post :reset_runners_minutes
+ put :members_update
+ get :edit, action: :edit
+ get '/', action: :show
+ patch '/', action: :update
+ put '/', action: :update
+ delete '/', action: :destroy
end
end
- resource :push_rule, only: [:show, :update]
- resource :email, only: [:show, :create]
- resources :audit_logs, controller: 'audit_logs', only: [:index]
- resources :audit_log_reports, only: [:index], constraints: { format: :csv }
- resources :credentials, only: [:index, :destroy] do
- member do
- put :revoke
+ resources :topics, only: [:index, :new, :create, :edit, :update] do
+ resource :avatar, controller: 'topics/avatars', only: [:destroy]
+ collection do
+ post :preview_markdown
end
end
- resources :user_permission_exports, controller: 'user_permission_exports', only: [:index]
- resource :license, only: [:show, :new, :create, :destroy] do
- get :download, on: :member
- post :sync_seat_link, on: :collection
+ resources :deploy_keys, only: [:index, :new, :create, :edit, :update, :destroy]
- resource :usage_export, controller: 'licenses/usage_exports', only: [:show]
+ resources :hooks, only: [:index, :create, :edit, :update, :destroy] do
+ member do
+ post :test
+ end
+
+ resources :hook_logs, only: [:show] do
+ member do
+ post :retry
+ end
+ end
end
- resource :subscription, only: [:show]
+ resources :broadcast_messages, only: [:index, :edit, :create, :update, :destroy] do
+ post :preview, on: :collection
+ end
- # using `only: []` to keep duplicate routes from being created
- resource :application_settings, only: [] do
- get :seat_link_payload
- match :templates, :advanced_search, via: [:get, :patch]
- get :geo, to: "geo/settings#show"
+ get :instance_review, to: 'instance_review#index'
+
+ resources :background_migrations, only: [:index] do
+ member do
+ post :pause
+ post :resume
+ post :retry
+ end
end
- namespace :geo do
- get '/' => 'nodes#index'
+ resource :health_check, controller: 'health_check', only: [:show]
+ resource :background_jobs, controller: 'background_jobs', only: [:show]
- # Old Routes Replaced in 13.0
- get '/projects', to: redirect(path: 'admin/geo/replication/projects')
- get '/designs', to: redirect(path: 'admin/geo/replication/designs')
+ resource :system_info, controller: 'system_info', only: [:show]
+ resources :requests_profiles, only: [:index, :show], param: :name, constraints: { name: /.+\.(html|txt)/ }
- resources :nodes, path: 'sites', only: [:index, :create, :new, :edit, :update]
+ resources :projects, only: [:index]
- # Old Route Replaced in 14.7
- get '/nodes', to: redirect(path: 'admin/geo/sites')
- get '/nodes/new', to: redirect(path: 'admin/geo/sites/new')
- get '/nodes/:id/edit', to: redirect(path: 'admin/geo/sites/%{id}/edit')
+ resources :usage_trends, only: :index
+ resource :dev_ops_report, controller: 'dev_ops_report', only: :show
+ resources :cohorts, only: :index
- scope '/replication' do
- get '/', to: redirect(path: 'admin/geo/replication/projects')
+ scope(path: 'projects/*namespace_id',
+ as: :namespace,
+ constraints: { namespace_id: Gitlab::PathRegex.full_namespace_route_regex }) do
+ resources(:projects,
+ path: '/',
+ constraints: { id: Gitlab::PathRegex.project_route_regex },
+ only: [:show, :destroy]) do
+ member do
+ put :transfer
+ post :repository_check
+ end
- resources :projects, only: [:index, :destroy] do
- member do
- post :reverify
- post :resync
- post :force_redownload
- end
+ resources :runner_projects, only: [:create, :destroy]
+ end
+ end
- collection do
- post :reverify_all
- post :resync_all
- end
+ resource :application_settings, only: :update do
+ resources :integrations, only: [:edit, :update] do
+ member do
+ get :overrides
+ put :test
+ post :reset
end
+ end
- resources :designs, only: [:index]
+ get :usage_data
+ put :reset_registration_token
+ put :reset_health_check_token
+ put :clear_repository_check_states
+ match :general, :integrations, :repository, :ci_cd, :reporting, :metrics_and_profiling, :network, :preferences, via: [:get, :patch]
+ get :lets_encrypt_terms_of_service
- get '/:replicable_name_plural', to: 'replicables#index', as: 'replicables'
+ post :create_self_monitoring_project
+ get :status_create_self_monitoring_project
+ delete :delete_self_monitoring_project
+ get :status_delete_self_monitoring_project
+
+ resource :appearances, only: [:show, :create, :update], path: 'appearance', module: 'application_settings' do
+ member do
+ get :preview_sign_in
+ delete :logo
+ delete :header_logos
+ delete :favicon
+ end
end
+ end
- resource :settings, only: [:show, :update]
+ resources :plan_limits, only: :create
+
+ resources :labels
+
+ resources :runners, only: [:index, :show, :edit, :update, :destroy] do
+ member do
+ post :resume
+ post :pause
+ end
+
+ collection do
+ get :tag_list, format: :json
+ get :runner_setup_scripts, format: :json
+ end
end
- namespace :elasticsearch do
- post :enqueue_index
- post :trigger_reindexing
- post :cancel_index_deletion
- post :retry_migration
+ resources :jobs, only: :index do
+ collection do
+ post :cancel_all
+ end
end
+
+ namespace :ci do
+ resource :variables, only: [:show, :update]
+ end
+
+ concerns :clusterable
+
+ get '/dashboard/stats', to: 'dashboard#stats'
+
+ root to: 'dashboard#index'
+
+ get :version_check, to: 'version_check#version_check'
end
# ./ee/spec/lib/gitlab/patch/draw_route_spec.rb:40:in `block (2 levels) in <main>'
8) Gitlab::Patch::DrawRoute raises an error when nothing is drawn
Failure/Error:
expect { subject.draw(:non_existing) }
.to raise_error(described_class::RoutesNotFound)
expected Gitlab::Patch::DrawRoute::RoutesNotFound but nothing was raised
# ./ee/spec/lib/gitlab/patch/draw_route_spec.rb:46:in `block (2 levels) in <main>'
Finished in 38.88 seconds (files took 4.49 seconds to load)
2294 examples, 8 failures
Failed examples:
rspec ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb[1:1:2:1:1] # Gitlab::SidekiqConfig::WorkerMatcher#match? with invalid input query: "feature_category=\"category_a\"", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
rspec ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb[1:1:2:2:1] # Gitlab::SidekiqConfig::WorkerMatcher#match? with invalid input query: "feature_category=", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
rspec ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb[1:1:2:3:1] # Gitlab::SidekiqConfig::WorkerMatcher#match? with invalid input query: "feature_category~category_a", error: Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::InvalidTerm
rspec ./spec/lib/gitlab/sidekiq_config/worker_matcher_spec.rb[1:1:2:4:1] # Gitlab::SidekiqConfig::WorkerMatcher#match? with invalid input query: "invalid_term=a", error: Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate is expected to raise Gitlab::SidekiqConfig::WorkerMatcher::UnknownPredicate
rspec ./spec/models/instance_metadata_spec.rb:8 # InstanceMetadata has the correct properties
rspec ./ee/spec/lib/gitlab/patch/draw_route_spec.rb:22 # Gitlab::Patch::DrawRoute evaluates EE only routes
rspec ./ee/spec/lib/gitlab/patch/draw_route_spec.rb:33 # Gitlab::Patch::DrawRoute evaluates CE and EE routes
rspec ./ee/spec/lib/gitlab/patch/draw_route_spec.rb:45 # Gitlab::Patch::DrawRoute raises an error when nothing is drawn