Skip to content

Commit

Permalink
build: add full Python 3 tests to Travis CI
Browse files Browse the repository at this point in the history
PR-URL: nodejs#29360
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: David Carlier <devnexen@gmail.com>
  • Loading branch information
cclauss authored and Trott committed Sep 1, 2019
1 parent 89aea15 commit c602b0a
Showing 1 changed file with 92 additions and 45 deletions.
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
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

0 comments on commit c602b0a

Please sign in to comment.