Bug#915179: hovercraft FTBFS with Python 3.7
Source: hovercraft
Version: 2.1-3
Severity: serious
Tags: ftbfs
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/hovercraft.html
...
=================================== FAILURES ===================================
______________________ CalculateTests.test_absolute_path _______________________
positions = [{'data-x': 'r0', 'data-y': 'r0', 'is_path': True, 'path': 'M 100 100 L 300 100 L 300 300'}, {'is_path': True}, {'is_path': True}, {'is_path': True}, {'is_path': True}]
def calculate_positions(positions):
"""Calculates position information"""
current_position = {'data-x': 0,
'data-y': 0,
'data-z': 0,
'data-rotate-x': 0,
'data-rotate-y': 0,
'data-rotate-z': 0,
'data-scale': 1,
}
positer = iter(positions)
position = next(positer)
_update_position(current_position, position)
while True:
if 'path' in position:
# Start of a new path!
path = position['path']
# Follow the path specification
first_point = _pos_to_cord(current_position)
# Paths that end in Z or z are closed.
closed_path = path.strip()[-1].upper() == 'Z'
path = parse_path(path)
# Find out how many positions should be calculated:
count = 1
last = False
deferred_positions = []
while True:
try:
position = next(positer)
deferred_positions.append(position)
except StopIteration:
last = True # This path goes to the end
break
if not position.get('is_path') or 'path' in position:
# The end of the path, or the start of a new one
break
count += 1
if count < 2:
raise AssertionError("The path specification is only used for "
"one slide, which makes it pointless.")
if closed_path:
# This path closes in on itself. Skip the last part, so that
# the first and last step doesn't overlap.
endcount = count + 1
else:
endcount = count
multiplier = (endcount * DEFAULT_MOVEMENT) / path.length()
offset = path.point(0)
path_iter = iter(deferred_positions)
for x in range(count):
point = path.point(x / (endcount - 1))
point = ((point - offset) * multiplier) + first_point
current_position.update(_coord_to_pos(point))
rotation = _path_angle(path, x / (endcount - 1))
current_position['data-rotate-z'] = rotation
yield current_position.copy()
> position = next(path_iter)
E StopIteration
hovercraft/position.py:189: StopIteration
The above exception was the direct cause of the following exception:
self = <hovercraft.tests.test_position.CalculateTests testMethod=test_absolute_path>
def test_absolute_path(self):
# Position slides along a path
positions = [
{'data-x': 'r0', 'data-y': 'r0', 'path': 'M 100 100 L 300 100 L 300 300',
'is_path': True},
{'is_path': True},
{'is_path': True},
{'is_path': True},
{'is_path': True},
]
> positions = list(calculate_positions(positions))
E RuntimeError: generator raised StopIteration
hovercraft/tests/test_position.py:209: RuntimeError
...
Reply to: