[pypy-commit] pypy resource_warning: (florin, antocuni) Add -X track-resources runtime flag to the interpreter
florinpapa
pypy.commits at gmail.com
Thu Apr 7 11:01:40 EDT 2016
Author: Florin Papa <florin.papa at intel.com>
Branch: resource_warning
Changeset: r83571:5ee1622695e2
Date: 2016-04-07 18:00 +0300
http://bitbucket.org/pypy/pypy/changeset/5ee1622695e2/
Log: (florin, antocuni) Add -X track-resources runtime flag to the
interpreter
diff --git a/pypy/interpreter/app_main.py b/pypy/interpreter/app_main.py
--- a/pypy/interpreter/app_main.py
+++ b/pypy/interpreter/app_main.py
@@ -22,11 +22,14 @@
-V : print the Python version number and exit (also --version)
-W arg : warning control; arg is action:message:category:module:lineno
also PYTHONWARNINGS=arg
+-X arg : set implementation-specific option
file : program read from script file
- : program read from stdin (default; interactive mode if a tty)
arg ...: arguments passed to program in sys.argv[1:]
PyPy options and arguments:
--info : print translation information about this PyPy executable
+-X track-resources : track the creation of files and sockets and display
+ a warning if they are not closed explicitly
"""
# Missing vs CPython: PYTHONHOME, PYTHONCASEOK
USAGE2 = """
@@ -223,6 +226,15 @@
import pypyjit
pypyjit.set_param(jitparam)
+def set_runtime_options(options, Xparam, *args):
+ if Xparam == 'track-resources':
+ sys.pypy_set_track_resources(True)
+ else:
+ print >> sys.stderr
+ print >> sys.stderr, 'usage: %s -X [options]' % (get_sys_executable(),)
+ print >> sys.stderr, '[options] can be: track-resources'
+ print >> sys.stderr
+
class CommandLineError(Exception):
pass
@@ -398,6 +410,7 @@
'--info': (print_info, None),
'--jit': (set_jit_option, Ellipsis),
'-funroll-loops': (funroll_loops, None),
+ '-X': (set_runtime_options, Ellipsis),
'--': (end_options, None),
}
diff --git a/pypy/interpreter/test/test_app_main.py b/pypy/interpreter/test/test_app_main.py
--- a/pypy/interpreter/test/test_app_main.py
+++ b/pypy/interpreter/test/test_app_main.py
@@ -215,6 +215,13 @@
expected = {"no_user_site": True}
self.check(['-c', 'pass'], {}, sys_argv=['-c'], run_command='pass', **expected)
+ def test_track_resources(self, monkeypatch):
+ myflag = [False]
+ def pypy_set_track_resources(flag):
+ myflag[0] = flag
+ monkeypatch.setattr(sys, 'pypy_set_track_resources', pypy_set_track_resources, raising=False)
+ self.check(['-X', 'track-resources'], {}, sys_argv=[''], run_stdin=True)
+ assert myflag[0] == True
class TestInteraction:
"""
@@ -1044,4 +1051,3 @@
# assert it did not crash
finally:
sys.path[:] = old_sys_path
-
More information about the pypy-commit
mailing list