mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	 692a49394d
			
		
	
	
		692a49394d
		
	
	
	
	
		
			
			- Change the fixers used in tests to something not provided by lib2to3 - Test conversion of doctests in text files - Factor out test boilerplate into a common method
		
			
				
	
	
		
			87 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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")
 |