],
)
+ def test_syntaxerror_null_bytes_in_multiline_string(self):
+ scripts = ["\n'''\nmultilinestring\0\n'''", "\nf'''\nmultilinestring\0\n'''"] # Both normal and f-strings
+ with os_helper.temp_dir() as script_dir:
+ for script in scripts:
+ script_name = _make_test_script(script_dir, 'script', script)
+ _, _, stderr = assert_python_failure(script_name)
+ self.assertEqual(
+ stderr.splitlines()[-2:],
+ [ b" multilinestring",
+ b'SyntaxError: source code cannot contain null bytes'
+ ]
+ )
+
def test_consistent_sys_path_for_direct_execution(self):
# This test case ensures that the following all give the same
# sys.path configuration:
/* Get rest of string */
while (end_quote_size != quote_size) {
c = tok_nextc(tok);
- if (tok->done == E_DECODE)
+ if (tok->done == E_ERROR) {
+ return MAKE_TOKEN(ERRORTOKEN);
+ }
+ if (tok->done == E_DECODE) {
break;
+ }
if (c == EOF || (quote_size == 1 && c == '\n')) {
assert(tok->multi_line_start != NULL);
// shift the tok_state's location into
while (end_quote_size != current_tok->f_string_quote_size) {
int c = tok_nextc(tok);
+ if (tok->done == E_ERROR) {
+ return MAKE_TOKEN(ERRORTOKEN);
+ }
if (c == EOF || (current_tok->f_string_quote_size == 1 && c == '\n')) {
if (tok->decoding_erred) {
return MAKE_TOKEN(ERRORTOKEN);