Skip to content

Commit

Permalink
Run lint shard with Python 2 during daily CI instead of nightly cron …
Browse files Browse the repository at this point in the history
…job (#7391)

### Problem
The lint shard is a very cost-effective way to prevent Py2 regressions. For only about 8 minutes of extra total worker time, we can ensure we are always using defined symbols, for example.

This would have prevented #7381 for example. In fact, that PR didn't even properly fix the issue. Running the lint shard during daily CI would have both prevented the issue in the first place and ensured the hotfix worked.

### Solution
Run the lint shard with both Py2 and Py3 during daily CI. No longer run during nightly cron job.

Also fix the issue #7381 was supposed to fix.

### Result
We should have less Python 2 regressions.

While CI will take 10 minutes longer of total worker time, the wall time should not be changed (beyond when we don't have enough workers). This extra time is worth the lowered risk of regressions.
  • Loading branch information
Eric-Arellano committed Mar 18, 2019
1 parent 0672383 commit 0847a51
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -333,6 +333,7 @@ py36_osx_build_engine: &py36_osx_build_engine
py27_lint: &py27_lint
<<: *py27_linux_test_config
name: "Self-checks and lint (Py2.7 PEX)"
stage: *test
env:
- *py27_linux_test_config_env
- CACHE_NAME=linuxselfchecks.py27
Expand Down
1 change: 1 addition & 0 deletions build-support/travis/travis.yml.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ py36_osx_build_engine: &py36_osx_build_engine
py27_lint: &py27_lint
<<: *py27_linux_test_config
name: "Self-checks and lint (Py2.7 PEX)"
stage: *test
env:
- *py27_linux_test_config_env
- CACHE_NAME=linuxselfchecks.py27
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import os
from unittest import skipIf

from future.utils import PY3
from future.utils import PY2

from pants.util.process_handler import subprocess

Expand Down Expand Up @@ -48,11 +48,13 @@ def python_interpreter_path(version):
:returns: the normalized path to the interpreter binary if found; otherwise `None`
:rtype: string
"""
if PY2:
FileNotFoundError = IOError
try:
command = ['python{}'.format(version), '-c', 'import sys; print(sys.executable)']
py_path = subprocess.check_output(command).decode('utf-8').strip()
return os.path.realpath(py_path)
except (subprocess.CalledProcessError, FileNotFoundError if PY3 else IOError):
except (subprocess.CalledProcessError, FileNotFoundError):
return None


Expand Down

0 comments on commit 0847a51

Please sign in to comment.