"""Tests for packaging.command.build_py.""" import sys from packaging.tests import unittest, support from packaging.compat import Mixin2to3 class Mixin2to3TestCase(support.TempdirManager, support.LoggingCatcher, unittest.TestCase): @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher') def test_convert_code_only(self): # used to check if code gets converted properly. code_content = "print 'test'\n" code_handle = self.mktempfile() code_name = code_handle.name code_handle.write(code_content) code_handle.flush() mixin2to3 = Mixin2to3() mixin2to3._run_2to3([code_name]) converted_code_content = "print('test')\n" with open(code_name) as fp: new_code_content = "".join(fp.readlines()) self.assertEqual(new_code_content, converted_code_content) @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher') def test_doctests_only(self): # used to check if doctests gets converted properly. doctest_content = '"""\n>>> print test\ntest\n"""\nprint test\n\n' doctest_handle = self.mktempfile() doctest_name = doctest_handle.name doctest_handle.write(doctest_content) doctest_handle.flush() mixin2to3 = Mixin2to3() mixin2to3._run_2to3([doctest_name]) converted_doctest_content = ['"""', '>>> print(test)', 'test', '"""', 'print(test)', '', '', ''] converted_doctest_content = '\n'.join(converted_doctest_content) with open(doctest_name) as fp: new_doctest_content = "".join(fp.readlines()) self.assertEqual(new_doctest_content, converted_doctest_content) @unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher') def test_additional_fixers(self): # used to check if use_2to3_fixers works code_content = "type(x) is T" code_handle = self.mktempfile() code_name = code_handle.name code_handle.write(code_content) code_handle.flush() mixin2to3 = Mixin2to3() mixin2to3._run_2to3(files=[code_name], doctests=[code_name], fixers=['packaging.tests.fixer']) converted_code_content = "isinstance(x, T)" with open(code_name) as fp: new_code_content = "".join(fp.readlines()) self.assertEqual(new_code_content, converted_code_content) def test_suite(): return unittest.makeSuite(Mixin2to3TestCase) if __name__ == "__main__": unittest.main(defaultTest="test_suite")