mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| '''Test Tools/scripts/fixcid.py.'''
 | |
| 
 | |
| from io import StringIO
 | |
| import os, os.path
 | |
| import runpy
 | |
| import sys
 | |
| from test import support
 | |
| from test.test_tools import skip_if_missing, scriptsdir
 | |
| import unittest
 | |
| 
 | |
| skip_if_missing()
 | |
| 
 | |
| class Test(unittest.TestCase):
 | |
|     def test_parse_strings(self):
 | |
|         old1 = 'int xx = "xx\\"xx"[xx];\n'
 | |
|         old2 = "int xx = 'x\\'xx' + xx;\n"
 | |
|         output = self.run_script(old1 + old2)
 | |
|         new1 = 'int yy = "xx\\"xx"[yy];\n'
 | |
|         new2 = "int yy = 'x\\'xx' + yy;\n"
 | |
|         self.assertMultiLineEqual(output,
 | |
|             "1\n"
 | |
|             "< {old1}"
 | |
|             "> {new1}"
 | |
|             "{new1}"
 | |
|             "2\n"
 | |
|             "< {old2}"
 | |
|             "> {new2}"
 | |
|             "{new2}".format(old1=old1, old2=old2, new1=new1, new2=new2)
 | |
|         )
 | |
| 
 | |
|     def test_alter_comments(self):
 | |
|         output = self.run_script(
 | |
|             substfile=
 | |
|                 "xx yy\n"
 | |
|                 "*aa bb\n",
 | |
|             args=("-c", "-",),
 | |
|             input=
 | |
|                 "/* xx altered */\n"
 | |
|                 "int xx;\n"
 | |
|                 "/* aa unaltered */\n"
 | |
|                 "int aa;\n",
 | |
|         )
 | |
|         self.assertMultiLineEqual(output,
 | |
|             "1\n"
 | |
|             "< /* xx altered */\n"
 | |
|             "> /* yy altered */\n"
 | |
|             "/* yy altered */\n"
 | |
|             "2\n"
 | |
|             "< int xx;\n"
 | |
|             "> int yy;\n"
 | |
|             "int yy;\n"
 | |
|             "/* aa unaltered */\n"
 | |
|             "4\n"
 | |
|             "< int aa;\n"
 | |
|             "> int bb;\n"
 | |
|             "int bb;\n"
 | |
|         )
 | |
| 
 | |
|     def test_directory(self):
 | |
|         os.mkdir(support.TESTFN)
 | |
|         self.addCleanup(support.rmtree, support.TESTFN)
 | |
|         c_filename = os.path.join(support.TESTFN, "file.c")
 | |
|         with open(c_filename, "w") as file:
 | |
|             file.write("int xx;\n")
 | |
|         with open(os.path.join(support.TESTFN, "file.py"), "w") as file:
 | |
|             file.write("xx = 'unaltered'\n")
 | |
|         script = os.path.join(scriptsdir, "fixcid.py")
 | |
|         output = self.run_script(args=(support.TESTFN,))
 | |
|         self.assertMultiLineEqual(output,
 | |
|             "{}:\n"
 | |
|             "1\n"
 | |
|             '< int xx;\n'
 | |
|             '> int yy;\n'.format(c_filename)
 | |
|         )
 | |
| 
 | |
|     def run_script(self, input="", *, args=("-",), substfile="xx yy\n"):
 | |
|         substfilename = support.TESTFN + ".subst"
 | |
|         with open(substfilename, "w") as file:
 | |
|             file.write(substfile)
 | |
|         self.addCleanup(support.unlink, substfilename)
 | |
| 
 | |
|         argv = ["fixcid.py", "-s", substfilename] + list(args)
 | |
|         script = os.path.join(scriptsdir, "fixcid.py")
 | |
|         with support.swap_attr(sys, "argv", argv), \
 | |
|                 support.swap_attr(sys, "stdin", StringIO(input)), \
 | |
|                 support.captured_stdout() as output, \
 | |
|                 support.captured_stderr():
 | |
|             try:
 | |
|                 runpy.run_path(script, run_name="__main__")
 | |
|             except SystemExit as exit:
 | |
|                 self.assertEqual(exit.code, 0)
 | |
|         return output.getvalue()
 | 
