import textwrap from packaging.tests import unittest, support from packaging.compat import Mixin2to3 class Mixin2to3TestCase(support.TempdirManager, support.LoggingCatcher, unittest.TestCase): def setUp(self): super(Mixin2to3TestCase, self).setUp() self.filename = self.mktempfile().name def check(self, source, wanted, **kwargs): source = textwrap.dedent(source) with open(self.filename, 'w') as fp: fp.write(source) Mixin2to3()._run_2to3(**kwargs) wanted = textwrap.dedent(wanted) with open(self.filename) as fp: converted = fp.read() self.assertMultiLineEqual(converted, wanted) def test_conversion(self): # check that code and doctests get converted self.check('''\ """Example docstring. >>> print test test It works. """ print 'test' ''', '''\ """Example docstring. >>> print(test) test It works. """ print('test') ''', # 2to3 adds a newline here files=[self.filename]) def test_doctests_conversion(self): # check that doctest files are converted self.check('''\ Welcome to the doc. >>> print test test ''', '''\ Welcome to the doc. >>> print(test) test ''', doctests=[self.filename]) def test_additional_fixers(self): # make sure the fixers argument works self.check("""\ echo('42') echo2('oh no') """, """\ print('42') print('oh no') """, files=[self.filename], fixers=['packaging.tests.fixer']) def test_suite(): return unittest.makeSuite(Mixin2to3TestCase) if __name__ == "__main__": unittest.main(defaultTest="test_suite")