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.

Reply via email to