Skip to content

Commit

Permalink
21 Test infrastructure (#24)
Browse files Browse the repository at this point in the history
* First pass at tox/pytest/codecov/travis/appveyor

* Add versioneer

* Drop py37 on windows until twisted supports it; use 3.6 for dist

* use py3.6 for dist on travis

* add get_version.py for AppVeyor

* skip 3.5 on AppVeyor due to it being 3.5.3

* update requirements.test.txt

* print python version in codecov tox env

* tidy tox.ini

* require tox 3.1

* try again for 3.6 for dist...

* try again for appveyor

* try again for appveyor... again

* tidy appveyor.yml

* fix actual tests on appveyor

* Add badges to README.rst

* twisted==18.9.0rc1 and py35/37 testing on AppVeyor

* First pass at a circle config

* try to fix circle templates

* again

* Revert "again"

This reverts commit 2eb1ed6.

* just checking

* virtualenv for circle

* $PYTHON -> python3

* correct to .circleci/pyenvinstall.py

* correct to python3

* add missing checkout step for osx

* decode pyenv list

* rework aliases

* fix yaml errors

* fix yaml errors

* fix yaml errors

* try to cache pyenv

* cache brew and pyenv together

* skip existing when pyenv installing

* pyenv update

* tray again for caching

* and maybe cache this time

* Revert "pyenv update"

This reverts commit 88828bf.

* this is weird

* hmmph

* eehhh

* ...

* ,,,

* just explicitly define the pyenv python version

* ---

* ugh

* env vars wrong all this time

* once more

* workaround

* 2.1

* Rework .circleci/config.yml to version 2.1

* names and environment for osx

* take 2

* add dist jobs

* drop useless steps indirection

* $PYENV_PYTHON_VERSION -> << parameters.pyenv_python_version >>

* correct artifact path on circle

* use specified pyenv python version directly for cache key

* Set PATH directly in environment

* separate codecov to it's own step

* correct previous

* Revert "correct previous"

This reverts commit 104902d.

* Revert "Set PATH directly in environment"

This reverts commit b406625.

* Add Circle build status badge

* codecov --verbose

* Revert "codecov --verbose"

This reverts commit 0dddff3.

* Add CIrcleCI variables to passenv

* codecov==2.0.5

codecov/codecov-python#138
twisted/twisted#831
https://twistedmatrix.com/trac/ticket/9196
https://github.com/codecov/support/issues/402

* Revert "codecov==2.0.5"

This reverts commit ba6dcd5.

* WIP

* Test against both PyQt5 and PySide2

* attempt at unique names on circle again with qtness

* take two at circle names

* pick pyqt5 as qtness for dist

* pass through qtness

* hacky fix for dist on circle#

* add missing qtness passthrough for osx

* Update requirements.test.txt

* Update requirements.tox.txt
  • Loading branch information
altendky authored and crwood committed Nov 30, 2018
1 parent 11575e8 commit 58410aa
Show file tree
Hide file tree
Showing 19 changed files with 2,764 additions and 4 deletions.
190 changes: 190 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
version: 2.1

aliases:
- &parameters
parameters:
pyenv_python_version:
type: string
default: ">unspecified<"
python_version:
type: string
toxenv:
type: string
qtness:
type: string
default: ""

- &py35_arguments
name: py35
pyenv_python_version: "3.5.6"
python_version: "3.5"
toxenv: "py35"

- &py36_arguments
name: py36
pyenv_python_version: "3.6.7"
python_version: "3.6"
toxenv: "py36"

- &py37_arguments
name: py37
pyenv_python_version: "3.7.1"
python_version: "3.7"
toxenv: "py37"

- &dist_arguments
<<: *py37_arguments
toxenv: "dist"

commands:
run_prepare:
steps:
- run:
name: Prepare
command: |
python3 --version
python3 -m pip --version
python3 -m pip install -q --user --ignore-installed --upgrade virtualenv
python3 -m virtualenv venv
venv/bin/python -m pip install --upgrade pip
venv/bin/python -m pip freeze
venv/bin/python --version
venv/bin/pip --version
venv/bin/pip install tox
run_test:
steps:
- run:
name: Test
command: |
venv/bin/tox
- run:
name: Codecov
command: |
venv/bin/tox -e codecov
store_dist:
steps:
- store_artifacts:
path: dist/


executors:
linux_executor:
<<: *parameters
docker:
- image: circleci/python:<< parameters.python_version >>
environment:
TOXENV: << parameters.toxenv >>-<< parameters.qtness >>

osx_executor:
<<: *parameters
macos:
xcode: "10.0.0"
environment:
TOXENV: << parameters.toxenv >>-<< parameters.qtness >>


jobs:
linux:
<<: *parameters
executor:
name: linux_executor
python_version: << parameters.python_version >>
toxenv: << parameters.toxenv >>
qtness: << parameters.qtness >>
steps:
- checkout
- run_prepare
- run_test
- store_dist

osx:
<<: *parameters
executor:
name: osx_executor
python_version: << parameters.python_version >>
toxenv: << parameters.toxenv >>
qtness: << parameters.qtness >>
steps:
- checkout
- restore_cache:
keys:
- brew_pyenv-<< parameters.pyenv_python_version >>
- run:
name: OSX Prepare
command: |
brew install readline xz pyenv
pyenv install --skip-existing << parameters.pyenv_python_version >>
pyenv global << parameters.pyenv_python_version >>
echo 'export PATH=~/.pyenv/shims:$PATH' >> $BASH_ENV
- save_cache:
key: brew_pyenv-<< parameters.pyenv_python_version >>
paths:
- "~/.pyenv"
- "/usr/local/Homebrew"
- run_prepare
- run_test
- store_dist


workflows:
version: 2

all:
jobs:
- linux:
name: linux-dist
<<: *dist_arguments
- linux:
name: linux-py35-pyqt5
<<: *py35_arguments
qtness: pyqt5
- linux:
name: linux-py35-pyside2
<<: *py35_arguments
qtness: pyside2
- linux:
name: linux-py36-pyqt5
<<: *py36_arguments
qtness: pyqt5
- linux:
name: linux-py36-pyside2
<<: *py36_arguments
qtness: pyside2
- linux:
name: linux-py37-pyqt5
<<: *py37_arguments
qtness: pyqt5
- linux:
name: linux-py37-pyside2
<<: *py37_arguments
qtness: pyside2

- osx:
name: osx-dist
<<: *dist_arguments
- osx:
name: osx-py35-pyqt5
<<: *py35_arguments
qtness: pyqt5
- osx:
name: osx-py35-pyside2
<<: *py35_arguments
qtness: pyside2
- osx:
name: osx-py36-pyqt5
<<: *py36_arguments
qtness: pyqt5
- osx:
name: osx-py36-pyside2
<<: *py36_arguments
qtness: pyside2
- osx:
name: osx-py37-pyqt5
<<: *py37_arguments
qtness: pyqt5
- osx:
name: osx-py37-pyside2
<<: *py37_arguments
qtness: pyside2
7 changes: 7 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[run]
branch = True
source =
qt5reactor

[report]
show_missing = True
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
src/qt5reactor/_version.py export-subst
29 changes: 29 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
language: python

matrix:
include:
- python: 3.6
env: TOXENV=dist-
- python: 3.5
env: TOXENV=py35-pyqt5
- python: 3.5
env: TOXENV=py35-pyside2
- python: 3.6
env: TOXENV=py36-pyqt5
- python: 3.6
env: TOXENV=py36-pyside2
- python: 3.7
env: TOXENV=py37-pyqt5
dist: xenial
sudo: true
- python: 3.7
env: TOXENV=py37-pyside2
dist: xenial
sudo: true

install:
- pip install -r requirements.tox.txt

script:
- tox
- tox -e codecov
2 changes: 2 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
include versioneer.py
include src/qt5reactor/_version.py
29 changes: 29 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,33 @@
Qt5Reactor
==========

|PyPI| |Pythons| |Travis| |AppVeyor| |Circle| |GitHub|


.. |PyPI| image:: https://img.shields.io/pypi/v/qt5reactor.svg
:alt: PyPI version
:target: https://pypi.org/project/qt5reactor/

.. |Pythons| image:: https://img.shields.io/pypi/pyversions/qt5reactor.svg
:alt: supported Python versions
:target: https://pypi.org/project/qt5reactor/

.. |Travis| image:: https://travis-ci.org/sunu/qt5reactor.svg?branch=master
:alt: Travis build status
:target: https://travis-ci.org/sunu/qt5reactor

.. |AppVeyor| image:: https://ci.appveyor.com/api/projects/status/50haxti1yjugdpya/branch/master?svg=true
:alt: AppVeyor build status
:target: https://ci.appveyor.com/project/sunu/qt5reactor

.. |Circle| image:: https://circleci.com/gh/sunu/qt5reactor.svg?style=svg
:alt: Circle build status
:target: https://circleci.com/gh/sunu/qt5reactor

.. |GitHub| image:: https://img.shields.io/github/last-commit/sunu/qt5reactor/master.svg
:alt: source on GitHub
:target: https://github.com/sunu/qt5reactor


Using the QtReactor
-------------------
Expand Down
34 changes: 34 additions & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
skip_branch_with_pr: true

environment:
matrix:
- TOXENV: dist-
- TOXENV: py35-pyqt5
- TOXENV: py35-pyside2
- TOXENV: py36-pyqt5
- TOXENV: py36-pyside2
- TOXENV: py37-pyqt5
- TOXENV: py37-pyside2

# https://www.appveyor.com/docs/how-to/rdp-to-build-worker/
init:
- ps: if (Get-ChildItem Env:ENABLE_RDP -ErrorAction SilentlyContinue) {iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))} else {echo RDP not enabled}
- echo "TOXENV- %TOXENV%"

install:
- py -3.7 -m venv venv
- venv\\Scripts\\activate
- python -c "import sys; print(sys.version)"
- pip install -r requirements.tox.txt
- ps: Update-AppveyorBuild -Version "v$(python get_version.py) b$Env:APPVEYOR_BUILD_NUMBER"

build_script:
- tox
- tox -e codecov

artifacts:
- path: "dist\\*"

# https://www.appveyor.com/docs/how-to/rdp-to-build-worker/
on_finish:
- ps: if (Get-ChildItem Env:ENABLE_RDP -ErrorAction SilentlyContinue) {$blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))} else {echo RDP not enabled}
6 changes: 6 additions & 0 deletions get_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import sys

import versioneer


sys.stdout.write(versioneer.get_versions()["version"])
28 changes: 28 additions & 0 deletions requirements.test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
atomicwrites==1.2.1
attrs==18.2.0
Automat==0.7.0
constantly==15.1.0
coverage==4.5.2
decorator==4.3.0
filelock==3.0.10
greenlet==0.4.15
hyperlink==18.0.0
idna==2.7
incremental==17.5.0
more-itertools==4.3.0
pluggy==0.8.0
py==1.7.0
PyHamcrest==1.9.0
pytest==4.0.1
pytest-cov==2.6.0
pytest-twisted==1.8
-e .[test]
six==1.11.0
toml==0.10.0
tox==3.5.3
Twisted==18.9.0; platform_system != "Windows" and platform_system != "Darwin"
Twisted[osx_platform]==18.9.0; platform_system == "Darwin"
Twisted[windows_platform]==18.9.0; platform_system == "Windows"
virtualenv==16.1.0
zope.interface==4.6.0

7 changes: 7 additions & 0 deletions requirements.tox.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
filelock==3.0.10
pluggy==0.8.0
py==1.7.0
six==1.11.0
toml==0.10.0
tox==3.5.3
virtualenv==16.1.0
6 changes: 6 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[versioneer]
VCS = git
style = pep440-post
versionfile_source = src/qt5reactor/_version.py
versionfile_build = qt5reactor/_version.py
tag_prefix = v
26 changes: 22 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import os
from setuptools import setup, find_packages

import versioneer


def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()
Expand All @@ -26,16 +28,32 @@ def read(fname):

setup(
name='qt5reactor',
version='0.5',
version=versioneer.get_version(),
cmdclass=versioneer.get_cmdclass(),
license='MIT',
classifiers=classifiers,
author='Christopher R. Wood',
author_email='[email protected]',
description='Twisted Qt Integration',
long_description=read('README.rst'),
url='https://github.com/sunu/qt5reactor',
packages=find_packages(),
py_modules=['qt5reactor'],
packages=find_packages("src"),
package_dir={"": "src"},
keywords=['Qt', 'twisted'],
install_requires=['twisted']
install_requires=['twisted'],
extras_require={
"pyqt5": [
"pyqt5",
],
"pyside2": [
"pyside2",
],
"test": [
"coverage",
"pytest",
"pytest-cov",
"pytest-twisted",
"tox>=3.1",
],
},
)
Loading

0 comments on commit 58410aa

Please sign in to comment.