Your message dated Wed, 22 Dec 2021 09:33:56 +0000
with message-id <e1mzy0s-0006eg...@fasolo.debian.org>
and subject line Bug#1002433: fixed in python-sure 2.0.0-1
has caused the Debian Bug report #1002433,
regarding python-sure: FTBFS: AssertionError: 'john' should have 'john', but
have not
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)
--
1002433: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002433
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
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.
--- End Message ---
--- Begin Message ---
Source: python-sure
Source-Version: 2.0.0-1
Done: Thomas Goirand <z...@debian.org>
We believe that the bug you reported is fixed in the latest version of
python-sure, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 1002...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Thomas Goirand <z...@debian.org> (supplier of updated python-sure package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Format: 1.8
Date: Wed, 22 Dec 2021 09:39:17 +0100
Source: python-sure
Architecture: source
Version: 2.0.0-1
Distribution: unstable
Urgency: medium
Maintainer: Debian OpenStack <team+openst...@tracker.debian.org>
Changed-By: Thomas Goirand <z...@debian.org>
Closes: 1002321 1002433
Changes:
python-sure (2.0.0-1) unstable; urgency=medium
.
* New upstream release:
- unbreak python-httpretty FTBFS (Closes: #1002321).
- Fix FTBFS (Closes: #1002433).
* Remove all patches, not relevant anymore.
* Add python3-mock build-depends.
* Skip test_context_is_not_optional() test that is broken.
* Fix long and sort description to not include Python version.
* Switch to debhelper-compat = 11.
Checksums-Sha1:
eefb66035aa249b877f512cfc606284911495a6a 2076 python-sure_2.0.0-1.dsc
37a97f7715d43a4589144514a65ecf78aad6b92b 55012 python-sure_2.0.0.orig.tar.xz
b31ef894e617fa918db60d57aa270d3bd4179fde 3528 python-sure_2.0.0-1.debian.tar.xz
d0bf041f8a962f6f9f4a123f4040cd40a5d971cc 7038
python-sure_2.0.0-1_amd64.buildinfo
Checksums-Sha256:
5da7436bc60694c33b1d892f549821f9ba8b9d411f27bf8fa993f970c07187df 2076
python-sure_2.0.0-1.dsc
2fc3144191a71eeff4cbc56645a2b88192c6aca74f9958af320176297064db3b 55012
python-sure_2.0.0.orig.tar.xz
ca5fec2e2ac34b78f6d64590c0c9c445fb7ba67eb0b9082cc6e30d32ddaa52f8 3528
python-sure_2.0.0-1.debian.tar.xz
8c6c2c5f9e8d22eebd4ae194e425fca351001317d806d06a530f71681cc5e7a1 7038
python-sure_2.0.0-1_amd64.buildinfo
Files:
b9d2057f9c459b8e3f226ba4cdf9a003 2076 python optional python-sure_2.0.0-1.dsc
a90729968d86952b70768b008ae3fe26 55012 python optional
python-sure_2.0.0.orig.tar.xz
c52caf220d40adf5497f221667ed673f 3528 python optional
python-sure_2.0.0-1.debian.tar.xz
a7f6121153b9d2dc9659701c6ff1029c 7038 python optional
python-sure_2.0.0-1_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEoLGp81CJVhMOekJc1BatFaxrQ/4FAmHC7ncACgkQ1BatFaxr
Q/4pJA//YNLUgnPZpvWeE7yOtvYLMkW0SC/V36UA2V+RS12QEb/36eZ5zAJWSa66
gvUP+Nxic3c5OoloDtmFTfj5MfB3+bSCYoSQGsZUe7NzOCv5zCOLFB+RVuM103X9
N/0TxLI3Myc0FOCCOduFoWIYJZc+Mophs2ZdqpTL32NH2lAqGSLQ/2tVeJyDuI0H
ALtf+tUXapC+E+2czHPOLBonGtPe4yAATpNW3vWkapOrBeccy3jF7UX8+lhSe+0h
FFH+/7VrFx7HGn+AZ+sS/8+9kTj2GdIz/3MfVIFDuKkXrwpeHHOgmHZk+1nXQXcL
N0lGRMibDJt6Spdx9+rPwpdkXfSAgvz4YMoZBhOpFMoz7ualpnvy+h1pX90ZDFj7
Sp2Lf7T8ss69XR+I/jru2OIrCbgKi/oxZRhWULx32o7+r8ayTeVxc+Gnw304NBX5
CZWP9xTXIkqeDdPU6ZYpn7ZTUh5JNWVJn8wCSbscZdeofdBSztNv9uxhpa95F7F4
hhlxlMZ3HkJ/ywTH62IM8fbxm/2USWdLE0GBWD5P9gi10NQSlLzm+goMcOu92neC
2+NHaVAW9/WuQzMj034LMNrWfPRXVO0HSM0QDxiubrN2gCEwVemhUCwfC9J1sAgD
Y0kpbCRpV76gb891SF6wm3ERp+s7wxwlpLVwewMmCdv94DIz4X4=
=m0VL
-----END PGP SIGNATURE-----
--- End Message ---