Fix `test_trans_add` for Python 3.4.3
The `test_trans_add` test in `manila.tests.test_hacking.HackingTestCase` consistently failed on our CI system, which is based on Ubuntu 14.04. Contrary, on my development machine running Fedora 22, all tests succeeded. Whilst the test dispatches on Python version (`if six.PY2`) to select which `hacking` errors are expected, at which line/column pair, I noticed our CI system returned the expected values for Python 2, not the Python 3 ones, which differ in column numbers only. After verifying versions of dependencies, stepping through the code and whatnot, the only difference left turned out to be the version of Python being used: 3.4.2 on my workstation, 3.4.3 on our CI system. As a last resort, I opened the Python 3.4 ChangeLog [1] and noticed a suspicious entry:: Issue #21295: Revert some changes (issue #16795) to AST line numbers and column offsets that constituted a regression. Looking at those issues, it becomes clear this is the cause. Supposedly the Python 3 specific expected values were created on a Python 3.4 version containing the original patch of #16795 [2], and this is also what's running on the OpenStack CI system. Our CI system runs a build of Python which contains the revert of #21295 [3]. This patch fixes the version-specific expected error calculation by not simply dispatching on Python 2 or 3, but specifically limits the custom version to 3.4.0 <= Python < 3.4.3. [1] https://docs.python.org/3.4/whatsnew/changelog.html [2] http://bugs.python.org/issue16795 [3] http://bugs.python.org/issue21295 Closes-Bug: 1499743 Change-Id: I649fb1f5244efba7ab79e9bf337433d541fa8b19
This commit is contained in:
parent
29f2695eb9
commit
83167bd2a2
|
@ -12,6 +12,7 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import sys
|
||||
import textwrap
|
||||
|
||||
import mock
|
||||
|
@ -180,7 +181,11 @@ class HackingTestCase(test.TestCase):
|
|||
msg = 'add to me' + _('test')
|
||||
return msg
|
||||
"""
|
||||
if six.PY2:
|
||||
|
||||
# Python 3.4.0 introduced a change to the column calculation during AST
|
||||
# parsing. This was reversed in Python 3.4.3, hence the version-based
|
||||
# expected value calculation. See #1499743 for more background.
|
||||
if sys.version_info < (3, 4, 0) or sys.version_info >= (3, 4, 3):
|
||||
errors = [(13, 10, 'M326'), (14, 10, 'M326'), (15, 10, 'M326'),
|
||||
(16, 10, 'M326'), (17, 10, 'M326'), (18, 24, 'M326')]
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue