Source: python-sure Version: 1.2.5-6 Severity: serious Justification: FTBFS Tags: bookworm sid ftbfs User: lu...@debian.org Usertags: ftbfs-20211220 ftbfs-bookworm
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > make[1]: pyversions: No such file or directory > py3versions: no X-Python3-Version in control file, using supported versions > set -x ; set -e ; for i in 3.10 3.9 ; do \ > python$i -m nose -v ; \ > done > + set -e > + python3.10 -m nose -v > this, it, these and those are all synonyms ... ok > this(4).should.equal(2 + 2) ... ok > this(1).should.be.within(0, 2) ... ok > this(True).should.be.ok ... ok > this(False).should.be.false ... ok > this(None).should.be.none ... ok > this(None).should.be.none ... ERROR > this(function).should.be.callable ... ok > this(iterable).should.be.empty ... ok > this(iterable).should.have.length_of(N) ... ok > this(X).should.be.greater_than(Y) ... ok > this(X).should.be.greater_than_or_equal_to(Y) ... ok > this(X).should.be.lower_than(Y) ... ok > this(X).should.be.lower_than_or_equal_to(Y) ... ok > this(X).should.be(X) when X is a reference to the same object ... ok > this(instance).should.have.property(property_name) ... ok > this(instance).should.have.property(property_name).being or .with_value > should allow chain up ... ok > this(dictionary).should.have.key(key_name) ... ok > this(dictionary).should.have.key(key_name).being or .with_value should allow > chain up ... ok > this(' aa ... ok > test usage of repr() inside expect(complex1).to.equal(complex2) ... ok > test usage of repr() inside expect(complex1).to.equal(complex2) ... ok > expect('some string').to.match(r'\w{4} \w{6}') matches regex ... ok > expect('some string').to.contain('tri') ... ERROR > test_assertion_builder.test_catching_exceptions ... ok > test_assertion_builder.test_catching_exceptions_with_params ... ok > test_assertion_builder.test_success_with_params ... ok > test_assertion_builder.test_success_with_params_exception ... ok > anything that inherits from object should be patched ... ok > dir(obj) should conceal names of methods that were grafted by sure ... ok > sure.with_context() runs setup before the function itself ... ok > sure.that_with_context() when no context is given it fails ... FAIL > sure.that_with_context() in a failing test ... ok > sure.with_context() runs teardown before the function itself ... ok > that() is_a(object) ... ok > that() equals(string) ... ok > that() differs(object) ... ok > that() has(object) ... FAIL > that().at(object).equals(object) ... ok > that() len_is(number) ... ok > that() len_greater_than(number) ... ok > that() len_greater_than(number) raise AssertionError ... ok > that() len_greater_than_or_equals(number) ... ok > that() len_greater_than_or_equals(number) raise AssertionError ... ok > that() len_lower_than(number) ... ok > that() len_lower_than(number) raise AssertionError ... ok > that() len_lower_than_or_equals(number) ... ok > that() len_lower_than_or_equals(number) raise AssertionError ... ok > that(iterable).the_attribute('name').equals('value') ... ok > that(iterable, within_range=(1, 2)).the_attribute('name').equals('value') ... > ok > that(iterable).every_one_is('value') ... ok > that(iterable).in_each('').equals('value') ... ok > that(callable, with_args=[arg1], and_kwargs={'arg2': > 'value'}).raises(SomeException) ... ok > that('String\n with BREAKLINE').looks_like('string with breakline') ... ok > that(callable, with_args=['foo']).raises(FooError) ... ok > that(callable).doesnt_raise(FooError) and does_not_raise ... ok > that('foobar').contains('foo') ... ok > that('foobar').does_not_contain('123'), .doesnt_contain ... ok > that('foobar').contains(None) ... ok > that(None).contains('bungalow') ... ok > that(some_iterable).is_empty and that(something).are_empty ... ok > that(something_not_iterable).is_empty and > that(something_not_iterable).are_empty raises ... ok > that(something_iterable).matches(another_iterable) ... ok > within(five=miliseconds) will pass ... ok > within(five=miliseconds) will fail ... ok > test_old_api.test_word_to_number ... ok > test_old_api.test_word_to_number_fail ... ok > testing microseconds convertion ... ok > testing miliseconds convertion ... ok > testing seconds convertion ... ok > testing minutes convertion ... ok > within(five=miliseconds) gives utc parameter ... ok > that.is_a_matcher should absorb callables to be used as matcher ... ok > sure.with_context() accepts a list of callbacks for setup ... ok > sure.with_context() runs teardown before the function itself ... ok > @scenario aliases @that_with_context for setup and teardown ... ok > the actions always returns the context ... ok > the actions should be able to declare the variables they provide ... ok > it fails when an action doesn't fulfill its agreements ... ok > it fails when an action depends on some attribute that is not provided by any > other previous action ... ok > it fails when an action depends on some attribute that is being provided by > other actions ... ok > that(dict(name='foobar')).contains('name') ... ok > that(['foobar', '123']).contains('foobar') ... ok > that(set(['foobar', '123']).contains('foobar') ... ok > that(('foobar', '123')).contains('foobar') ... ok > VariablesBag() provides a meaningful error when attr does not exist ... ok > the actions should be able to declare the variables they provide ... ok > that() deep_equals(dict) succeeding on level 1 ... ok > that() deep_equals(dict) failing on level 1 ... ok > that(list) deep_equals(list) succeeding on level 1 ... ok > that(list) deep_equals(list) failing on level 1 ... ok > that(list) deep_equals(list) failing by length (len(X) > len(Y)) ... ok > that(list) deep_equals(list) failing by length (len(Y) > len(X)) ... ok > that(X) deep_equals(Y) fails when Y is missing a key that X has ... ok > that(X) deep_equals(Y) fails with basic vc complex type ... ok > that(X) deep_equals(Y) fails with complex vc basic type ... ok > that(tuple) deep_equals(tuple) succeeding on level 1 ... ok > that(tuple) deep_equals(tuple) failing on level 1 ... ok > that(tuple) deep_equals(tuple) failing by length (len(X) > len(Y)) ... ok > that(tuple) deep_equals(tuple) failing by length (len(Y) > len(X)) ... ok > that() deep_equals(dict) falling back to generic comparator ... ok > that() deep_equals(dict) with generic comparator failing ... ok > that() deep_equals(dict) with generic comparator failing ... ok > that() deep_equals(dict) succeeding on level 2 ... ok > that() deep_equals(dict) succeeding on level 2 ... ok > that() deep_equals(dict) failing on level 2 ... ok > that() deep_equals(dict) failing on level 3 ... ok > that() deep_equals(dict) failing on level 3 when missing a key ... ok > that() deep_equals(dict) failing on level 3 when has an extra key ... ok > that() deep_equals(dict) failing on level 3 when has an extra key ... ok > that(list) deep_equals(list) failing by length (len(X) > len(Y)) ... ok > that(list) deep_equals(list) failing by length (len(Y) > len(X)) ... ok > @sure.work_in_progress should set an internal flag into `sure` ... ok > that() equals(string) when it's supposed to fail ... ok > that(callable).raises('message') should compare the message ... ok > test_old_api.test_deep_equals_weird ... ok > safe_repr should display a simple list ... ok > safe_repr should return a sorted repr ... ok > dicts nested inside values should also get sorted ... ok > dicts with unicode should work properly ... ok > > ====================================================================== > ERROR: this(None).should.be.none > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/nose/case.py", line 197, in runTest > self.test(*self.arg) > File "/<<PKGBUILDDIR>>/tests/test_assertion_builder.py", line 136, in > test_should_be_a > assert this([]).should.be.a('collections.Iterable') > File "/<<PKGBUILDDIR>>/sure/__init__.py", line 376, in wrapper > value = func(self, *args, **kw) > File "/<<PKGBUILDDIR>>/sure/__init__.py", line 653, in an > klass = reduce(getattr, items, __import__(first)) > AttributeError: module 'collections' has no attribute 'Iterable' > > ====================================================================== > ERROR: expect('some string').to.contain('tri') > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/nose/case.py", line 197, in runTest > self.test(*self.arg) > File "/<<PKGBUILDDIR>>/tests/test_assertion_builder.py", line 566, in > test_match_contain > assert this("some string").should.contain("tri") > File "/<<PKGBUILDDIR>>/sure/__init__.py", line 376, in wrapper > value = func(self, *args, **kw) > File "/<<PKGBUILDDIR>>/sure/__init__.py", line 815, in contain > return expect(what).to.be.within(self.obj) > File "/<<PKGBUILDDIR>>/sure/__init__.py", line 376, in wrapper > value = func(self, *args, **kw) > File "/<<PKGBUILDDIR>>/sure/__init__.py", line 593, in within > collection_should = AssertionHelper(list(range(*args))) > TypeError: 'str' object cannot be interpreted as an integer > > ====================================================================== > FAIL: sure.that_with_context() when no context is given it fails > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/<<PKGBUILDDIR>>/sure/old.py", line 118, in raises > self._src(*self._callable_args, **self._callable_kw) > File "/<<PKGBUILDDIR>>/sure/__init__.py", line 144, in wrap > res = test.apply(context) > File "/<<PKGBUILDDIR>>/sure/__init__.py", line 109, in apply > return self.callback(*args, **self.kwargs) > TypeError: test_context_is_not_optional.<locals>.it_crashes() takes 0 > positional arguments but 1 was given > > During handling of the above exception, another exception occurred: > > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/nose/case.py", line 197, in runTest > self.test(*self.arg) > File "/<<PKGBUILDDIR>>/tests/test_old_api.py", line 58, in > test_context_is_not_optional > assert that(it_crashes).raises( > File "/<<PKGBUILDDIR>>/sure/old.py", line 133, in raises > raise AssertionError(''' > AssertionError: <function test_context_is_not_optional.<locals>.it_crashes at > 0x7f47fa497be0> raised TypeError, but the exception message does not > match. > > EXPECTED: > the function it_crashes defined at test_old_api.py line 55, is being > decorated by either @that_with_context or @scenario, so it should take at > least 1 parameter, which is the test context > > GOT: > test_context_is_not_optional.<locals>.it_crashes() takes 0 positional > arguments but 1 was given > > ====================================================================== > FAIL: that() has(object) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/usr/lib/python3/dist-packages/nose/case.py", line 197, in runTest > self.test(*self.arg) > File "/<<PKGBUILDDIR>>/tests/test_old_api.py", line 152, in test_that_has > assert that(name).has("john") > File "/<<PKGBUILDDIR>>/sure/old.py", line 64, in wrap > assert ret, msg % (self._src, what) > AssertionError: 'john' should have 'john', but have not > > ---------------------------------------------------------------------- > Ran 120 tests in 0.740s > > FAILED (errors=2, failures=2) > make[1]: *** [debian/rules:22: override_dh_auto_test] Error 1 The full build log is available from: http://qa-logs.debian.net/2021/12/20/python-sure_1.2.5-6_unstable.log A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please marking it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.