Port test_hacking to Python 3

* CheckForStrUnicodeExc: visit also "Try" AST node on Python 3
* tests-py3.txt: run nova.tests.unit.test_hacking on Python 3

This change is partially based on the work of dims,
change Ibb4fa47cd71d697a4996425b1797ac2f8cc363cd.

Co-Authored-By: Davanum Srinivas <davanum@gmail.com>
Partially-Implements: blueprint nova-python3-newton
Change-Id: I075c03dd168eef25fdde0b8e2284815ddd638ca0
This commit is contained in:
Victor Stinner 2016-06-22 11:12:58 +02:00
parent ec53c6c0ec
commit c0cf1f388b
2 changed files with 21 additions and 9 deletions

View File

@ -18,6 +18,7 @@ import os
import re
import pep8
import six
"""
Guidelines for writing new hacking checks
@ -429,14 +430,26 @@ class CheckForStrUnicodeExc(BaseASTChecker):
self.name = []
self.already_checked = []
def visit_TryExcept(self, node):
for handler in node.handlers:
if handler.name:
self.name.append(handler.name.id)
super(CheckForStrUnicodeExc, self).generic_visit(node)
self.name = self.name[:-1]
else:
super(CheckForStrUnicodeExc, self).generic_visit(node)
# Python 2 produces ast.TryExcept and ast.TryFinally nodes, but Python 3
# only produces ast.Try nodes.
if six.PY2:
def visit_TryExcept(self, node):
for handler in node.handlers:
if handler.name:
self.name.append(handler.name.id)
super(CheckForStrUnicodeExc, self).generic_visit(node)
self.name = self.name[:-1]
else:
super(CheckForStrUnicodeExc, self).generic_visit(node)
else:
def visit_Try(self, node):
for handler in node.handlers:
if handler.name:
self.name.append(handler.name)
super(CheckForStrUnicodeExc, self).generic_visit(node)
self.name = self.name[:-1]
else:
super(CheckForStrUnicodeExc, self).generic_visit(node)
def visit_Call(self, node):
if self._check_call_names(node, ['str', 'unicode']):

View File

@ -59,7 +59,6 @@ nova.tests.unit.pci.test_stats.PciDeviceStatsWithTagsTestCase
nova.tests.unit.test_api_validation.Base64TestCase
nova.tests.unit.test_bdm.BlockDeviceMappingEc2CloudTestCase
nova.tests.unit.test_configdrive2.ConfigDriveTestCase
nova.tests.unit.test_hacking.HackingTestCase
nova.tests.unit.test_matchers.TestDictMatches
nova.tests.unit.test_metadata.MetadataHandlerTestCase
nova.tests.unit.test_metadata.MetadataPasswordTestCase