mirror of
https://github.com/python/cpython.git
synced 2025-07-23 19:25:40 +00:00
Try to be a bit more consistent on all platforms:
python . python < . both print a message, return non-zero and do not core dump.
This commit is contained in:
parent
8ff212034e
commit
72c2c062d7
3 changed files with 8 additions and 15 deletions
|
@ -16,19 +16,8 @@ class CmdLineTest(unittest.TestCase):
|
||||||
return subprocess.call([sys.executable, cmd_line], stderr=subprocess.PIPE)
|
return subprocess.call([sys.executable, cmd_line], stderr=subprocess.PIPE)
|
||||||
|
|
||||||
def test_directories(self):
|
def test_directories(self):
|
||||||
if sys.platform == 'win32':
|
self.assertNotEqual(self.exit_code('.'), 0)
|
||||||
# Exit code for "python .", Error 13: permission denied = 2
|
self.assertNotEqual(self.exit_code('< .'), 0)
|
||||||
expected_exit_code = 2
|
|
||||||
elif sys.platform.startswith('freebsd'):
|
|
||||||
# On FreeBSD, it more likely raise SyntaxError for binary
|
|
||||||
# directory data.
|
|
||||||
expected_exit_code = 1
|
|
||||||
else:
|
|
||||||
# Linux has no problem with "python .", Exit code = 0
|
|
||||||
expected_exit_code = 0
|
|
||||||
self.assertEqual(self.exit_code('.'), expected_exit_code)
|
|
||||||
|
|
||||||
self.assertTrue(self.exit_code('< .') != 0)
|
|
||||||
|
|
||||||
def verify_valid_flag(self, cmd_line):
|
def verify_valid_flag(self, cmd_line):
|
||||||
data = self.start_python(cmd_line)
|
data = self.start_python(cmd_line)
|
||||||
|
|
|
@ -364,7 +364,8 @@ Py_Main(int argc, char **argv)
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
if (fstat(fileno(fp), &sb) == 0 &&
|
if (fstat(fileno(fp), &sb) == 0 &&
|
||||||
S_ISDIR(sb.st_mode)) {
|
S_ISDIR(sb.st_mode)) {
|
||||||
fprintf(stderr, "%s: warning '%s' is a directory\n", argv[0], filename);
|
fprintf(stderr, "%s: '%s' is a directory, cannot continue\n", argv[0], filename);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1037,7 +1037,10 @@ _PySys_Init(void)
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
if (fstat(fileno(stdin), &sb) == 0 &&
|
if (fstat(fileno(stdin), &sb) == 0 &&
|
||||||
S_ISDIR(sb.st_mode)) {
|
S_ISDIR(sb.st_mode)) {
|
||||||
Py_FatalError("<stdin> is a directory");
|
/* There's nothing more we can do. */
|
||||||
|
/* Py_FatalError() will core dump, so just exit. */
|
||||||
|
PySys_WriteStderr("Python error: <stdin> is a directory, cannot continue\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue