Fix test_python3, and mark these two modules as being ported as well.

This commit is contained in:
Itamar Turner-Trauring 2020-07-06 14:18:18 -04:00
parent b990334104
commit f548593f37
2 changed files with 47 additions and 10 deletions

View File

@ -1,6 +1,18 @@
""" """
Tests related to the Python 3 porting effort itself. Tests related to the Python 3 porting effort itself.
This module has been ported to Python 3.
""" """
from __future__ import unicode_literals
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from future.utils import PY2
if False:#PY2:
from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, int, list, object, range, str, max, min # noqa: F401
from unittest import expectedFailure
from pkg_resources import ( from pkg_resources import (
resource_stream, resource_stream,
@ -13,11 +25,18 @@ from twisted.trial.unittest import (
SynchronousTestCase, SynchronousTestCase,
) )
from allmydata.util._python3 import PORTED_MODULES, PORTED_TEST_MODULES
class Python3PortingEffortTests(SynchronousTestCase): class Python3PortingEffortTests(SynchronousTestCase):
def test_finished_porting(self): def test_finished_porting(self):
""" """
Tahoe-LAFS has been ported to Python 3. Tahoe-LAFS has been ported to Python 3.
Once
https://tahoe-lafs.org/trac/tahoe-lafs/milestone/Support%20Python%203
is completed this test should pass (and can be deleted!).
""" """
tahoe_lafs_module_names = set(all_module_names("allmydata")) tahoe_lafs_module_names = set(all_module_names("allmydata"))
ported_names = set(ported_module_names()) ported_names = set(ported_module_names())
@ -31,7 +50,10 @@ class Python3PortingEffortTests(SynchronousTestCase):
), ),
), ),
) )
test_finished_porting.todo = "https://tahoe-lafs.org/trac/tahoe-lafs/milestone/Support%20Python%203 should be completed" if PY2:
test_finished_porting.skip = "For some reason todo isn't working on Python 2 now"
else:
test_finished_porting.todo = "https://tahoe-lafs.org/trac/tahoe-lafs/milestone/Support%20Python%203 should be completed"
def test_ported_modules_exist(self): def test_ported_modules_exist(self):
""" """
@ -70,18 +92,18 @@ def all_module_names(toplevel):
""" """
allmydata = getModule(toplevel) allmydata = getModule(toplevel)
for module in allmydata.walkModules(): for module in allmydata.walkModules():
yield module.name.decode("utf-8") name = module.name
if PY2:
name = name.decode("utf-8")
yield name
def ported_module_names(): def ported_module_names():
""" """
:return list[unicode]: A ``set`` of ``unicode`` giving the names of :return list[unicode]: A ``list`` of ``unicode`` giving the names of
Tahoe-LAFS modules which have been ported to Python 3. Tahoe-LAFS modules which have been ported to Python 3.
""" """
return resource_stream( return PORTED_MODULES + PORTED_TEST_MODULES
"allmydata",
u"ported-modules.txt",
).read().splitlines()
def unported_report(tahoe_lafs_module_names, ported_names): def unported_report(tahoe_lafs_module_names, ported_names):
@ -100,8 +122,8 @@ def count_lines(module_name):
try: try:
source = module.filePath.getContent() source = module.filePath.getContent()
except Exception as e: except Exception as e:
print(module_name, e) print((module_name, e))
return 0 return 0
lines = source.splitlines() lines = source.splitlines()
nonblank = filter(None, lines) nonblank = [_f for _f in lines if _f]
return len(nonblank) return len(nonblank)

View File

@ -1,11 +1,26 @@
"""Track the port to Python 3.""" """
Track the port to Python 3.
This module has been ported to Python 3.
"""
from __future__ import unicode_literals
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from future.utils import PY2
if PY2:
from builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, bytes, dict, int, list, object, range, str, max, min # noqa: F401
# Keep these sorted alphabetically, to reduce merge conflicts: # Keep these sorted alphabetically, to reduce merge conflicts:
PORTED_MODULES = [ PORTED_MODULES = [
"allmydata.util.humanreadable", "allmydata.util.humanreadable",
"allmydata.util.namespace", "allmydata.util.namespace",
"allmydata.util._python3",
] ]
PORTED_TEST_MODULES = [ PORTED_TEST_MODULES = [
"allmydata.test.test_humanreadable", "allmydata.test.test_humanreadable",
"allmydata.test.test_python3",
] ]