Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: add full Python 3 tests to Travis CI #29360

Closed
wants to merge 4 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 92 additions & 45 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,110 +8,157 @@ os: linux
language: cpp
env:
global:
- PYTHON_VERSION="2.7.15"
- PYTHON2_VERSION="2.7.15"
- PYTHON3_VERSION="3.6.7" # "3.7.1" after #29326 is fixed
- PYTHON2_CACHE=$HOME/.ccache/py${PYTHON2_VERSION}
- PYTHON3_CACHE=$HOME/.ccache/py${PYTHON3_VERSION}
cache:
ccache: true
directories:
- ${PYTHON2_CACHE}
- ${PYTHON3_CACHE}
jobs:
include:
- stage: "Compile"
name: "Compile V8"
cache: ccache
name: "Compile V8 (py2)"
addons:
apt:
update: true
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the update: true lines should be there in the final result or should that last commit (that adds them) be omitted when landing? I'm guessing they should be there but I'm asking anyway because the commit message suggests it might be temporary--"Force a retest"--and the Travis docs mildly discourage its use.

Copy link
Contributor Author

@cclauss cclauss Sep 1, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think they can stay in. I believe that the Travis docs are discouraging upgrade vs. update.

sources:
- ubuntu-toolchain-r-test
packages:
- g++-6
install: *ccache-setup-steps
script:
- pyenv global ${PYTHON_VERSION}
- pyenv global ${PYTHON2_VERSION}
- ./configure
- make -j2 -C out V=1 v8

- name: "Compile Node.js"
cache: ccache
- name: "Compile V8 (py3)"
addons:
apt:
update: true
sources:
- ubuntu-toolchain-r-test
packages:
- g++-6
install: *ccache-setup-steps
script:
- pyenv global ${PYTHON_VERSION}
- pyenv global ${PYTHON3_VERSION}
# - ./configure # workaround pending #25878
- python3 configure.py
- make -j2 -C out V=1 v8

- name: "Compile Node.js (py2)"
addons:
apt:
update: true
sources:
- ubuntu-toolchain-r-test
packages:
- g++-6
install: *ccache-setup-steps
script:
- pyenv global ${PYTHON2_VERSION}
- ./configure
- make -j2 V=1
- cp out/Release/node /home/travis/.ccache
- cp out/Release/cctest /home/travis/.ccache
- cp out/Release/node ${PYTHON2_CACHE}
- cp out/Release/cctest ${PYTHON2_CACHE}

- name: "Compile Node.js (py3)"
addons:
apt:
update: true
sources:
- ubuntu-toolchain-r-test
packages:
- g++-6
install: *ccache-setup-steps
script:
- pyenv global ${PYTHON3_VERSION}
# - ./configure # workaround pending #25878
- python3 configure.py
- make -j2 V=1
- cp out/Release/node ${PYTHON3_CACHE}
- cp out/Release/cctest ${PYTHON3_CACHE}

- stage: "Tests"
name: "Test JS Suites"
cache: ccache
name: "Test JS Suites (py2)"
install:
- mkdir -p out/Release
- cp ${PYTHON2_CACHE}/node out/Release/node
script:
- pyenv global ${PYTHON2_VERSION}
- python tools/test.py -j 2 -p dots --report --mode=release --flaky-tests=dontcare default

- name: "Test JS Suites (py3)"
install:
- mkdir -p out/Release
- cp /home/travis/.ccache/node out/Release/node
- cp ${PYTHON3_CACHE}/node out/Release/node
script:
- pyenv global ${PYTHON_VERSION}
- pyenv global ${PYTHON3_VERSION}
- python tools/test.py -j 2 -p dots --report --mode=release --flaky-tests=dontcare default

- name: "Test C++ Suites"
cache: ccache
- name: "Test C++ Suites (py2)"
install:
- export CCACHE_NOSTATS=1
- export CCACHE_SLOPPINESS="file_macro,include_file_mtime,include_file_ctime,time_macros,file_stat_matches"
- export CC='ccache gcc'
- export CXX='ccache g++'
- mkdir -p out/Release
- cp /home/travis/.ccache/node out/Release/node
- cp ${PYTHON2_CACHE}/node out/Release/node
- ln -fs out/Release/node node
- cp /home/travis/.ccache/cctest out/Release/cctest
- cp ${PYTHON2_CACHE}/cctest out/Release/cctest
- touch config.gypi
script:
- pyenv global ${PYTHON_VERSION}
- pyenv global ${PYTHON2_VERSION}
- out/Release/cctest
- make -j1 V=1 test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp
- python tools/test.py -j 2 -p dots --report --mode=release --flaky-tests=dontcare addons js-native-api node-api

- name: "Linter"
language: node_js
node_js: "node"
- name: "Test C++ Suites (py3)"
install:
- pyenv global ${PYTHON_VERSION}
- make lint-py-build || true
- export CCACHE_NOSTATS=1
- export CCACHE_SLOPPINESS="file_macro,include_file_mtime,include_file_ctime,time_macros,file_stat_matches"
- export CC='ccache gcc'
- export CXX='ccache g++'
- mkdir -p out/Release
- cp ${PYTHON3_CACHE}/node out/Release/node
- ln -fs out/Release/node node
- cp ${PYTHON3_CACHE}/cctest out/Release/cctest
- touch config.gypi
script:
- NODE=$(which node) make lint lint-py
- pyenv global ${PYTHON3_VERSION}
- out/Release/cctest
- make -j1 V=1 test/addons/.buildstamp test/js-native-api/.buildstamp test/node-api/.buildstamp
- python tools/test.py -j 2 -p dots --report --mode=release --flaky-tests=dontcare addons js-native-api node-api

- name: "First commit message adheres to guidelines at <a href=\"https://goo.gl/p2fr5Q\">https://goo.gl/p2fr5Q</a>"
if: type = pull_request
- name: "Linter (py2)"
language: node_js
node_js: "node"
install:
- pyenv global ${PYTHON2_VERSION}
- make lint-py-build || true
script:
- if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then
bash -x tools/lint-pr-commit-message.sh ${TRAVIS_PULL_REQUEST};
fi
- NODE=$(which node) make lint lint-py

- name: "Python 3 is EXPERIMENTAL (Py36)"
- name: "Linter (py3)"
language: node_js
node_js: "node"
install:
- pyenv global 3.6.7
- python3.6 -m pip install --upgrade pip
- make lint-py-build
- pyenv global ${PYTHON3_VERSION}
- make lint-py-build || true
script:
- NODE=$(which node) make lint lint-py
- python3.6 ./configure.py
- NODE=$(which node) make test

- name: "Python 3 is EXPERIMENTAL (Py37)"
- name: "First commit message adheres to guidelines at <a href=\"https://goo.gl/p2fr5Q\">https://goo.gl/p2fr5Q</a>"
if: type = pull_request
language: node_js
node_js: "node"
install:
- pyenv global 3.7.1
- python3.7 -m pip install --upgrade pip
- make lint-py-build
script:
- NODE=$(which node) make lint lint-py
- python3.7 ./configure.py
- NODE=$(which node) make test
- if [ "${TRAVIS_PULL_REQUEST}" != "false" ]; then
bash -x tools/lint-pr-commit-message.sh ${TRAVIS_PULL_REQUEST};
fi

allow_failures:
- name: "Python 3 is EXPERIMENTAL (Py36)"
- name: "Python 3 is EXPERIMENTAL (Py37)"
- name: "Test C++ Suites (py3)" # allow_failures pending #29246