NameError: uninitialized constant LoginHelpers::DeviseHelpers
I get this error as of latest CE master when trying to run the tests:
bundler: failed to load command: rspec (/home/yorickpeterse/.gem/ruby/2.3.3/bin/rspec)
NameError: uninitialized constant LoginHelpers::DeviseHelpers
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/login_helpers.rb:2:in `<module:LoginHelpers>'
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/login_helpers.rb:1:in `<top (required)>'
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/spec_helper.rb:34:in `block in <top (required)>'
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/spec_helper.rb:34:in `each'
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/spec_helper.rb:34:in `<top (required)>'
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/models/event_collection_spec.rb:1:in `require'
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/models/event_collection_spec.rb:1:in `<top (required)>'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/lib/rspec/core/configuration.rb:1435:in `load'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/lib/rspec/core/configuration.rb:1435:in `block in load_spec_files'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/lib/rspec/core/configuration.rb:1433:in `each'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/lib/rspec/core/configuration.rb:1433:in `load_spec_files'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/lib/rspec/core/runner.rb:100:in `setup'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/lib/rspec/core/runner.rb:86:in `run'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/lib/rspec/core/runner.rb:71:in `run'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/lib/rspec/core/runner.rb:45:in `invoke'
/home/yorickpeterse/.gem/ruby/2.3.3/gems/rspec-core-3.5.0/exe/rspec:4:in `<top (required)>'
/home/yorickpeterse/.gem/ruby/2.3.3/bin/rspec:22:in `load'
/home/yorickpeterse/.gem/ruby/2.3.3/bin/rspec:22:in `<top (required)>'
I had this on EE master as well.
In spec/spec_helper.rb
we have the following:
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
When I edit this to also display the path being required the output is as follows:
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/cycle_analytics_helpers/test_generation.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/workhorse_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/import_spec_helper.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/issue_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/gitaly.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/seed_helper.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/user_activities_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/repo_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/factory_girl.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/taskable_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/snippets_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/stub_gitlab_calls.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/slack_mattermost_notifications_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/api/repositories_shared_context.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/api/v3/time_tracking_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/api/scopes/read_user_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/api/milestones_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/api/members_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/api/schema_matcher.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/api/time_tracking_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/api/issues_resolving_discussions_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/rake_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/carrierwave.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/helpers/fake_blob_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/helpers/note_interaction_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/helpers/key_generator_helper.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/filter_spec_helper.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/merge_request_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/omni_auth.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/database_connection_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/stub_env.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/search_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/routing_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/capybara.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/query_recorder.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/capybara_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/wait_for_requests.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/reference_parser_helpers.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/shared_examples/requests/api/status_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/shared_examples/features/protected_branches_access_control_ce.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/shared_examples/features/issuable_sidebar_shared_examples.rb
/home/yorickpeterse/Projects/gitlab/gdk-ce/gitlab/spec/support/login_helpers.rb
This suggests that spec/support/devise_helpers.rb
is loaded after login_helpers.rb
Manually requiring spec/support/devise_helpers.rb
first does solve the problem, but it seems the bigger problem is that we're relying on files being loaded in a particular order which is not guaranteed.