[DRE-maint] Bug#1093929: ruby-rspec-rails: FTBFS: NameError: uninitialized constant RSpec::Rails::OpenStruct

Santiago Vila sanvila at debian.org
Fri Jan 24 01:00:07 GMT 2025


Package: src:ruby-rspec-rails
Version: 5.0.2-1
Severity: serious
Tags: ftbfs trixie sid

Dear maintainer:

During a rebuild of all packages in unstable, your package failed to build:

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=ruby --with ruby
   dh_auto_clean -O--buildsystem=ruby
	dh_ruby --clean
W: XS-Ruby-Versions is deprecated, and will be ignored
   dh_autoreconf_clean -O--buildsystem=ruby
   dh_clean -O--buildsystem=ruby
 debian/rules binary
dh binary --buildsystem=ruby --with ruby
   dh_update_autotools_config -O--buildsystem=ruby
   dh_autoreconf -O--buildsystem=ruby
   dh_auto_configure -O--buildsystem=ruby
	dh_ruby --configure
   dh_auto_build -O--buildsystem=ruby

[... snipped ...]

      works with strings
      works with custom resolvers
  #render_views
    propogates to examples in nested groups properly
    in a nested group
      leaves the parent group as/is
      overrides the value inherited from the parent group
      passes override to children
      with false
        tells examples not to render views
      with no args
        tells examples to render views
      with true
        tells examples to render views
    with false
      tells examples not to render views
      overrides the global config if render_views is enabled there
    with true
      tells examples to render views
    with no args
      tells examples to render views
  default
    ActionController::Base
      does not render views in a nested group
      does not render views
    ActionController::Metal
      renders views

RSpec::Rails::MinitestLifecycleAdapter
  invokes minitest lifecycle hooks at the appropriate times
  allows let variables named 'send'

be_routable
  provides a description
  with should_not
    fails if routes recognize the path
    passes if routes do not recognize the path
  with should
    fails if routes do not recognize the path
    passes if routes recognize the path

RSpec::Rails::FixtureSupport
  will allow #setup_fixture to run successfully
  with use_transactional_fixtures set to false
    still supports fixture_path
  with use_transactional_tests set to true
    works with #uses_transaction helper

redirect_to
  with should_not
    when fails due to some other exception
      raises that exception
    when assert_redirected_to fails
      passes
    when assert_redirected_to passes
      fails with custom failure message
  with should
    when assert_redirected_to passes
      passes
    when assert_redirected_to fails
      uses failure message from assert_redirected_to
    when fails due to some other exception
      raises that exception

RSpec::Rails::FeatureExampleGroup
  includes Rails route helpers
  behaves like an rspec-rails example group mixin
    adds does not add `:type` metadata on inclusion
    when `infer_spec_type_from_file_location!` is configured
      includes itself in example groups tagged with `:type => :feature`
      for an example group defined in a file in the .\spec\features\ directory
        allows users to override the type
        tags groups in that directory with `:type => :feature`
        includes itself in the example group
        applies configured `before(:context)` hooks with `:type => :feature` metadata
      for an example group defined in a file in the ./spec/features/ directory
        includes itself in the example group
        tags groups in that directory with `:type => :feature`
        applies configured `before(:context)` hooks with `:type => :feature` metadata
        allows users to override the type
    when `infer_spec_type_from_file_location!` is not configured
      includes itself in example groups tagged with `:type => :feature`
      for an example group defined in a file in the .\spec\features\ directory
        does not include itself in the example group
        does not tag groups in that directory with `:type => :feature`
      for an example group defined in a file in the ./spec/features/ directory
        does not tag groups in that directory with `:type => :feature`
        does not include itself in the example group
  when nested inside a request example group
    includes Rails route helpers
  #visit
    raises an error informing about missing Capybara
    is resistant to load order errors

RSpec::Rails::JobExampleGroup
  behaves like an rspec-rails example group mixin
    adds does not add `:type` metadata on inclusion
    when `infer_spec_type_from_file_location!` is configured
      includes itself in example groups tagged with `:type => :job`
      for an example group defined in a file in the ./spec/jobs/ directory
        applies configured `before(:context)` hooks with `:type => :job` metadata
        allows users to override the type
        includes itself in the example group
        tags groups in that directory with `:type => :job`
      for an example group defined in a file in the .\spec\jobs\ directory
        tags groups in that directory with `:type => :job`
        applies configured `before(:context)` hooks with `:type => :job` metadata
        includes itself in the example group
        allows users to override the type
    when `infer_spec_type_from_file_location!` is not configured
      includes itself in example groups tagged with `:type => :job`
      for an example group defined in a file in the ./spec/jobs/ directory
        does not tag groups in that directory with `:type => :job`
        does not include itself in the example group
      for an example group defined in a file in the .\spec\jobs\ directory
        does not include itself in the example group
        does not tag groups in that directory with `:type => :job`

RSpec::Rails::HelperExampleGroup
  provides a controller_path based on the helper module's name
  #helper
    includes ApplicationHelper
    returns the instance of AV::Base provided by AV::TC::Behavior
  behaves like an rspec-rails example group mixin
    adds does not add `:type` metadata on inclusion
    when `infer_spec_type_from_file_location!` is not configured
      includes itself in example groups tagged with `:type => :helper`
      for an example group defined in a file in the .\spec\helpers\ directory
        does not tag groups in that directory with `:type => :helper`
        does not include itself in the example group
      for an example group defined in a file in the ./spec/helpers/ directory
        does not tag groups in that directory with `:type => :helper`
        does not include itself in the example group
    when `infer_spec_type_from_file_location!` is configured
      includes itself in example groups tagged with `:type => :helper`
      for an example group defined in a file in the ./spec/helpers/ directory
        includes itself in the example group
        tags groups in that directory with `:type => :helper`
        allows users to override the type
        applies configured `before(:context)` hooks with `:type => :helper` metadata
      for an example group defined in a file in the .\spec\helpers\ directory
        includes itself in the example group
        applies configured `before(:context)` hooks with `:type => :helper` metadata
        allows users to override the type
        tags groups in that directory with `:type => :helper`

RSpec::Rails::AssertionDelegator
  delegates back to the including instance for methods the assertion module requires
  does not delegate method_missing
  provides a module that delegates assertion methods to an isolated class

RSpec::Rails::ChannelExampleGroup
  behaves like an rspec-rails example group mixin
    adds does not add `:type` metadata on inclusion
    when `infer_spec_type_from_file_location!` is configured
      includes itself in example groups tagged with `:type => :channel`
      for an example group defined in a file in the .\spec\channels\ directory
        applies configured `before(:context)` hooks with `:type => :channel` metadata
        tags groups in that directory with `:type => :channel`
        allows users to override the type
        includes itself in the example group
      for an example group defined in a file in the ./spec/channels/ directory
        tags groups in that directory with `:type => :channel`
        applies configured `before(:context)` hooks with `:type => :channel` metadata
        includes itself in the example group
        allows users to override the type
    when `infer_spec_type_from_file_location!` is not configured
      includes itself in example groups tagged with `:type => :channel`
      for an example group defined in a file in the .\spec\channels\ directory
        does not tag groups in that directory with `:type => :channel`
        does not include itself in the example group
      for an example group defined in a file in the ./spec/channels/ directory
        does not tag groups in that directory with `:type => :channel`
        does not include itself in the example group

be_a_new matcher
  new record
    wrong class
      fails
    right class
      passes
  existing record
    wrong class
      fails
    right class
      fails
  #with
    right class and new record
      with composable matchers
        one attribute is a composable matcher
          fails
          passes
          matcher is wrong type
            fails
        two attributes are composable matchers
          only one matcher present in actual
            fails
          both matchers present in actual
            passes
      no attributes same
        fails
      all attributes same
        passes
      one attribute same
        passes
      one attribute value not the same
        fails
    wrong class and existing record
      one attribute value not the same
        fails
      all attributes same
        fails
      no attributes same
        fails

have_stream matchers
  have_stream_from
    fails with message
    passes
    raises when no subscription started
    raises ArgumentError when no subscription passed to expect
    with negated form
      passes
      fails with message
    with composable matcher
      passes
      fails with message
  have_streams
    does not allow usage
    raises when no subscription started
    with negated form
      raises when no subscription started
      raises ArgumentError when no subscription passed to expect
      passes with negated form
      fails with message
  have_stream_for
    raises ArgumentError when no subscription passed to expect
    passes
    raises when no subscription started
    fails with message
    with negated form
      passes
      fails with message

RSpec::Rails::MailboxExampleGroup
  #process
    sends mail to the mailbox
  #have_failed
    raises on unfailed mail
    does not raise otherwise
  behaves like an rspec-rails example group mixin
    adds does not add `:type` metadata on inclusion
    when `infer_spec_type_from_file_location!` is not configured
      includes itself in example groups tagged with `:type => :mailbox`
      for an example group defined in a file in the .\spec\mailboxes\ directory
        does not include itself in the example group
        does not tag groups in that directory with `:type => :mailbox`
      for an example group defined in a file in the ./spec/mailboxes/ directory
        does not tag groups in that directory with `:type => :mailbox`
        does not include itself in the example group
    when `infer_spec_type_from_file_location!` is configured
      includes itself in example groups tagged with `:type => :mailbox`
      for an example group defined in a file in the ./spec/mailboxes/ directory
        allows users to override the type
        tags groups in that directory with `:type => :mailbox`
        applies configured `before(:context)` hooks with `:type => :mailbox` metadata
        includes itself in the example group
      for an example group defined in a file in the .\spec\mailboxes\ directory
        includes itself in the example group
        tags groups in that directory with `:type => :mailbox`
        applies configured `before(:context)` hooks with `:type => :mailbox` metadata
        allows users to override the type
  #have_been_delivered
    raises on undelivered mail
    does not raise otherwise
  #have_bounced
    does not raise otherwise
    raises on unbounced mail

ActionMailbox matchers
  receive_inbound_email
    passes when it receives inbound email
    passes when negated when it doesn't receive inbound email
    fails when negated when it receives inbound email
    fails when it doesn't receive inbound email

ActiveSupport::Relation match_array matcher
  fails if the scope encompasses more records than on the right hand side
  verifies that the scope returns the records on the right hand side, regardless of order
  fails if the scope encompasses fewer records than on the right hand side

HaveEnqueuedMail matchers
  have_enqueued_mail
    matches based on mailer class and method name
    generates a failure message when given only mailer argument
    generates a failure message
    passes when using the enqueue_mail alias
    generates a failure message with arguments
    throws descriptive error when no test adapter set
    passes with multiple emails
    passes when given 0 arguments
    passes when only given mailer argument
    passes with at_least when enqueued emails are over the limit
    generates a failure message with at least hint
    passes multiple arguments to with block
    only calls with block if other conditions are met
    passes when negated with 0 arguments
    generates a failure message when given 0 argument
    generates a failure message with unmatching enqueued mail jobs
    fails with with block with incorrect data
    accepts composable matchers as an at date
    passes with :thrice count
    passes when deliver_later is called with a wait_until argument
    ensure that the right mailer is enqueued
    generates a failure message with at
    counts only emails enqueued in the block
    passes with :once count
    fails when too many emails are enqueued
    passes for mailer methods with default arguments
    passes when negated
    generates a failure message with on_queue
    passes when deliver_later is called with a queue argument
    passes when negated with only mailer arguments
    passes when using the have_enqueued_email alias
    passes with at_most when enqueued emails are under the limit
    passes when using the enqueue_email alias
    fails when negated and mail is enqueued
    passes for mailer methods that accept arguments when the provided argument matcher is not used
    generates a failure message with at most hint
    passes with :twice count
    passes with provided argument matchers
    passes when a mailer method is called with deliver_later
    mailer job is unified
      passes with provided argument matchers
      passes when mixing parameterized and non-parameterized emails
      passes when using a mailer with `delivery_job` set to a sub class of `ActionMailer::DeliveryJob`
      passes when mailer is parameterized
    when parameterized
      passes when mixing parameterized and non-parameterized emails
      passes with provided argument matchers
      passes when mailer is parameterized

RSpec::Rails::FixtureFileUploadSupport
  with fixture path set in spec
    resolves fixture file
  with fixture path not set
    resolves fixture using relative path
  with fixture path set in config
    resolves fixture file
    resolves supports `Pathname` objects

have_rendered
  given a string
    delegates to assert_template
  given a symbol
    converts to_s and delegates to assert_template
  with should
    when assert_template fails
      uses failure message from assert_template
    when assert_template passes
      passes
    when fails due to some other exception
      raises that exception
  given a hash
    delegates to assert_template
  with should_not
    when fails with a redirect
      gives informative error message
      with a badly formatted error message
        falls back to something informative
    when fails due to some other exception
      raises that exception
    when assert_template passes
      fails with custom failure message
    when assert_template fails
      passes

RSpec::Rails::MinitestAssertionAdapter
  exposes assert_pattern to host examples
  does not expose internal methods of Minitest
  exposes flunk to host examples
  exposes assert_equal to host examples
  exposes refute_respond_to to host examples
  does not leak TestUnit specific methods into the AssertionDelegator
  exposes assert_match to host examples
  exposes refute_in_epsilon to host examples
  exposes assert to host examples
  exposes refute_match to host examples
  exposes refute_includes to host examples
  exposes assert_kind_of to host examples
  exposes assert_predicate to host examples
  exposes assert_throws to host examples
  exposes assert_respond_to to host examples
  exposes refute_path_exists to host examples
  exposes refute_pattern to host examples
  exposes refute_same to host examples
  exposes assert_instance_of to host examples
  exposes assert_raises to host examples
  exposes refute_equal to host examples
  exposes refute to host examples
  exposes assert_silent to host examples
  exposes refute_nil to host examples
  does not expose Minitest's message method
  exposes assert_empty to host examples
  exposes assert_same to host examples
  exposes refute_predicate to host examples
  exposes assert_output to host examples
  exposes assert_operator to host examples
  exposes assert_includes to host examples
  exposes assert_path_exists to host examples
  exposes refute_in_delta to host examples
  exposes assert_nil to host examples
  exposes refute_operator to host examples
  exposes assert_send to host examples
  exposes assert_in_epsilon to host examples
  exposes assert_in_delta to host examples
  exposes refute_instance_of to host examples
  exposes refute_empty to host examples
  exposes refute_kind_of to host examples

ActiveModel support
  with partial double verification disabled
    allows you to stub `ActiveModel`
    allows you to stub instances of `ActiveModel`
  with partial double verification enabled
    allows you to stub `ActiveModel`
    allows you to stub instances of `ActiveModel`

RSpec::Rails::ViewSpecMethods
  .add_extra_params_accessors_to
    when accessors are already defined
      does not redefine them
    when accessors are not yet defined
      adds them as instance methods
      the added #extra_params reader
        raises an error when a user tries to mutate it
  .remove_extra_params_accessors_from
    when accessors are not defined
      does nothing
    when accessors are defined
      removes them

should have_xxx
  works with ActiveRecord::Associations::CollectionProxy

Pending: (Failures listed here are expected and do not affect your suite's status)

  1) Configuration clears ActionMailer::Base::Deliveries after each example only has deliveries from this test (e.g. from email at example.com)
     # Temporarily skipped with xit
     # ./spec/rspec/rails/configuration_spec.rb:283

  2) Configuration clears ActionMailer::Base::Deliveries after each example only has deliveries from this test (e.g. from email_2 at example.com)
     # Temporarily skipped with xit
     # ./spec/rspec/rails/configuration_spec.rb:289

Failures:

  1) RSpec::Rails::ViewExampleGroup#params delegates to the controller
     Failure/Error: @controller ||= OpenStruct.new(params: nil)

     NameError:
       uninitialized constant RSpec::Rails::OpenStruct
     # ./spec/rspec/rails/example/view_example_group_spec.rb:190:in `controller'
     # ./spec/rspec/rails/example/view_example_group_spec.rb:196:in `block (3 levels) in <module:Rails>'
     # ./spec/spec_helper.rb:74:in `block (3 levels) in <top (required)>'
     # ./spec/spec_helper.rb:68:in `block (2 levels) in <top (required)>'

Finished in 1.38 seconds (files took 1.33 seconds to load)
781 examples, 1 failure, 2 pending

Failed examples:

rspec ./spec/rspec/rails/example/view_example_group_spec.rb:195 # RSpec::Rails::ViewExampleGroup#params delegates to the controller

Randomized with seed 21986

/usr/bin/ruby3.3 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.13.1/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.13.0/exe/rspec ./spec/rspec/rails/active_model_spec.rb ./spec/rspec/rails/active_record_spec.rb ./spec/rspec/rails/assertion_adapter_spec.rb ./spec/rspec/rails/assertion_delegator_spec.rb ./spec/rspec/rails/configuration_spec.rb ./spec/rspec/rails/example/channel_example_group_spec.rb ./spec/rspec/rails/example/controller_example_group_spec.rb ./spec/rspec/rails/example/feature_example_group_spec.rb ./spec/rspec/rails/example/helper_example_group_spec.rb ./spec/rspec/rails/example/job_example_group_spec.rb ./spec/rspec/rails/example/mailbox_example_group_spec.rb ./spec/rspec/rails/example/model_example_group_spec.rb ./spec/rspec/rails/example/request_example_group_spec.rb ./spec/rspec/rails/example/routing_example_group_spec.rb ./spec/rspec/rails/example/system_example_group_spec.rb ./spec/rspec/rails/example/view_example_group_spec.rb ./spec/rspec/rails/fixture_file_upload_support_spec.rb ./spec/rspec/rails/fixture_support_spec.rb ./spec/rspec/rails/matchers/action_cable/have_broadcasted_to_spec.rb ./spec/rspec/rails/matchers/action_cable/have_stream_spec.rb ./spec/rspec/rails/matchers/action_mailbox_spec.rb ./spec/rspec/rails/matchers/active_job_spec.rb ./spec/rspec/rails/matchers/be_a_new_spec.rb ./spec/rspec/rails/matchers/be_new_record_spec.rb ./spec/rspec/rails/matchers/be_routable_spec.rb ./spec/rspec/rails/matchers/be_valid_spec.rb ./spec/rspec/rails/matchers/has_spec.rb ./spec/rspec/rails/matchers/have_enqueued_mail_spec.rb ./spec/rspec/rails/matchers/have_http_status_spec.rb ./spec/rspec/rails/matchers/have_rendered_spec.rb ./spec/rspec/rails/matchers/redirect_to_spec.rb ./spec/rspec/rails/matchers/relation_match_array_spec.rb ./spec/rspec/rails/matchers/route_to_spec.rb ./spec/rspec/rails/minitest_lifecycle_adapter_spec.rb ./spec/rspec/rails/setup_and_teardown_adapter_spec.rb ./spec/rspec/rails/view_rendering_spec.rb ./spec/rspec/rails/view_spec_methods_spec.rb ./spec/rspec/rails_spec.rb --format documentation failed
ERROR: Test "ruby3.3" failed. Exiting.
dh_auto_install: error: dh_ruby --install /<<PKGBUILDDIR>>/debian/ruby-rspec-rails returned exit code 1
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:

https://people.debian.org/~sanvila/build-logs/202501/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:ruby-rspec-rails, so that this is still
visible in the BTS web page for this package.

Thanks.



More information about the Pkg-ruby-extras-maintainers mailing list