spec/finders/members_finder_spec.rb randomly fails due to a different row order
Seen in https://gitlab.com/gitlab-org/gitlab/-/jobs/298261857, but I also raw this in some of my merge requests:
Knapsack global time execution for tests: 10m 03s
Pending: (Failures listed here are expected and do not affect your suite's status)
1) Deployment modules behaves like AtomicInternalId .has_internal_id Validation when presence validation is not required does not validate presence
# No reason given
# ./spec/support/shared_examples/models/atomic_internal_id_shared_examples.rb:35
Failures:
1) MembersFinder#execute when include_invited_groups_members == true when the user is a member of invited group and ancestor groups returns the highest access_level for the user limited by project_group_link.group_access
Failure/Error: expect(result).to contain_exactly(linked_group_member, nested_linked_group_member)
expected collection contained: [#<GroupMember id: 1212, access_level: 10, source_id: 2102, source_type: "Namespace", user_id: 1905, ...en: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>]
actual collection contained: [#<GroupMember id: 1213, access_level: 10, source_id: 2103, source_type: "Namespace", user_id: 1906, ...en: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>]
the missing elements were: [#<GroupMember id: 1212, access_level: 10, source_id: 2102, source_type: "Namespace", user_id: 1905, ...en: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>]
the extra elements were: [#<GroupMember id: 1218, access_level: 20, source_id: 2103, source_type: "Namespace", user_id: 1905, ...en: nil, invite_accepted_at: nil, requested_at: nil, expires_at: nil, ldap: false, override: false>]
# ./vendor/ruby/2.6.0/gems/rspec-support-3.8.2/lib/rspec/support.rb:97:in `block in <module:Support>'
# ./vendor/ruby/2.6.0/gems/rspec-support-3.8.2/lib/rspec/support.rb:106:in `notify_failure'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.8.4/lib/rspec/expectations/fail_with.rb:35:in `fail_with'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.8.4/lib/rspec/expectations/handler.rb:40:in `handle_failure'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.8.4/lib/rspec/expectations/handler.rb:50:in `block in handle_matcher'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.8.4/lib/rspec/expectations/handler.rb:27:in `with_matcher'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.8.4/lib/rspec/expectations/handler.rb:48:in `handle_matcher'
# ./vendor/ruby/2.6.0/gems/rspec-expectations-3.8.4/lib/rspec/expectations/expectation_target.rb:65:in `to'
# ./spec/finders/members_finder_spec.rb:91:in `block (4 levels) in <top (required)>'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:257:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:257:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:503:in `block in with_around_and_singleton_context_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:460:in `block in with_around_example_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/hooks.rb:464:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/hooks.rb:604:in `block in run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:345:in `call'
# ./vendor/ruby/2.6.0/gems/rspec-rails-3.8.2/lib/rspec/rails/adapters.rb:127:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/hooks.rb:373:in `execute_with'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/hooks.rb:606:in `block (2 levels) in run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:345:in `call'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:123:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `loop'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:110:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec_ext/rspec_ext.rb:12:in `run_with_retry'
# ./vendor/ruby/2.6.0/gems/rspec-retry-0.6.1/lib/rspec/retry.rb:37:in `block (2 levels) in setup'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:450:in `instance_exec'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/hooks.rb:373:in `execute_with'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/hooks.rb:606:in `block (2 levels) in run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:345:in `call'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/hooks.rb:607:in `run_around_example_hooks_for'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/hooks.rb:464:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:460:in `with_around_example_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:503:in `with_around_and_singleton_context_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example.rb:254:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:633:in `block in run_examples'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:629:in `map'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:629:in `run_examples'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:595:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:596:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:596:in `map'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:596:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:596:in `block in run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:596:in `map'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/example_group.rb:596:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/runner.rb:116:in `block (3 levels) in run_specs'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/runner.rb:116:in `map'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/runner.rb:116:in `block (2 levels) in run_specs'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/configuration.rb:2008:in `with_suite_hooks'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/runner.rb:111:in `block in run_specs'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/reporter.rb:74:in `report'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/runner.rb:110:in `run_specs'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/runner.rb:87:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/runner.rb:71:in `run'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/lib/rspec/core/runner.rb:45:in `invoke'
# ./vendor/ruby/2.6.0/gems/rspec-core-3.8.2/exe/rspec:4:in `<top (required)>'
# ./vendor/ruby/2.6.0/bin/rspec:23:in `load'
# ./vendor/ruby/2.6.0/bin/rspec:23:in `<top (required)>'
# /usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `load'
# /usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:74:in `kernel_load'
# /usr/local/lib/ruby/2.6.0/bundler/cli/exec.rb:28:in `run'
# /usr/local/lib/ruby/2.6.0/bundler/cli.rb:463:in `exec'
# /usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
# /usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
# /usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
# /usr/local/lib/ruby/2.6.0/bundler/cli.rb:27:in `dispatch'
# /usr/local/lib/ruby/2.6.0/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
# /usr/local/lib/ruby/2.6.0/bundler/cli.rb:18:in `start'
# /usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:30:in `block in <top (required)>'
# /usr/local/lib/ruby/2.6.0/bundler/friendly_errors.rb:124:in `with_friendly_errors'
# /usr/local/lib/ruby/gems/2.6.0/gems/bundler-1.17.2/exe/bundle:22:in `<top (required)>'
# /usr/local/bin/bundle:23:in `load'
# /usr/local/bin/bundle:23:in `<main>'
Finished in 13 minutes 22 seconds (files took 43.96 seconds to load)
1968 examples, 1 failure, 1 pending
Failed examples:
rspec ./spec/finders/members_finder_spec.rb:85 # MembersFinder#execute when include_invited_groups_members == true when the user is a member of invited group and ancestor groups returns the highest access_level for the user limited by project_group_link.group_access