Skip to content
Closed
Show file tree
Hide file tree
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
38 changes: 25 additions & 13 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,43 @@
sudo: required
language: python
sudo: false

language: python
python:
- 2.7
- 3.3
- 3.4
- 3.5
- 3.6

before_install:
- sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu/ trusty main universe"
- sudo apt-get install software-properties-common
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
- echo "deb http://download.mono-project.com/repo/debian wheezy/snapshots/4.2.4.4 main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
- echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
- sudo apt-get update
- sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" install mono-devel mono-complete referenceassemblies-pcl ca-certificates-mono nunit-console
env:
global:
- LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
Copy link
Contributor

Choose a reason for hiding this comment

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

can you explain the purpose of this?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It can help get a bit more info on the tracebacks:
http://stackoverflow.com/a/18947029/5208670

- SEGFAULT_SIGNALS=all
- PYTHONUNBUFFERED=True

addons:
apt:
sources:
- mono
- mono-libtiff-compat
packages:
- mono-devel
- ca-certificates-mono

install:
- pip install six
- pip install pycparser
- python setup.py build_ext --inplace
- pip install pycparser coverage codecov six
- coverage run setup.py build_ext --inplace

script:
- export PYTHONPATH=`pwd`:$PYTHONPATH
- python src/tests/runtests.py
# - nunit-console src/embed_tests/bin/x64/ReleaseMono/Python.EmbeddingTest.dll

after_success:
# Uncomment if need to geninterop, ie. py37 final
# - python tools/geninterop/geninterop.py

# Waiting on mono-cov support or SharpCover
- codecov

notifications:
email: false
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

[![appveyor shield][]](https://ci.appveyor.com/project/pythonnet/pythonnet/branch/master)
[![travis shield][]](https://travis-ci.org/pythonnet/pythonnet)
[![codecov shield][]](https://codecov.io/github/pythonnet/pythonnet)
[![license shield][]](./LICENSE)
[![pypi package version][]](https://pypi.python.org/pypi/pythonnet)
[![python supported shield][]](https://pypi.python.org/pypi/pythonnet)
Expand Down Expand Up @@ -80,6 +81,8 @@ int32

[appveyor shield]: https://img.shields.io/appveyor/ci/pythonnet/pythonnet/master.svg?label=AppVeyor

[codecov shield]: https://img.shields.io/codecov/c/github/pythonnet/pythonnet/pytest.svg?label=codecov

[license shield]: https://img.shields.io/badge/license-MIT-blue.svg

[pypi package version]: https://img.shields.io/pypi/v/pythonnet.svg
Expand Down
40 changes: 27 additions & 13 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ init:
- if %PLATFORM%==x86 (set NUNIT=%NUNIT%-x86)
- if %PLATFORM%==x64 (set PYTHON=%PYTHON%-x64)
Copy link
Member

Choose a reason for hiding this comment

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

Why don't you use %CONDA_PY%? Why change the casing?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

%CONDA_PY% was removed originally, I added it back later, but decided to keep it on PYTHON_VERSION in case it was removed later.
The casing was to keep all constants on upper case and the rest on lowercase.


# Shortcut path to executables. Mostly because of OpenCover
- set PYTHON_EXE=%PYTHON%\python.exe
- set NUNIT_EXE=.\packages\NUnit.Runners.2.6.2\tools\%NUNIT%.exe
- set OPENCOVER_EXE=.\packages\OpenCover.4.6.519\tools\OpenCover.Console.exe
Copy link
Member

Choose a reason for hiding this comment

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

You are hard-coding versions here, this just leads to unnecessary pain (e.g. I'd like to update NUnit in the future).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Its a very annoying shortcoming from OpenCover.

- set RUNTIME_DIR=.\src\runtime\bin\%PLATFORM%\ReleaseWin\
- set CS_TESTS=.\src\embed_tests\bin\%PLATFORM%\ReleaseWin\Python.EmbeddingTest.dll

# Prepend newly installed Python to the PATH of this build
- set PATH=%PYTHON%;%PYTHON%\Scripts;%PATH%

Expand All @@ -47,26 +54,33 @@ init:
- python -c "import ctypes; print(ctypes.sizeof(ctypes.c_wchar))"

install:
# install conda and deps
- ps: .\ci\install_miniconda.ps1
# install for wheels & coverage
- pip install --upgrade pip wheel coverage codecov six

# install for wheels
- pip install --upgrade pip wheel six
# Install OpenCover. Can't put on packages.config; not Linux/Mono compatible
- .\tools\nuget\nuget.exe install OpenCover -OutputDirectory packages

build_script:
# build clean sdist & wheel
- python setup.py sdist bdist_wheel

# build and dist conda package
- '%CMD_IN_ENV% %CONDA_BLD%\Scripts\conda build conda.recipe'
- ps: $CONDA_PKG=(&"$env:CONDA_BLD\Scripts\conda" build conda.recipe --output -q)
- ps: Copy-Item $CONDA_PKG "$env:APPVEYOR_BUILD_FOLDER\dist\"
# build clean sdist & wheel with coverage of setup.py, install local wheel
- coverage run setup.py sdist bdist_wheel

test_script:
- pip install --no-index --find-links=.\dist\ pythonnet
- ps: Copy-Item (Resolve-Path .\build\*\Python.Test.dll) C:\testdir
- python src\tests\runtests.py
# - "%NUNIT% src/embed_tests/bin/%PLATFORM%/ReleaseWin/Python.EmbeddingTest.dll"

# Run python tests with C# coverage
- '%OPENCOVER_EXE% -register:user -searchdirs:%RUNTIME_DIR% -output:py.coverage -target:%PYTHON_EXE% -targetargs:src\tests\runtests.py -returntargetcode'

# Run Embedded tests with C# coverage
# Embedded tests disabled due to open issues
# - '%OPENCOVER_EXE% -register:user -searchdirs:%RUNTIME_DIR% -output:cs.coverage -target:%NUNIT_EXE% -targetargs:%CS_TESTS% -returntargetcode'

# Build conda-recipe on Pull Requests
- ps: .\ci\appveyor_build_recipe.ps1

on_finish:
# Upload coverage
- codecov

artifacts:
- path: dist\*
6 changes: 6 additions & 0 deletions ci/appveyor_build_recipe.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
if ($env:APPVEYOR_PULL_REQUEST_NUMBER) {
Invoke-Expression .\ci\install_miniconda.ps1
&"$env:CONDA_BLD\Scripts\conda" build conda.recipe --dirty -q
$CONDA_PKG=(&"$env:CONDA_BLD\Scripts\conda" build conda.recipe --output -q)
Copy-Item $CONDA_PKG "$env:APPVEYOR_BUILD_FOLDER\dist\"
}
5 changes: 5 additions & 0 deletions conda.recipe/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Conda Recipe

The files here are needed to build Python.Net with conda

http://conda.pydata.org/docs/building/recipe.html
1 change: 1 addition & 0 deletions src/embed_tests/packages.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NUnit" version="3.5.0" targetFramework="net40" />
<package id="NUnit.Runners" version="2.6.2" targetFramework="net40" />
</packages>
42 changes: 42 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
[tox]
skipsdist=True
skip_missing_interpreters=True
envlist =
py27
py33
py34
py35
py36
check

[testenv]
recreate=True
basepython =
py27: {env:TOXPYTHON:python2.7}
py33: {env:TOXPYTHON:python3.3}
py34: {env:TOXPYTHON:python3.4}
py35: {env:TOXPYTHON:python3.5}
py36: {env:TOXPYTHON:python3.6}
check: python3.5
setenv =
PYTHONUNBUFFERED=True
DISTUTILS_DEBUG=
passenv =
*
commands =
python --version
python -c "import struct; print('ARCH: %d' % (struct.calcsize('P') * 8))"
python -c "import ctypes; print('UCS%d' % ctypes.sizeof(ctypes.c_wchar))"
python setup.py bdist_wheel
pip install --no-index --find-links=dist/ pythonnet
{posargs:python src\tests\runtests.py}

[testenv:check]
ignore_errors=True
deps =
check-manifest
flake8
commands =
check-manifest {toxinidir}
flake8 src setup.py
python setup.py check --strict --metadata