test_multi_cell_list fails in python 3.7
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
Undecided
|
Matt Riedemann |
Bug Description
Generators used in multi cell list handling raise StopIteration, which is not something python 3.7 likes. Efforts to add python 3.7 testing to nova [1] revealed this (and similar for neighboring tests):
nova.tests.
-------
Captured traceback:
~~~~~~~~~~~~~~~~~~~
b'Traceback (most recent call last):'
b' File "/mnt/share/
b' for record in fn(ctx, *args, **kwargs):'
b' File "/mnt/share/
b' **kwargs)'
b' File "/mnt/share/
b' raise exception.
b'nova.
b''
b'During handling of the above exception, another exception occurred:'
b''
b'Traceback (most recent call last):'
b' File "/mnt/share/
b' raise StopIteration'
b'StopItera
b''
b'The above exception was the direct cause of the following exception:'
b''
b'Traceback (most recent call last):'
b' File "/mnt/share/
b' return func(*args, **keywargs)'
b' File "/mnt/share/
b' self.assertEqua
b' File "/mnt/share/
b' item = next(feeder)'
b' File "/mnt/share/
b' s[0] = next() # raises StopIteration when exhausted'
b'RuntimeError: generator raised StopIteration'
b''
According to pep 479 [2] the fix for this is to 'return' instead of 'raise StopIteration'.
[1] https:/
[2] https:/
Changed in nova: | |
assignee: | nobody → Chris Dent (cdent) |
status: | New → In Progress |
Changed in nova: | |
assignee: | Chris Dent (cdent) → Balazs Gibizer (balazs-gibizer) |
Changed in nova: | |
assignee: | Balazs Gibizer (balazs-gibizer) → Matt Riedemann (mriedem) |
Reviewed: https:/ /review. openstack. org/624055 /git.openstack. org/cgit/ openstack/ nova/commit/ ?id=2ea552e019b d427b5b1709160a 6ed7da9dd23fbd
Committed: https:/
Submitter: Zuul
Branch: master
commit 2ea552e019bd427 b5b1709160a6ed7 da9dd23fbd
Author: Chris Dent <email address hidden>
Date: Mon Dec 10 11:22:54 2018 +0000
Add python 3.7 unit and functional tox jobs
Without these, if you try to run tox -epy37, functional- py37 you'll
get a successful tox run, but no actual tests are run, which is
rather misleading. Given the generaly availability of python 3.7
this is a bad thing.
Running the tests under python 3.7 identified a few minor tests
failures, also fixed here. Each is a result of a change in behavior in
python 3.7:
* printable unicode changes with a new Unicode 11-based unicodedata
package
* intentionally raising StopIteration in a generator is now considered a
RuntimeError, 'return' should be used instead
* an exception message is different beween python 3 and python 2, and the
guard for it was mapping python 3.5 and 3.6 but not 3.7.
zuul configuration is adjusted to add an experimental job for python 3.7
unit. A functional test job is not added, because we don't have 3.6 yet,
and we probably want to get through that first.
Closes-Bug: #1807976 b3dc7e2733d07fe 0ed23ab3da6
Closes-Bug: #1807970
Change-Id: I37779a12d3b36e