Commit Graph

62 Commits

Author SHA1 Message Date
Victor Stinner 3939c321c9
bpo-20443: _PyConfig_Read() gets the absolute path of run_filename (GH-14053)
Python now gets the absolute path of the script filename specified on
the command line (ex: "python3 script.py"): the __file__ attribute of
the __main__ module, sys.argv[0] and sys.path[0] become an absolute
path, rather than a relative path.

* Add _Py_isabs() and _Py_abspath() functions.
* _PyConfig_Read() now tries to get the absolute path of
  run_filename, but keeps the relative path if _Py_abspath() fails.
* Reimplement os._getfullpathname() using _Py_abspath().
* Use _Py_isabs() in getpath.c.
2019-06-25 15:02:43 +02:00
Inada Naoki 10654c19b5
bpo-20844: open script file with "rb" mode (GH-12616) 2019-04-01 18:35:20 +09:00
Elvis Pranskevichus a6e956bcb0 bpo-34726: Fix handling of hash-based pycs in zipimport. (GH-10327)
Current support for hash-based bytecode files in `zipimport` is rather
sparse, which leads to test failures when the test suite is ran with
the ``SOURCE_DATE_EPOCH`` environment variable set.

This teaches zipimport to handle hash-based pycs properly.
2018-11-07 20:34:59 +02:00
Alexey Izbyshev a2670565d8 bpo-32236: open() emits RuntimeWarning if buffering=1 for binary mode (GH-4842)
If buffering=1 is specified for open() in binary mode, it is silently
treated as buffering=-1 (i.e., the default buffer size).
Coupled with the fact that line buffering is always supported in Python 2,
such behavior caused several issues (e.g., bpo-10344, bpo-21332).

Warn that line buffering is not supported if open() is called with
binary mode and buffering=1.
2018-10-20 02:22:31 +02:00
Victor Stinner ea75187c68
bpo-34783: Fix test_nonexisting_script() (GH-9896)
Fix test_cmd_line_script.test_nonexisting_script(): the test must not
rely on sys.executable, since main.c uses config->program which can
be different than sys.executable in many cases (for example, on macOS
when using the framework).
2018-10-15 23:50:55 +02:00
Ned Deily f6c29a65e2
bpo-34783: Disable test_nonexisting_script for macOS framework builds (GH-9831)
With macOS framework builds, test case test_nonexisting_script in
test_nonexisting_script fails because the test case assumes that
the file name in sys.executable will appear in the error message.
For macOS framework builds, sys.executable is the file name of the
stub launcher and its file name bears no relationship to the file
name of the actual python executable.  For now, skip the test in
this case.
2018-10-12 23:54:20 -04:00
Victor Stinner a46467ff19
bpo-34783: Add test_cmd_line_script.test_nonexisting_script() (GH-9535)
Make sure that "./python script.py" does not crash if the script
file doesn't exist.
2018-09-24 08:06:29 -07:00
Nick Coghlan a9e5d0e9ef
bpo-33053: Remove test_cmd_line_script debugging print (GH-6237)
I noticed this had slipped into the original commit when
resolving a merge conflict for the backport to 3.7.
2018-03-25 23:47:54 +10:00
Nick Coghlan d5d9e02dd3
bpo-33053: -m now adds *starting* directory to sys.path (GH-6231)
Historically, -m added the empty string as sys.path
zero, meaning it resolved imports against the current
working directory, the same way -c and the interactive
prompt do.

This changes the sys.path initialisation to add the
*starting* working directory as sys.path[0] instead,
such that changes to the working directory while the
program is running will have no effect on imports
when using the -m switch.
2018-03-25 23:03:10 +10:00
Milan Oberkirch 8c3f05e9f0 bpo-30436: Raise ModuleNotFoundError for importlib.util.find_spec() when parent isn't a package (GH-1899)
Previously AttributeError was raised, but that's not very reflective of the fact that the requested module can't be found since the specified parent isn't actually a package.
2017-06-14 14:34:50 -07:00
Nick Coghlan d2977a3ae2 bpo-29723: Consistently configure sys.path[0] (#575)
Directory and zipfile execution previously added
the parent directory of the directory or zipfile
as sys.path[0] and then subsequently overwrote
it with the directory or zipfile itself.

This caused problems in isolated mode, as it
overwrote the "stdlib as a zip archive" entry
in sys.path, as the parent directory was
never added.

The attempted fix to that issue in bpo-29319
created the opposite problem in *non*-isolated
mode, by potentially leaving the parent
directory on sys.path instead of overwriting it.

This change fixes the root cause of the problem
by removing the whole "add-and-overwrite" dance
for sys.path[0], and instead simply never adds
the parent directory to sys.path in the first
place.
2017-03-12 20:38:32 +10:00
Martin Panter 619555d77b Issue #25677: Merge SyntaxError caret positioning from 3.5 2016-12-19 06:46:01 +00:00
Martin Panter ca3263c50c Issue #25677: Correct syntax error caret for indented blocks.
Based on patch by Michael Layzell.
2016-12-11 00:18:36 +00:00
Eric Snow 46f97b85a8 Issue #15767: Use ModuleNotFoundError. 2016-09-07 16:56:15 -07:00
Martin Panter f9ed528faf Issue #27487: Merge runpy warning from 3.5 2016-08-21 05:07:35 +00:00
Martin Panter 9c8aa9bffe Issue #27487: Warn if submodule already imported before runpy execution
Also try to clarify the find_spec() error message.
2016-08-21 04:07:58 +00:00
Benjamin Peterson ab078e9ed1 Backed out changeset af29d89083b3 (closes #25548) (closes #27498) 2016-07-13 21:13:29 -07:00
Kushal Das 5801ecb440 Issue #25548: Showing memory address of class objects in repl 2016-06-04 16:21:13 -07:00
Martin Panter 3008b1c4bb Issue #26304: Merge doc wording from 3.5 2016-02-10 05:44:56 +00:00
Martin Panter c04fb56e36 Issue #26304: Change "allows to <verb>" to "allows <verb>ing" or similar
The original form is incorrect grammar and feels awkward, even though the
meaning is clear.
2016-02-10 05:44:01 +00:00
Victor Stinner 9def284387 subprocess._optim_args_from_interpreter_flags()
Issue #26100:

* Add subprocess._optim_args_from_interpreter_flags()
* Add test.support.optim_args_from_interpreter_flags()
* Use new functions in distutils, test_cmd_line_script, test_compileall and
  test_inspect

The change enables test_details() test of test_inspect when -O or -OO command
line option is used.
2016-01-18 12:15:08 +01:00
Martin Panter dda584340e Issue #19771: Omit irrelevant message if package could not be initialized 2015-12-12 06:58:55 +00:00
Martin Panter 7dda421bff Issue #14285: Do not catch exceptions initializing any ancestor package
The previous fix only handled the case of the parent package of __main__
failing to initialize.

Also make the "Error while finding spec" formatting slightly more appealing,
and document and test that the module name must be absolute.
2015-12-10 06:47:06 +00:00
Martin Panter 657257edb6 Issue #14285: Do not catch __init__.py exceptions in runpy
Initialize package before calling find_spec() for __main__, so that we do not
incorrectly handle exceptions from __init__.py. When runpy is used from the
Python CLI, use an internal exception rather than ImportError, to avoid
catching unexpected exceptions.

Also remove exception message rewriting in _run_module_as_main(), because it
seems to be redundant with the _get_main_module_details() function.
2015-12-03 01:23:10 +00:00
Berker Peksag ce643913a9 Issue #9517: Move script_helper to the support package.
Patch by Christie Wilson.
2015-05-06 06:33:17 +03:00
Serhiy Storchaka b0749ca933 Fixed bytes warnings when run tests with -vv. 2015-03-25 01:33:19 +02:00
Antoine Pitrou 9845c7ebc5 Issue #21425: Fix flushing of standard streams in the interactive interpreter. 2014-05-11 13:42:17 +02:00
Nick Coghlan d979e4335d Close #20500: Don't trigger PyObject_Str assertion at shutdown 2014-02-09 10:43:21 +10:00
Nick Coghlan 720c7e28cb Issue #19700: set __spec__ appropriately in runpy
Note that __spec__.name is not currently guaranteed to be in
sys.modules when the code is running, only __name__ is.

The "running module is in sys.modules" invariant will be
expanded to also cover __spec__.name in a subsequent patch.
2013-12-15 20:33:02 +10:00
Victor Stinner e8785ff82a Close #18754: Run Python child processes in isolated more in the test suite. 2013-10-12 14:44:01 +02:00
Nick Coghlan 5517596c04 Close #15415: Factor out temp dir helpers to test.support
Patch by Chris Jerdonek
2013-07-28 22:11:50 +10:00
Victor Stinner 269b3ce400 (Merge 3.2) Issue #16218, #16414, #16444: Backport FS_NONASCII,
TESTFN_UNDECODABLE, TESTFN_NONASCII of test.support from Python 3.4. Backport
tests on non-ASCII paths.
2013-01-03 01:56:38 +01:00
Victor Stinner 0af71aae2d Issue #16218, #16414, #16444: Backport FS_NONASCII, TESTFN_UNDECODABLE,
TESTFN_NONASCII of test.support from Python 3.4. Backport tests on non-ASCII
paths.
2013-01-03 01:50:30 +01:00
Victor Stinner e667e98faa Issue #16218, #16444: Backport improvment on tests for non-ASCII characters 2012-11-12 01:23:15 +01:00
Andrew Svetlov 90c0eb28c5 Issue #16218: Support non ascii characters in python launcher.
Patch by Serhiy Storchaka.
2012-11-01 14:51:14 +02:00
Nick Coghlan 8e6e7d39d3 Fix typo in a comment (noticed by Terry Reedy) 2012-07-15 23:13:18 +10:00
Nick Coghlan 3f94cbf9eb Actually initialize __main__.__loader__ with loader instances, not the corresponding type objects 2012-07-15 19:10:39 +10:00
Nick Coghlan 37b3b90b02 Note why we can't write an automated test for the code path that brings up the REPL for a bare 'python' call 2012-07-15 18:24:42 +10:00
Nick Coghlan 85e729ec3b Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357) 2012-07-15 18:09:52 +10:00
Senthil Kumaran f28fbabc7f Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp 2012-07-04 19:33:45 -07:00
Senthil Kumaran f01a337950 Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp 2012-07-04 19:28:16 -07:00
Nick Coghlan 1d5ccdb24d Close #14136 by cleaning up the PEP 409 command line test (patch by Ethan Furman) 2012-05-21 23:03:30 +10:00
Brett Cannon e0d88a173c Issue #14605: Make explicit the entries on sys.path_hooks that used to
be implicit.

Added a warning for when sys.path_hooks is found to be empty. Also
changed the meaning of None in sys.path_importer_cache to represent
trying sys.path_hooks again (an interpretation of previous semantics).
Also added a warning for when None was found.

The long-term goal is for None in sys.path_importer_cache to represent
the same as imp.NullImporter: no finder found for that sys.path entry.
2012-04-25 20:54:04 -04:00
Nick Coghlan 37fc401188 Close issue #14026 by better testing sys.argv handling in test_cmd_line_script (patch by Jason Yeo) 2012-04-22 17:11:33 +10:00
Nick Coghlan 10ac77d2d8 Close #14032: fix incorrect variable reference in test_cmd_line_script 2012-04-19 22:19:36 +10:00
Victor Stinner e3874ed7dd test_cmd_line_script: format paths with ascii() instead of repr()
Fix the test if the native filesystem encoding is not utf-8 (eg. cp1250 on
Windows).
2010-10-17 01:41:09 +00:00
Georg Brandl f5247e35c1 #9964: fix running test_cmd_line_script under -O and -OO. 2010-10-14 08:08:56 +00:00
Antoine Pitrou f51d8d3a2e Better Python spawning primitives in test.script_helper, for
easier writing of unit tests and better error reporting.
2010-10-08 18:05:42 +00:00
Nick Coghlan d26c18adcc Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory 2010-08-17 13:06:11 +00:00
Barry Warsaw 28a691b7fd PEP 3147 2010-04-17 00:19:56 +00:00