From 54596396bc3310d7e35b0b74165663293e307ba8 Mon Sep 17 00:00:00 2001 From: Florian Walch Date: Tue, 22 Sep 2015 14:33:08 +0200 Subject: [PATCH 1/2] test: Check for installed Python module with Vimscript function. Use the existing Vimscript function provider#pythonx#Detect() to determine whether the Neovim Python module is installed and Python 2/3 tests can be run. --- test/functional/provider/python3_spec.lua | 22 +++++++++++----------- test/functional/provider/python_spec.lua | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/test/functional/provider/python3_spec.lua b/test/functional/provider/python3_spec.lua index 5be5390370..5ecc1a0a91 100644 --- a/test/functional/provider/python3_spec.lua +++ b/test/functional/provider/python3_spec.lua @@ -1,19 +1,19 @@ -do - local proc = io.popen( - [[python3 -c 'import neovim, sys; sys.stdout.write("ok")' 2> /dev/null]]) - if proc:read() ~= 'ok' then - pending( - 'python3 (or the python3 neovim module) is broken or missing', - function() end) - return - end -end - local helpers = require('test.functional.helpers') local eval, command, feed = helpers.eval, helpers.command, helpers.feed local eq, clear, insert = helpers.eq, helpers.clear, helpers.insert local expect, write_file = helpers.expect, helpers.write_file +do + command('let [g:interp, g:errors] = provider#pythonx#Detect(3)') + local errors = eval('g:errors') + if errors ~= '' then + pending( + 'Python 3 (or the Python 3 neovim module) is broken or missing:\n' .. errors, + function() end) + return + end +end + describe('python3 commands and functions', function() before_each(function() clear() diff --git a/test/functional/provider/python_spec.lua b/test/functional/provider/python_spec.lua index ec1a853546..f37c16a26a 100644 --- a/test/functional/provider/python_spec.lua +++ b/test/functional/provider/python_spec.lua @@ -1,19 +1,19 @@ -do - local proc = io.popen( - [[python -c 'import neovim, sys; sys.stdout.write("ok")' 2> /dev/null]]) - if proc:read() ~= 'ok' then - pending( - 'python (or the python neovim module) is broken or missing', - function() end) - return - end -end - local helpers = require('test.functional.helpers') local eval, command, feed = helpers.eval, helpers.command, helpers.feed local eq, clear, insert = helpers.eq, helpers.clear, helpers.insert local expect, write_file = helpers.expect, helpers.write_file +do + command('let [g:interp, g:errors] = provider#pythonx#Detect(2)') + local errors = eval('g:errors') + if errors ~= '' then + pending( + 'Python 2 (or the Python 2 neovim module) is broken or missing:\n' .. errors, + function() end) + return + end +end + describe('python commands and functions', function() before_each(function() clear() From a3399f9a63bf6c7f5c13e7b6a82847f5af40c249 Mon Sep 17 00:00:00 2001 From: Florian Walch Date: Tue, 22 Sep 2015 14:36:15 +0200 Subject: [PATCH 2/2] Travis: Install Python 3 to run Python 3 tests. Install Python 3.3 from the Deadsnakes PPA. As this doesn't have pip, install it manually into ~/.local. ~/.local/bin is apparently in Travis's default PATH, meaning "pip" doesn't refer to Python 2's pip anymore, but to the manually installed Python 3 version. Updated the scripts to use version- suffixed executable names (e.g. pip2.7). Set CC=cc to use system's default compiler when installing Python modules, as gcc on OS X had a problem with compiling one of the dependencies of the Neovim Python module. --- .ci/before_install.sh | 17 ++++++++++++++++- .ci/install.sh | 14 ++++++++++++-- .travis.yml | 19 ++++++++++--------- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/.ci/before_install.sh b/.ci/before_install.sh index e70654c9be..2a1ac05569 100755 --- a/.ci/before_install.sh +++ b/.ci/before_install.sh @@ -10,4 +10,19 @@ fi if [[ "${TRAVIS_OS_NAME}" == osx ]]; then brew update fi -pip install --user --upgrade pip + +echo "Upgrade Python 2's pip." +pip2.7 install --user --upgrade pip + +if [[ "${TRAVIS_OS_NAME}" == osx ]]; then + echo "Install Python 3." + brew install python3 + echo "Upgrade Python 3's pip." + pip3 install --user --upgrade pip +else + # TODO: Replace with upgrade when Travis gets python3-pip package. + echo "Install pip for Python 3." + curl -sSL https://bootstrap.pypa.io/get-pip.py -o "${HOME}/get-pip.py" + # After this, pip in PATH will refer to Python 3's pip. + python3.3 "${HOME}/get-pip.py" --user --upgrade +fi diff --git a/.ci/install.sh b/.ci/install.sh index 42c8026396..ad3ef1b8b7 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -14,7 +14,17 @@ elif [[ "${BUILD_MINGW}" == ON ]]; then # binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64-dev mingw-w64-tools echo "Downloading MinGW..." - wget -q -O - "http://downloads.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/gcc-4.8-release/i686-w64-mingw32-gcc-4.8.0-linux64_rubenvb.tar.xz" | tar xJf - -C "${HOME}/.local" + curl -sSL "http://downloads.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/gcc-4.8-release/i686-w64-mingw32-gcc-4.8.0-linux64_rubenvb.tar.xz" | tar xJf - -C "${HOME}/.local" fi -pip install --user --upgrade cpp-coveralls neovim +# Set CC to default to avoid compilation problems +# when installing Python modules. +echo "Install neovim module and coveralls for Python 2." +CC=cc pip2.7 install --user --upgrade neovim cpp-coveralls + +echo "Install neovim module for Python 3." +if [[ "${TRAVIS_OS_NAME}" == osx ]]; then + CC=cc pip3 install --user --upgrade neovim +else + CC=cc pip3.3 install --user --upgrade neovim +fi diff --git a/.travis.yml b/.travis.yml index bd2c9b3938..f790c715ab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ env: # http://docs.travis-ci.com/user/speeding-up-the-build/#Paralellizing-your-build-on-one-VM - MAKE_CMD="make -j2" # Update PATH for pip and MinGW. - - PATH="$(python -c 'import site; print(site.getuserbase())')/bin:$HOME/.local/mingw32/bin:$PATH" + - PATH="$(python2.7 -c 'import site; print(site.getuserbase())')/bin:$HOME/.local/mingw32/bin:$PATH" # LLVM symbolizer path. - LLVM_SYMBOLIZER="$(which llvm-symbolizer-3.6)" # Force verification of DLOG macros. @@ -101,28 +101,29 @@ after_success: .ci/after_success.sh addons: apt: sources: + # TODO: Remove PPA when Travis gets Python >=3.3. + - deadsnakes - llvm-toolchain-precise-3.6 - ubuntu-toolchain-r-test packages: - # Basic Neovim/test dependencies. - autoconf - automake - build-essential - - cmake - - gdb - - libtool - - pkg-config - - unzip - - xclip - # Additional compilers/tools. - clang-3.6 + - cmake - g++-5-multilib - g++-multilib - gcc-5-multilib - gcc-multilib + - gdb - libc6-dev-i386 + - libtool - llvm-3.6-dev + - pkg-config + - python3.3-dev + - unzip - valgrind + - xclip branches: except: