Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 1 | """test script for a few new invalid token catches""" |
| 2 | |
Anthony Sottile | abea73b | 2019-05-18 11:27:17 -0700 | [diff] [blame] | 3 | import sys |
Benjamin Peterson | ee8712c | 2008-05-20 21:35:26 +0000 | [diff] [blame] | 4 | from test import support |
Anthony Sottile | abea73b | 2019-05-18 11:27:17 -0700 | [diff] [blame] | 5 | from test.support import script_helper |
| 6 | import unittest |
Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 7 | |
| 8 | class EOFTestCase(unittest.TestCase): |
| 9 | def test_EOFC(self): |
Alexandre Vassalotti | 8ae3e05 | 2008-05-16 00:41:41 +0000 | [diff] [blame] | 10 | expect = "EOL while scanning string literal (<string>, line 1)" |
Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 11 | try: |
| 12 | eval("""'this is a test\ |
| 13 | """) |
Guido van Rossum | b940e11 | 2007-01-10 16:19:56 +0000 | [diff] [blame] | 14 | except SyntaxError as msg: |
Jeremy Hylton | 3e0055f | 2005-10-20 19:59:25 +0000 | [diff] [blame] | 15 | self.assertEqual(str(msg), expect) |
Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 16 | else: |
Benjamin Peterson | ee8712c | 2008-05-20 21:35:26 +0000 | [diff] [blame] | 17 | raise support.TestFailed |
Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 18 | |
| 19 | def test_EOFS(self): |
Alexandre Vassalotti | 8ae3e05 | 2008-05-16 00:41:41 +0000 | [diff] [blame] | 20 | expect = ("EOF while scanning triple-quoted string literal " |
| 21 | "(<string>, line 1)") |
Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 22 | try: |
| 23 | eval("""'''this is a test""") |
Guido van Rossum | b940e11 | 2007-01-10 16:19:56 +0000 | [diff] [blame] | 24 | except SyntaxError as msg: |
Jeremy Hylton | 3e0055f | 2005-10-20 19:59:25 +0000 | [diff] [blame] | 25 | self.assertEqual(str(msg), expect) |
Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 26 | else: |
Benjamin Peterson | ee8712c | 2008-05-20 21:35:26 +0000 | [diff] [blame] | 27 | raise support.TestFailed |
Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 28 | |
Pablo Galindo | c5fc156 | 2020-04-22 23:29:27 +0100 | [diff] [blame] | 29 | @unittest.skipIf(sys.flags.use_peg, "TODO for PEG -- fails with new parser") |
Anthony Sottile | abea73b | 2019-05-18 11:27:17 -0700 | [diff] [blame] | 30 | def test_line_continuation_EOF(self): |
Daniel Hahler | 2f65aa4 | 2020-01-09 18:07:32 +0100 | [diff] [blame] | 31 | """A continuation at the end of input must be an error; bpo2180.""" |
Anthony Sottile | abea73b | 2019-05-18 11:27:17 -0700 | [diff] [blame] | 32 | expect = 'unexpected EOF while parsing (<string>, line 1)' |
| 33 | with self.assertRaises(SyntaxError) as excinfo: |
| 34 | exec('x = 5\\') |
| 35 | self.assertEqual(str(excinfo.exception), expect) |
| 36 | with self.assertRaises(SyntaxError) as excinfo: |
| 37 | exec('\\') |
| 38 | self.assertEqual(str(excinfo.exception), expect) |
| 39 | |
Pablo Galindo | c5fc156 | 2020-04-22 23:29:27 +0100 | [diff] [blame] | 40 | @unittest.skip("TODO for PEG -- fails even with old parser now") |
Anthony Sottile | abea73b | 2019-05-18 11:27:17 -0700 | [diff] [blame] | 41 | @unittest.skipIf(not sys.executable, "sys.executable required") |
| 42 | def test_line_continuation_EOF_from_file_bpo2180(self): |
| 43 | """Ensure tok_nextc() does not add too many ending newlines.""" |
| 44 | with support.temp_dir() as temp_dir: |
| 45 | file_name = script_helper.make_script(temp_dir, 'foo', '\\') |
| 46 | rc, out, err = script_helper.assert_python_failure(file_name) |
| 47 | self.assertIn(b'unexpected EOF while parsing', err) |
| 48 | |
| 49 | file_name = script_helper.make_script(temp_dir, 'foo', 'y = 6\\') |
| 50 | rc, out, err = script_helper.assert_python_failure(file_name) |
| 51 | self.assertIn(b'unexpected EOF while parsing', err) |
| 52 | |
Skip Montanaro | 8c91337 | 2002-08-15 01:28:54 +0000 | [diff] [blame] | 53 | if __name__ == "__main__": |
Zachary Ware | 38c707e | 2015-04-13 15:00:43 -0500 | [diff] [blame] | 54 | unittest.main() |