[DRE-maint] Bug#1084360: ruby-devise-two-factor: FTBFS: failing tests

Santiago Vila sanvila at debian.org
Mon Oct 7 09:40:54 BST 2024


Package: src:ruby-devise-two-factor
Version: 4.0.2-1
Severity: serious
Tags: ftbfs

Dear maintainer:

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

--------------------------------------------------------------------------------
[...]
  debian/rules build
dh build --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
	dh_ruby --build
    dh_auto_test -O--buildsystem=ruby
	dh_ruby --test
    create-stamp debian/debhelper-build-stamp
  fakeroot debian/rules binary
dh binary --buildsystem=ruby --with ruby
    dh_testroot -O--buildsystem=ruby
    dh_prep -O--buildsystem=ruby
    dh_auto_install --destdir=debian/ruby-devise-two-factor/ -O--buildsystem=ruby
	dh_ruby --install /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor

┌──────────────────────────────────────────────────────────────────────────────┐
│ Install files                                                                │
└──────────────────────────────────────────────────────────────────────────────┘

install -d /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby
install -D -m644 /<<PKGBUILDDIR>>/lib/devise-two-factor.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise-two-factor.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/models/two_factor_authenticatable.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/models/two_factor_authenticatable.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/models/two_factor_backupable.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/models/two_factor_backupable.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/models.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/models.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/spec_helpers/two_factor_authenticatable_shared_examples.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/spec_helpers/two_factor_authenticatable_shared_examples.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/spec_helpers/two_factor_backupable_shared_examples.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/spec_helpers/two_factor_backupable_shared_examples.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/spec_helpers.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/spec_helpers.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/strategies/two_factor_authenticatable.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/strategies/two_factor_authenticatable.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/strategies/two_factor_backupable.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/strategies/two_factor_backupable.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/strategies.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/strategies.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/devise_two_factor/version.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/devise_two_factor/version.rb
install -D -m644 /<<PKGBUILDDIR>>/lib/generators/devise_two_factor/devise_two_factor_generator.rb /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby/generators/devise_two_factor/devise_two_factor_generator.rb

┌──────────────────────────────────────────────────────────────────────────────┐
│ Install Rubygems integration metadata                                        │
└──────────────────────────────────────────────────────────────────────────────┘

generating gemspec at /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/share/rubygems-integration/all/specifications/devise-two-factor-4.0.2.gemspec
dh_installchangelogs -pruby-devise-two-factor /<<PKGBUILDDIR>>/CHANGELOG.md upstream
/usr/bin/ruby3.1 /usr/bin/gem2deb-test-runner

┌──────────────────────────────────────────────────────────────────────────────┐
│ Checking Rubygems dependency resolution on ruby3.1                           │
└──────────────────────────────────────────────────────────────────────────────┘

RUBYLIB=/<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby:. GEM_PATH=/<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/share/rubygems-integration/all:/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -e gem\ \"devise-two-factor\"
/usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1477:in `rescue in block in activate_dependencies': Could not find 'attr_encrypted' (>= 1.3, < 4, != 2) among 133 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/share/rubygems-integration/all:/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0' at: /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/share/rubygems-integration/all/specifications/devise-two-factor-4.0.2.gemspec, execute `gem env` for more information
	from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1474:in `block in activate_dependencies'
	from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1463:in `each'
	from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1463:in `activate_dependencies'
	from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1445:in `activate'
	from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_gem.rb:63:in `block in gem'
	from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_gem.rb:63:in `synchronize'
	from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_gem.rb:63:in `gem'
	from -e:1:in `<main>'
/usr/lib/ruby/vendor_ruby/rubygems/dependency.rb:317:in `to_specs': Could not find 'attr_encrypted' (>= 1.3, < 4, != 2) - did find: [attr_encrypted-4.1.0] (Gem::MissingSpecVersionError)
Checked in 'GEM_PATH=/<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/share/rubygems-integration/all:/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0' , execute `gem env` for more information
	from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1475:in `block in activate_dependencies'
	from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1463:in `each'
	from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1463:in `activate_dependencies'
	from /usr/lib/ruby/vendor_ruby/rubygems/specification.rb:1445:in `activate'
	from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_gem.rb:63:in `block in gem'
	from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_gem.rb:63:in `synchronize'
	from /usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_gem.rb:63:in `gem'
	from -e:1:in `<main>'
abbrev (default: 0.1.0)
actionpack (6.1.7.3)
actionview (6.1.7.3)
activemodel (6.1.7.3)
activesupport (6.1.7.3)
attr_encrypted (4.1.0)
base64 (default: 0.1.1)
bcrypt (3.1.18)
benchmark (default: 0.2.0)
bigdecimal (default: 3.1.1)
builder (3.2.4)
bundler (default: 2.3.7)
cgi (default: 0.3.5)
concurrent-ruby (1.2.3)
concurrent-ruby-edge (0.7.0)
crass (1.0.6)
csv (default: 3.2.2)
date (default: 3.2.2)
debug (1.4.0)
delegate (default: 0.2.0)
devise (4.9.3)
did_you_mean (default: 1.6.1)
diff-lcs (1.5.1)
digest (default: 3.1.0)
drb (default: 2.1.0)
encryptor (3.0.0)
english (default: 0.7.1)
erb (default: 2.2.3)
error_highlight (default: 0.3.0)
erubi (1.12.0)
etc (default: 1.3.0)
faker (2.21.0)
fcntl (default: 1.0.1)
fiddle (default: 1.1.0)
fileutils (default: 1.6.0)
find (default: 0.1.1)
forwardable (default: 1.3.2)
getoptlong (default: 0.1.1)
i18n (1.14.5)
io-console (default: 0.5.11)
io-nonblock (default: 0.1.0)
io-wait (default: 0.2.1)
ipaddr (default: 1.2.4)
irb (default: 1.4.1)
json (default: 2.6.1)
logger (default: 1.5.0)
loofah (2.22.0)
matrix (0.4.2)
method_source (1.0.0)
mini_portile2 (2.8.5)
minitest (5.15.0)
mutex_m (default: 0.1.1)
net-ftp (0.1.3)
net-http (default: 0.2.0)
net-imap (0.2.3)
net-pop (0.1.1)
net-protocol (default: 0.1.2)
net-smtp (0.3.1)
net-telnet (0.2.0)
nkf (default: 0.1.1)
nokogiri (1.16.4)
observer (default: 0.1.1)
open-uri (default: 0.2.0)
open3 (default: 0.1.1)
openssl (default: 3.0.1)
optparse (default: 0.2.0)
orm_adapter (0.5.0)
ostruct (default: 0.5.2)
pathname (default: 0.2.0)
pkg-config (1.5.6)
power_assert (2.0.1)
pp (default: 0.3.0)
prettyprint (default: 0.1.1)
prime (0.1.2)
pstore (default: 0.1.1)
psych (default: 4.0.3)
racc (1.6.2, default: 1.6.0)
rack (2.2.7)
rack-test (2.1.0)
rails-deprecated_sanitizer (1.0.4)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.4.4)
railties (6.1.7.3)
rake (13.2.1, 13.0.6)
rbs (2.1.0)
rdoc (default: 6.4.0)
readline (default: 0.0.3)
readline-ext (default: 0.1.4)
reline (default: 0.3.0)
resolv (default: 0.2.1)
resolv-replace (default: 0.1.0)
responders (3.0.1)
rexml (3.2.5)
rinda (default: 0.1.1)
rotp (6.2.0)
rspec (3.13.0)
rspec-core (3.13.0)
rspec-expectations (3.13.0)
rspec-mocks (3.13.0)
rspec-support (3.13.1)
rss (0.2.9)
ruby2_keywords (default: 0.0.5)
rubygems-update (3.4.20)
sdbm (1.0.0)
securerandom (default: 0.1.1)
set (default: 1.0.2)
shellwords (default: 0.1.0)
singleton (default: 0.1.1)
stringio (default: 3.0.1)
strscan (default: 3.0.1)
syslog (default: 0.1.0)
tempfile (default: 0.1.2)
test-unit (3.5.3)
thor (1.3.1)
time (default: 0.2.0)
timecop (0.9.10)
timeout (default: 0.2.0)
tmpdir (default: 0.1.2)
tsort (default: 0.1.0)
typeprof (0.21.2)
tzinfo (2.0.6)
un (default: 0.2.0)
uri (default: 0.11.0)
warden (1.2.8)
weakref (default: 0.1.1)
webrick (1.8.1)
xmlrpc (0.3.3)
yaml (default: 0.2.0)
zeitwerk (2.6.8)
zlib (default: 2.1.1)

┌──────────────────────────────────────────────────────────────────────────────┐
│ Run tests for ruby3.1 from debian/ruby-tests.rake                            │
└──────────────────────────────────────────────────────────────────────────────┘

RUBYLIB=/<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/lib/ruby/vendor_ruby:. GEM_PATH=/<<PKGBUILDDIR>>/debian/ruby-devise-two-factor/usr/share/rubygems-integration/all:/<<PKGBUILDDIR>>/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake --rakelibdir /gem2deb-nonexistent -f debian/ruby-tests.rake
/usr/bin/ruby3.1 -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 --pattern ./spec/\*\*/\*_spec.rb --format documentation

Randomized with seed 10782

Devise::Models::TwoFactorAuthenticatable
   When included in a class
     otp_secret options
       should be of the mode (FAILED - 1)
       should be of the key (FAILED - 2)
       should be of the mode (FAILED - 3)
     behaves like two_factor_authenticatable
       #otp_provisioning_uri
         should return uri with issuer option
         should return uri with specified account
       #otp_secret
         stores the encrypted otp_secret
         stores an iv for otp_secret
         stores a salt for otp_secret
         should be of the configured length
       #validate_and_consume_otp!
         validates a precisely correct OTP
         validates an OTP within the allowed drift
         validates a precisely correct OTP with whitespace
         fails a nil OTP value
         does not validate an OTP above the allowed drift
         does not validate an OTP below the allowed drift
         with a stored consumed_timestep
           given a valid OTP used multiple times within the allowed drift
             after the otp interval
               fails to validate
           given a valid OTP used multiple times within the allowed drift after a subsequent login
             after the otp interval
               fails to validate
           given a previously valid OTP within the allowed drift
             fails to validate
           given a precisely correct OTP
             fails to validate
       required_fields
         should have the attr_encrypted fields for otp_secret

Devise::Models::TwoFactorAuthenticatable
   When clean_up_passwords is called
     password_confirmation should be nill
     otp_attempt should be nill

Devise::Models::TwoFactorAuthenticatable
   When included in a class
     behaves like two_factor_authenticatable
       #otp_secret
         stores a salt for otp_secret
         should be of the configured length
         stores an iv for otp_secret
         stores the encrypted otp_secret
       required_fields
         should have the attr_encrypted fields for otp_secret
       #otp_provisioning_uri
         should return uri with specified account
         should return uri with issuer option
       #validate_and_consume_otp!
         validates an OTP within the allowed drift
         validates a precisely correct OTP
         fails a nil OTP value
         does not validate an OTP above the allowed drift
         does not validate an OTP below the allowed drift
         validates a precisely correct OTP with whitespace
         with a stored consumed_timestep
           given a previously valid OTP within the allowed drift
             fails to validate
           given a valid OTP used multiple times within the allowed drift
             after the otp interval
               fails to validate
           given a precisely correct OTP
             fails to validate
           given a valid OTP used multiple times within the allowed drift after a subsequent login
             after the otp interval
               fails to validate

Devise::Models::TwoFactorBackupable
   When included in a class
     behaves like two_factor_backupable
       #generate_otp_backup_codes!
         with existing recovery codes
           invalidates the existing recovery codes
         with no existing recovery codes
           generates the correct number of new recovery codes
           generates recovery codes of the correct length
           generates distinct recovery codes
           stores the codes as BCrypt hashes
       #invalidate_otp_backup_code!
         given an invalid recovery code
           returns false
         given a valid recovery code
           invalidates that recovery code
           does not invalidate the other recovery codes
           returns true
       required_fields
         has the attr_encrypted fields for otp_backup_codes

Failures:

   1) Devise::Models::TwoFactorAuthenticatable When included in a class otp_secret options should be of the mode
      Failure/Error: expect(subject.encrypted_attributes[:otp_secret][:mode]).to eq(:per_attribute_iv_and_salt)

      NoMethodError:
        undefined method `encrypted_attributes' for #<TwoFactorAuthenticatableWithCustomizeAttrEncryptedDouble:0x00007fa542beb038>

                expect(subject.encrypted_attributes[:otp_secret][:mode]).to eq(:per_attribute_iv_and_salt)
                              ^^^^^^^^^^^^^^^^^^^^^
        Did you mean?  encrypted_otp_secret_salt=
      # ./spec/devise/models/two_factor_authenticatable_spec.rb:71:in `block (4 levels) in <top (required)>'

   2) Devise::Models::TwoFactorAuthenticatable When included in a class otp_secret options should be of the key
      Failure/Error: expect(subject.encrypted_attributes[:otp_secret][:key]).to eq('test-key'*8)

      NoMethodError:
        undefined method `encrypted_attributes' for #<TwoFactorAuthenticatableWithCustomizeAttrEncryptedDouble:0x00007fa53e3b1420>

                expect(subject.encrypted_attributes[:otp_secret][:key]).to eq('test-key'*8)
                              ^^^^^^^^^^^^^^^^^^^^^
        Did you mean?  encrypted_otp_secret_salt=
      # ./spec/devise/models/two_factor_authenticatable_spec.rb:67:in `block (4 levels) in <top (required)>'

   3) Devise::Models::TwoFactorAuthenticatable When included in a class otp_secret options should be of the mode
      Failure/Error: expect(subject.encrypted_attributes[:otp_secret][:algorithm]).to eq('aes-256-cbc')

      NoMethodError:
        undefined method `encrypted_attributes' for #<TwoFactorAuthenticatableWithCustomizeAttrEncryptedDouble:0x00007fa53e3db220>

                expect(subject.encrypted_attributes[:otp_secret][:algorithm]).to eq('aes-256-cbc')
                              ^^^^^^^^^^^^^^^^^^^^^
        Did you mean?  encrypted_otp_secret_salt=
      # ./spec/devise/models/two_factor_authenticatable_spec.rb:75:in `block (4 levels) in <top (required)>'

Finished in 14.62 seconds (files took 0.58701 seconds to load)
49 examples, 3 failures

Failed examples:

rspec ./spec/devise/models/two_factor_authenticatable_spec.rb:70 # Devise::Models::TwoFactorAuthenticatable When included in a class otp_secret options should be of the mode
rspec ./spec/devise/models/two_factor_authenticatable_spec.rb:66 # Devise::Models::TwoFactorAuthenticatable When included in a class otp_secret options should be of the key
rspec ./spec/devise/models/two_factor_authenticatable_spec.rb:74 # Devise::Models::TwoFactorAuthenticatable When included in a class otp_secret options should be of the mode

Randomized with seed 10782

/usr/bin/ruby3.1 -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 --pattern ./spec/\*\*/\*_spec.rb --format documentation failed
ERROR: Test "ruby3.1" failed. Exiting.
dh_auto_install: error: dh_ruby --install /<<PKGBUILDDIR>>/debian/ruby-devise-two-factor returned exit code 1
make: *** [debian/rules:18: binary] Error 25
dpkg-buildpackage: error: fakeroot 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/202410/

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 affects, 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