Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Unified Diff: tools/telemetry/third_party/coverage/tests/try_execfile.py

Issue 1366913004: Add coverage Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/coverage/tests/try_execfile.py
diff --git a/tools/telemetry/third_party/coverage/tests/try_execfile.py b/tools/telemetry/third_party/coverage/tests/try_execfile.py
new file mode 100644
index 0000000000000000000000000000000000000000..70905071ef80644c221dcfabfc8178aaf623668b
--- /dev/null
+++ b/tools/telemetry/third_party/coverage/tests/try_execfile.py
@@ -0,0 +1,84 @@
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
+# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
+
+"""Test file for run_python_file.
+
+This file is executed two ways::
+
+ $ coverage run try_execfile.py
+
+and::
+
+ $ python try_execfile.py
+
+The output is compared to see that the program execution context is the same
+under coverage and under Python.
+
+It is not crucial that the execution be identical, there are some differences
+that are OK. This program canonicalizes the output to gloss over those
+differences and get a clean diff.
+
+"""
+
+import json, os, sys
+
+# sys.path varies by execution environments. Coverage.py uses setuptools to
+# make console scripts, which means pkg_resources is imported. pkg_resources
+# removes duplicate entries from sys.path. So we do that too, since the extra
+# entries don't affect the running of the program.
+
+def same_file(p1, p2):
+ """Determine if `p1` and `p2` refer to the same existing file."""
+ if not p1:
+ return not p2
+ if not os.path.exists(p1):
+ return False
+ if not os.path.exists(p2):
+ return False
+ if hasattr(os.path, "samefile"):
+ return os.path.samefile(p1, p2)
+ else:
+ norm1 = os.path.normcase(os.path.normpath(p1))
+ norm2 = os.path.normcase(os.path.normpath(p2))
+ return norm1 == norm2
+
+def without_same_files(filenames):
+ """Return the list `filenames` with duplicates (by same_file) removed."""
+ reduced = []
+ for filename in filenames:
+ if not any(same_file(filename, other) for other in reduced):
+ reduced.append(filename)
+ return reduced
+
+cleaned_sys_path = [os.path.normcase(p) for p in without_same_files(sys.path)]
+
+DATA = "xyzzy"
+
+import __main__
+
+def my_function(a):
+ """A function to force execution of module-level values."""
+ return "my_fn(%r)" % a
+
+FN_VAL = my_function("fooey")
+
+loader = globals().get('__loader__')
+fullname = getattr(loader, 'fullname', None) or getattr(loader, 'name', None)
+
+globals_to_check = {
+ '__name__': __name__,
+ '__file__': __file__,
+ '__doc__': __doc__,
+ '__builtins__.has_open': hasattr(__builtins__, 'open'),
+ '__builtins__.dir': dir(__builtins__),
+ '__loader__ exists': loader is not None,
+ '__loader__.fullname': fullname,
+ '__package__': __package__,
+ 'DATA': DATA,
+ 'FN_VAL': FN_VAL,
+ '__main__.DATA': getattr(__main__, "DATA", "nothing"),
+ 'argv': sys.argv,
+ 'path': cleaned_sys_path,
+}
+
+print(json.dumps(globals_to_check, indent=4, sort_keys=True))
« no previous file with comments | « tools/telemetry/third_party/coverage/tests/test_xml.py ('k') | tools/telemetry/third_party/coverage/tox.ini » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698