Skip to content

Improve invalid feature category message for db docs specs

What does this MR do and why?

This MR improves the readability of spec failures in case of invalid feature categories for spec/db/docs_spec.rb.

The message now shows which feature categories were invalid.

Follow-up of !107237 (merged).

Refs !109338 (merged).

Screenshots

Before

Example: https://gitlab.com/gitlab-org/gitlab/-/jobs/3634626635 (from !109338 (merged)).

Failures:

  1) Tables documentation for each object has a valid feature category
     Failure/Error:
       expect(objects_with_invalid_feature_category).to be_empty, object_metadata_errors(
         'Table metadata files with an invalid feature category',
         :error,
         objects_with_invalid_feature_category
       )

       Table metadata files with an invalid feature category:

       db/docs/achievements.yml
         

       db/docs/emails.yml
         

       db/docs/events.yml
         

       db/docs/ghost_user_migrations.yml
         

       db/docs/push_event_payloads.yml
         

       db/docs/routes.yml
         

       db/docs/user_achievements.yml
         

       db/docs/user_custom_attributes.yml
         

       db/docs/user_details.yml
         

       db/docs/user_follow_users.yml
         

       db/docs/user_preferences.yml
         

       db/docs/user_statuses.yml
         

       db/docs/users.yml
         
     Shared Example Group: "validate dictionary" called from ./spec/db/docs_spec.rb:177
     # ./spec/db/docs_spec.rb:71:in `block (3 levels) in <top (required)>'
     # ./spec/spec_helper.rb:415:in `block (3 levels) in <top (required)>'
     # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'
     # ./spec/spec_helper.rb:407:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:403:in `block (3 levels) in <top (required)>'
     # ./lib/gitlab/application_context.rb:59:in `with_raw_context'
     # ./spec/spec_helper.rb:403:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:239:in `block (2 levels) in <top (required)>'
     # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <main>'

Finished in 6.06 seconds (files took 8.31 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/db/docs_spec.rb[2:1:3] # Tables documentation for each object has a valid feature category

After

Failures:

  1) Tables documentation for each object has a valid feature category
     Failure/Error:
       expect(objects_with_invalid_feature_category).to be_empty, object_metadata_errors(
         message,
         :invalid_feature_category,
         objects_with_invalid_feature_category
       )

       Please use a category from https://about.gitlab.com/handbook/product/categories/#categories-a-z

       Table metadata files with an invalid feature category:

       db/docs/achievements.yml
         invalid feature category: users

       db/docs/emails.yml
         invalid feature category: users

       db/docs/events.yml
         invalid feature category: users

       db/docs/ghost_user_migrations.yml
         invalid feature category: users

       db/docs/push_event_payloads.yml
         invalid feature category: users

       db/docs/routes.yml
         invalid feature category: users

       db/docs/user_achievements.yml
         invalid feature category: users

       db/docs/user_custom_attributes.yml
         invalid feature category: users

       db/docs/user_details.yml
         invalid feature category: users

       db/docs/user_follow_users.yml
         invalid feature category: users

       db/docs/user_preferences.yml
         invalid feature category: users

       db/docs/user_statuses.yml
         invalid feature category: users

       db/docs/users.yml
         invalid feature category: users
     Shared Example Group: "validate dictionary" called from ./spec/db/docs_spec.rb:186
     # ./spec/db/docs_spec.rb:83:in `block (3 levels) in <top (required)>'
     # ./spec/spec_helper.rb:415:in `block (3 levels) in <top (required)>'
     # ./spec/support/sidekiq_middleware.rb:18:in `with_sidekiq_server_middleware'
     # ./spec/spec_helper.rb:407:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:403:in `block (3 levels) in <top (required)>'
     # ./lib/gitlab/application_context.rb:59:in `with_raw_context'
     # ./spec/spec_helper.rb:403:in `block (2 levels) in <top (required)>'
     # ./spec/spec_helper.rb:239:in `block (2 levels) in <top (required)>'
     # ./spec/support/system_exit_detected.rb:7:in `block (2 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (3 levels) in <main>'
     # ./spec/support/database/prevent_cross_joins.rb:60:in `with_cross_joins_prevented'
     # ./spec/support/database/prevent_cross_joins.rb:106:in `block (2 levels) in <main>'

Finished in 6.66 seconds (files took 8.22 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/db/docs_spec.rb[2:1:3] # Tables documentation for each object has a valid feature category

How to set up and validate locally

Refs !109338 (merged)

bin/rspec ./spec/db/docs_spec.rb -e "Tables documentation for each object has a valid feature category"

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Peter Leitzen

Merge request reports