| 
									
										
										
										
											2005-10-02 01:48:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-20 21:35:26 +00:00
										 |  |  | import test.support, unittest | 
					
						
							|  |  |  | from test.support import TESTFN, unlink | 
					
						
							| 
									
										
										
										
											2007-11-15 23:19:43 +00:00
										 |  |  | import os, sys | 
					
						
							| 
									
										
										
										
											2005-10-02 01:48:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class CodingTest(unittest.TestCase): | 
					
						
							|  |  |  |     def test_bad_coding(self): | 
					
						
							|  |  |  |         module_name = 'bad_coding' | 
					
						
							| 
									
										
										
										
											2005-12-18 05:29:30 +00:00
										 |  |  |         self.verify_bad_module(module_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_bad_coding2(self): | 
					
						
							|  |  |  |         module_name = 'bad_coding2' | 
					
						
							|  |  |  |         self.verify_bad_module(module_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def verify_bad_module(self, module_name): | 
					
						
							| 
									
										
										
										
											2005-10-02 01:48:49 +00:00
										 |  |  |         self.assertRaises(SyntaxError, __import__, 'test.' + module_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         path = os.path.dirname(__file__) | 
					
						
							|  |  |  |         filename = os.path.join(path, module_name + '.py') | 
					
						
							| 
									
										
										
										
											2007-08-13 13:11:39 +00:00
										 |  |  |         fp = open(filename, encoding='utf-8') | 
					
						
							| 
									
										
										
										
											2005-10-02 01:48:49 +00:00
										 |  |  |         text = fp.read() | 
					
						
							|  |  |  |         fp.close() | 
					
						
							|  |  |  |         self.assertRaises(SyntaxError, compile, text, filename, 'exec') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-11 21:31:25 +00:00
										 |  |  |     def test_exec_valid_coding(self): | 
					
						
							|  |  |  |         d = {} | 
					
						
							|  |  |  |         exec('# coding: cp949\na = 5\n', d) | 
					
						
							|  |  |  |         self.assertEqual(d['a'], 5) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-11-15 23:19:43 +00:00
										 |  |  |     def test_file_parse(self): | 
					
						
							|  |  |  |         # issue1134: all encodings outside latin-1 and utf-8 fail on | 
					
						
							|  |  |  |         # multiline strings and long lines (>512 columns) | 
					
						
							| 
									
										
										
										
											2007-11-16 00:56:23 +00:00
										 |  |  |         if TESTFN in sys.modules: | 
					
						
							|  |  |  |             del sys.modules[TESTFN] | 
					
						
							| 
									
										
										
										
											2007-11-15 23:19:43 +00:00
										 |  |  |         sys.path.insert(0, ".") | 
					
						
							| 
									
										
										
										
											2007-11-16 00:56:23 +00:00
										 |  |  |         filename = TESTFN + ".py" | 
					
						
							| 
									
										
										
										
											2007-11-15 23:19:43 +00:00
										 |  |  |         f = open(filename, "w") | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             f.write("# -*- coding: cp1252 -*-\n") | 
					
						
							|  |  |  |             f.write("'''A short string\n") | 
					
						
							|  |  |  |             f.write("'''\n") | 
					
						
							|  |  |  |             f.write("'A very long string %s'\n" % ("X" * 1000)) | 
					
						
							|  |  |  |             f.close() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-11-16 00:56:23 +00:00
										 |  |  |             __import__(TESTFN) | 
					
						
							| 
									
										
										
										
											2007-11-15 23:19:43 +00:00
										 |  |  |         finally: | 
					
						
							|  |  |  |             f.close() | 
					
						
							| 
									
										
										
										
											2008-04-17 04:21:10 +00:00
										 |  |  |             unlink(TESTFN+".py") | 
					
						
							|  |  |  |             unlink(TESTFN+".pyc") | 
					
						
							| 
									
										
										
										
											2007-11-15 23:19:43 +00:00
										 |  |  |             sys.path.pop(0) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-10-02 01:48:49 +00:00
										 |  |  | def test_main(): | 
					
						
							| 
									
										
										
										
											2008-05-20 21:35:26 +00:00
										 |  |  |     test.support.run_unittest(CodingTest) | 
					
						
							| 
									
										
										
										
											2005-10-02 01:48:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     test_main() |