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

Unified Diff: scripts/slave/unittests/test_env.py

Issue 225633007: Upgrade to coverage 3.7.1 and have it auto-build itself on first use. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: no more warning Created 6 years, 9 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
« no previous file with comments | « scripts/slave/unittests/recipe_configs_test.py ('k') | third_party/coverage-3.6/AUTHORS.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: scripts/slave/unittests/test_env.py
diff --git a/scripts/slave/unittests/test_env.py b/scripts/slave/unittests/test_env.py
index f299b6f780c55ff28d36a3a6fe0f07718975122c..832b4bc79942c66d5fbe6d45320eeeb6c95bbb60 100644
--- a/scripts/slave/unittests/test_env.py
+++ b/scripts/slave/unittests/test_env.py
@@ -22,22 +22,46 @@ sys.path.insert(0, os.path.join(BASE_DIR, 'third_party', 'buildbot_slave_8_4'))
sys.path.insert(0, os.path.join(BASE_DIR, 'third_party', 'twisted_10_2'))
sys.path.insert(0, os.path.join(BASE_DIR, 'third_party', 'mock-1.0.1'))
-try:
- # The C-compiled coverage engine is WAY faster than the pure python version.
- # If we have it, then don't bother with the pure python one.
- import coverage
-except ImportError:
- sys.path.insert(0, os.path.join(BASE_DIR, 'third_party', 'coverage-3.6'))
- import coverage
-
-def print_coverage_warning():
- if not hasattr(coverage.collector, 'CTracer'):
- print "WARNING: Using the pure-python coverage module."
- print " Install the native python coverage module to speed recipe"
- print " training up by an order of magnitude."
- print
- print " pip install coverage"
- print " OR"
- print " easy_install coverage"
+def ensure_coverage_importable():
+ try:
+ from distutils.version import StrictVersion
+ import coverage
+ if (StrictVersion(coverage.__version__) < StrictVersion('3.7') or
+ not coverage.collector.CTracer):
+ del sys.modules['coverage']
+ del coverage
+ else:
+ return
+ except ImportError:
+ pass
+
+ from pkg_resources import get_build_platform
+ try:
+ # Python 2.7 or >= 3.2
+ from sysconfig import get_python_version
+ except ImportError:
+ from distutils.sysconfig import get_python_version
+
+ cov_dir = os.path.join(BASE_DIR, 'third_party', 'coverage-3.7.1')
+ cov_egg = os.path.join(cov_dir, 'dist', 'coverage-3.7.1-py%s-%s.egg' % (
Vadim Sh. 2014/04/04 19:21:59 That's what bdist_egg produces? It there a way to
iannucci 2014/04/04 19:34:35 This is taken from setuptools' code. I can force g
+ get_python_version(), get_build_platform()))
+
+ # The C-compiled coverage engine is WAY faster (and less buggy) than the pure
+ # python version, so we build the dist_egg if necessary.
+ if not os.path.exists(cov_egg):
+ import subprocess
+ print 'Building Coverage 3.7.1'
+ p = subprocess.Popen([sys.executable, 'setup.py', 'bdist_egg'], cwd=cov_dir,
Vadim Sh. 2014/04/04 19:21:59 It may be worth to add some instructions how to bu
Vadim Sh. 2014/04/04 19:32:21 Oh, it's already possible to import it from system
iannucci 2014/04/04 19:34:35 Yeah I wasn't sure how to support windows, but if
Vadim Sh. 2014/04/04 19:47:08 Also, bdist_egg needs python-dev and setuptools, r
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ stdout, stderr = p.communicate()
+ if p.returncode != 0:
+ print 'Error while building :('
+ print stdout
+ print stderr
+ sys.exit(1)
+
+ sys.path.insert(0, cov_egg)
Vadim Sh. 2014/04/04 19:21:59 Call 'ensure_coverage_importable' again, to ensure
iannucci 2014/04/04 19:34:35 ? It's called below... it will either pass (and co
Vadim Sh. 2014/04/04 19:47:08 I mean second time, after egg is build, to assert
+
+ensure_coverage_importable()
from common import find_depot_tools # pylint: disable=W0611
« no previous file with comments | « scripts/slave/unittests/recipe_configs_test.py ('k') | third_party/coverage-3.6/AUTHORS.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698