[DRE-maint] Bug#1123475: ruby-unparser: FTBFS: Failure/Error: it { should eql(expectation) }

Santiago Vila sanvila at debian.org
Tue Dec 16 20:29:54 GMT 2025


Package: src:ruby-unparser
Version: 0.6.13-1
Severity: serious
Tags: ftbfs forky sid

Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

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

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 cannot 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-unparser, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=ruby --with ruby
   dh_auto_clean -O--buildsystem=ruby
	dh_ruby --clean
   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
	dh_ruby --build
   dh_auto_test -O--buildsystem=ruby

[... snipped ...]

      is idempotent

Unparser::Either::Right
  #right?
    returns true
  #from_left
    with block
      calls block with right value
      returns block value
    without block
      raises RuntimeError error
  #lmap
    returns self
    without block
      is expected to raise LocalJumpError
    with block
      does not evaluate block
  #fmap
    evaluates block and returns its wrapped result
    without block
      is expected to raise LocalJumpError
  #bind
    evaluates block and returns its wrapped result
    without block
      is expected to raise LocalJumpError
  #either
    evaluates block and returns its wrapped result
  #left?
    returns false
  #from_right
    returns right value
    with block
      does not evaluate block

Unparser::Color
  #format
    RED
      #format
        returns formatted string
    GREEN
      #format
        returns formatted string
    NONE
      returns original input

Unparser::Diff
  .build
    is expected to eql #<Unparser::Diff old=["foo", "bar"] new=["bar", "baz"]>
  #diff
    when there is a diff at begin of hunk
      is expected to eql "@@ -1 +1 @@\n-foo\n+baz\n" (FAILED - 2)
      it should behave like an idempotent method
        is idempotent
    when the diff has a long context at end, inserting
      is expected to eql "@@ -1 +1,2 @@\n+other\n foo\n" (FAILED - 3)
      it should behave like an idempotent method
        is idempotent
    when there is a diff at begin and end
      is expected to eql "@@ -1,4 +1,4 @@\n-foo\n+baz\n bar\n-foo\n+baz\n" (FAILED - 4)
      it should behave like an idempotent method
        is idempotent
    when the diff has a long context at end, deleting
      is expected to eql "@@ -1,2 +1 @@\n-other\n foo\n" (FAILED - 5)
      it should behave like an idempotent method
        is idempotent
    when the diff has a long context at begin
      is expected to eql "@@ -1,8 +1,9 @@\n foo\n bar\n baz\n boz\n a\n b\n c\n+other\n" (FAILED - 6)
      it should behave like an idempotent method
        is idempotent
    when there is no diff
      is expected to equal nil
      it should behave like an idempotent method
        is idempotent
    when there is a diff NOT at begin of hunk
      is expected to eql "@@ -1,2 +1,3 @@\n foo\n+baz\n bar\n"
      it should behave like an idempotent method
        is idempotent
  #colorized_diff
    when there is a diff at begin of hunk
      is expected to eql "@@ -1 +1 @@\n\e[31m-foo\n\e[0m\e[32m+baz\n\e[0m" (FAILED - 7)
      it should behave like an idempotent method
        is idempotent
    when there is no diff
      is expected to equal nil
      it should behave like an idempotent method
        is idempotent

Unparser::Emitter.handle
  should register emitter

Failures:

  1) Unparser::Validation on generating different node returns expected report
     Failure/Error:
       expect(report).to eql(<<~'REPORT' + diff.join)
         example-identification
         Original-Source:
         1.foo
         Generated-Source:
         1.foo
         Original-Node:
         (send
           (int 1) :foo)
         Generated-Node:

       expected: "example-identification\nOriginal-Source:\n1.foo\nGenerated-Source:\n1.foo\nOriginal-Node:\n(send\n  ...r)\nNode-Diff:\n@@ -1,3 +1,3 @@\n (send\n\e[31m-  (int 1) :foo)\n\e[0m\e[32m+  (int 1) :bar)\n\e[0m"
            got: "example-identification\nOriginal-Source:\n1.foo\nGenerated-Source:\n1.foo\nOriginal-Node:\n(send\n  ...r)\nNode-Diff:\n@@ -1,2 +1,2 @@\n (send\n\e[31m-  (int 1) :foo)\n\e[0m\e[32m+  (int 1) :bar)\n\e[0m"

       (compared using eql?)

       Diff:
       @@ -10,7 +10,7 @@
        (send
          (int 1) :bar)
        Node-Diff:
       -@@ -1,3 +1,3 @@
       +@@ -1,2 +1,2 @@
         (send
        -  (int 1) :foo)
        +  (int 1) :bar)
     # ./spec/unit/unparser/validation_spec.rb:207:in `block (3 levels) in <top (required)>'
     # ./spec/spec_helper.rb:10:in `block in <top (required)>'

  2) Unparser::Diff#diff when there is a diff at begin of hunk is expected to eql "@@ -1 +1 @@\n-foo\n+baz\n"
     Failure/Error: it { should eql(expectation) }

       expected: "@@ -1 +1 @@\n-foo\n+baz\n"
            got: "@@ -1,2 +1,2 @@\n-foo\n+baz\n bar\n"

       (compared using eql?)

       Diff:

       @@ -1,3 +1,4 @@
       -@@ -1 +1 @@
       +@@ -1,2 +1,2 @@
        -foo
        +baz
       + bar
     # ./spec/unit/unparser/diff_spec.rb:86:in `block (4 levels) in <top (required)>'
     # ./spec/spec_helper.rb:10:in `block in <top (required)>'

  3) Unparser::Diff#diff when the diff has a long context at end, inserting is expected to eql "@@ -1 +1,2 @@\n+other\n foo\n"
     Failure/Error: it { should eql(expectation) }

       expected: "@@ -1 +1,2 @@\n+other\n foo\n"
            got: "@@ -1,7 +1,8 @@\n+other\n foo\n bar\n baz\n boz\n a\n b\n c\n"

       (compared using eql?)

       Diff:

       @@ -1,3 +1,9 @@
       -@@ -1 +1,2 @@
       +@@ -1,7 +1,8 @@
        +other
         foo
       + bar
       + baz
       + boz
       + a
       + b
       + c
     # ./spec/unit/unparser/diff_spec.rb:161:in `block (4 levels) in <top (required)>'
     # ./spec/spec_helper.rb:10:in `block in <top (required)>'

  4) Unparser::Diff#diff when there is a diff at begin and end is expected to eql "@@ -1,4 +1,4 @@\n-foo\n+baz\n bar\n-foo\n+baz\n"
     Failure/Error: it { should eql(expectation) }

       expected: "@@ -1,4 +1,4 @@\n-foo\n+baz\n bar\n-foo\n+baz\n"
            got: "@@ -1,3 +1,3 @@\n-foo\n+baz\n bar\n-foo\n+baz\n"

       (compared using eql?)

       Diff:
       @@ -1,4 +1,4 @@
       -@@ -1,4 +1,4 @@
       +@@ -1,3 +1,3 @@
        -foo
        +baz
         bar
     # ./spec/unit/unparser/diff_spec.rb:69:in `block (4 levels) in <top (required)>'
     # ./spec/spec_helper.rb:10:in `block in <top (required)>'

  5) Unparser::Diff#diff when the diff has a long context at end, deleting is expected to eql "@@ -1,2 +1 @@\n-other\n foo\n"
     Failure/Error: it { should eql(expectation) }

       expected: "@@ -1,2 +1 @@\n-other\n foo\n"
            got: "@@ -1,8 +1,7 @@\n-other\n foo\n bar\n baz\n boz\n a\n b\n c\n"

       (compared using eql?)

       Diff:

       @@ -1,3 +1,9 @@
       -@@ -1,2 +1 @@
       +@@ -1,8 +1,7 @@
        -other
         foo
       + bar
       + baz
       + boz
       + a
       + b
       + c
     # ./spec/unit/unparser/diff_spec.rb:144:in `block (4 levels) in <top (required)>'
     # ./spec/spec_helper.rb:10:in `block in <top (required)>'

  6) Unparser::Diff#diff when the diff has a long context at begin is expected to eql "@@ -1,8 +1,9 @@\n foo\n bar\n baz\n boz\n a\n b\n c\n+other\n"
     Failure/Error: it { should eql(expectation) }

       expected: "@@ -1,8 +1,9 @@\n foo\n bar\n baz\n boz\n a\n b\n c\n+other\n"
            got: "@@ -1,7 +1,8 @@\n foo\n bar\n baz\n boz\n a\n b\n c\n+other\n"

       (compared using eql?)

       Diff:
       @@ -1,4 +1,4 @@
       -@@ -1,8 +1,9 @@
       +@@ -1,7 +1,8 @@
         foo
         bar
         baz
     # ./spec/unit/unparser/diff_spec.rb:127:in `block (4 levels) in <top (required)>'
     # ./spec/spec_helper.rb:10:in `block in <top (required)>'

  7) Unparser::Diff#colorized_diff when there is a diff at begin of hunk is expected to eql "@@ -1 +1 @@\n\e[31m-foo\n\e[0m\e[32m+baz\n\e[0m"
     Failure/Error: it { should eql(expectation) }

       expected: "@@ -1 +1 @@\n\e[31m-foo\n\e[0m\e[32m+baz\n\e[0m"
            got: "@@ -1,2 +1,2 @@\n\e[31m-foo\n\e[0m\e[32m+baz\n\e[0m bar\n"

       (compared using eql?)

       Diff:

       @@ -1,4 +1,4 @@
       -@@ -1 +1 @@
       +@@ -1,2 +1,2 @@
        -foo
        +baz
       -
       + bar
     # ./spec/unit/unparser/diff_spec.rb:34:in `block (4 levels) in <top (required)>'
     # ./spec/spec_helper.rb:10:in `block in <top (required)>'

Finished in 0.38044 seconds (files took 0.22006 seconds to load)
507 examples, 7 failures

Failed examples:

rspec ./spec/unit/unparser/validation_spec.rb:200 # Unparser::Validation on generating different node returns expected report
rspec ./spec/unit/unparser/diff_spec.rb:86 # Unparser::Diff#diff when there is a diff at begin of hunk is expected to eql "@@ -1 +1 @@\n-foo\n+baz\n"
rspec ./spec/unit/unparser/diff_spec.rb:161 # Unparser::Diff#diff when the diff has a long context at end, inserting is expected to eql "@@ -1 +1,2 @@\n+other\n foo\n"
rspec ./spec/unit/unparser/diff_spec.rb:69 # Unparser::Diff#diff when there is a diff at begin and end is expected to eql "@@ -1,4 +1,4 @@\n-foo\n+baz\n bar\n-foo\n+baz\n"
rspec ./spec/unit/unparser/diff_spec.rb:144 # Unparser::Diff#diff when the diff has a long context at end, deleting is expected to eql "@@ -1,2 +1 @@\n-other\n foo\n"
rspec ./spec/unit/unparser/diff_spec.rb:127 # Unparser::Diff#diff when the diff has a long context at begin is expected to eql "@@ -1,8 +1,9 @@\n foo\n bar\n baz\n boz\n a\n b\n c\n+other\n"
rspec ./spec/unit/unparser/diff_spec.rb:34 # Unparser::Diff#colorized_diff when there is a diff at begin of hunk is expected to eql "@@ -1 +1 @@\n\e[31m-foo\n\e[0m\e[32m+baz\n\e[0m"

Randomized with seed 58893

/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 --pattern ./spec/\*\*/\*_spec.rb --format documentation failed
mv ./.gem2deb.Gemfile.lock Gemfile.lock
/usr/lib/ruby/vendor_ruby/gem2deb.rb:52:in `run': /usr/bin/ruby3.3 /usr/bin/gem2deb-test-runner (Gem2Deb::CommandFailed)
	from /usr/lib/ruby/vendor_ruby/gem2deb.rb:64:in `block in run_ruby'
	from /usr/lib/ruby/vendor_ruby/gem2deb.rb:87:in `maybe_crossbuild'
	from /usr/lib/ruby/vendor_ruby/gem2deb.rb:63:in `run_ruby'
	from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:189:in `run_tests_for_version'
	from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:176:in `block in run_tests'
	from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:175:in `each'
	from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:175:in `run_tests'
	from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:71:in `run_tests'
	from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:57:in `install'
	from /usr/lib/ruby/vendor_ruby/gem2deb/dh_ruby.rb:163:in `install'
	from /usr/bin/dh_ruby:89:in `<main>'
dh_auto_install: error: dh_ruby --install /<<PKGBUILDDIR>>/debian/ruby-unparser returned exit code 1
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------



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