mirror of
https://github.com/caronc/apprise.git
synced 2024-11-25 17:44:00 +01:00
This reverts commit 8bc47dc118
.
Due to unforeseen circumstances, Conducto no longer exists; reverting changes.
This commit is contained in:
parent
8bc47dc118
commit
e0c0b66ff0
@ -1,7 +0,0 @@
|
|||||||
[.general]
|
|
||||||
name = Apprise
|
|
||||||
desc = Push Notifications that work with just about every platform!
|
|
||||||
init = pipeline.py
|
|
||||||
|
|
||||||
[pr common]
|
|
||||||
command = python pipeline.py all_checks
|
|
@ -1,34 +0,0 @@
|
|||||||
# Base
|
|
||||||
FROM centos:7
|
|
||||||
ENV container docker
|
|
||||||
RUN ( \
|
|
||||||
cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
|
|
||||||
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
|
|
||||||
rm -f /lib/systemd/system/multi-user.target.wants/*;\
|
|
||||||
rm -f /etc/systemd/system/*.wants/*;\
|
|
||||||
rm -f /lib/systemd/system/local-fs.target.wants/*; \
|
|
||||||
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
|
|
||||||
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
|
|
||||||
rm -f /lib/systemd/system/basic.target.wants/*;\
|
|
||||||
rm -f /lib/systemd/system/anaconda.target.wants/*; \
|
|
||||||
echo "assumeyes=1" >> /etc/yum.conf; \
|
|
||||||
yum install -y epel-release; \
|
|
||||||
yum install -y rpm-build rpmlint python-pip python-virtualenv sudo rsync;
|
|
||||||
|
|
||||||
# RPM Build Structure Setup
|
|
||||||
ENV FLAVOR=rpmbuild OS=centos DIST=el7
|
|
||||||
RUN useradd builder -u 1000 -m -G users,wheel &>/dev/null && \
|
|
||||||
echo "builder ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
|
||||||
echo "# macros" > /home/builder/.rpmmacros && \
|
|
||||||
echo "%_topdir /home/builder" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_sourcedir %{_topdir}/packaging/redhat" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_builddir %{_topdir}/packaging/redhat" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_specdir %{_topdir}/packaging/redhat" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_rpmdir %{_topdir}/rpm" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_srcrpmdir %{_topdir}/rpm" >> /home/builder/.rpmmacros && \
|
|
||||||
mkdir /home/builder/rpm
|
|
||||||
|
|
||||||
# The ronn package isn't easily available without connecting to custom
|
|
||||||
# repositories. Since EL7 runs Python v2.7 (soon to be no longer supported)
|
|
||||||
# we will emulate the ronn binary being present and not worry about it
|
|
||||||
RUN ln -snf /usr/bin/true /usr/bin/ronn
|
|
@ -1,32 +0,0 @@
|
|||||||
# Base
|
|
||||||
FROM centos:8
|
|
||||||
ENV container docker
|
|
||||||
RUN ( \
|
|
||||||
cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
|
|
||||||
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
|
|
||||||
rm -f /lib/systemd/system/multi-user.target.wants/*;\
|
|
||||||
rm -f /etc/systemd/system/*.wants/*;\
|
|
||||||
rm -f /lib/systemd/system/local-fs.target.wants/*; \
|
|
||||||
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
|
|
||||||
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
|
|
||||||
rm -f /lib/systemd/system/basic.target.wants/*;\
|
|
||||||
rm -f /lib/systemd/system/anaconda.target.wants/*; \
|
|
||||||
echo "assumeyes=1" >> /etc/yum.conf; \
|
|
||||||
dnf install -y epel-release; \
|
|
||||||
dnf install -y rpm-build rpmlint python3-pip python3-virtualenv rubygem-ronn \
|
|
||||||
dnf-plugins-core 'dnf-command(config-manager)' \
|
|
||||||
'dnf-command(builddep)' sudo rsync; \
|
|
||||||
dnf config-manager --set-enabled powertools;
|
|
||||||
|
|
||||||
# RPM Build Structure Setup
|
|
||||||
ENV FLAVOR=rpmbuild OS=centos DIST=el8
|
|
||||||
RUN useradd builder -u 1000 -m -G users,wheel &>/dev/null && \
|
|
||||||
echo "builder ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers && \
|
|
||||||
echo "# macros" > /home/builder/.rpmmacros && \
|
|
||||||
echo "%_topdir /home/builder" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_sourcedir %{_topdir}/packaging/redhat" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_builddir %{_topdir}/packaging/redhat" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_specdir %{_topdir}/packaging/redhat" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_rpmdir %{_topdir}/rpm" >> /home/builder/.rpmmacros && \
|
|
||||||
echo "%_srcrpmdir %{_topdir}/rpm" >> /home/builder/.rpmmacros && \
|
|
||||||
mkdir /home/builder/rpm
|
|
@ -1,4 +0,0 @@
|
|||||||
# Base
|
|
||||||
FROM python:2.7-buster
|
|
||||||
RUN apt-get update && apt-get install -y libdbus-1-dev build-essential musl-dev
|
|
||||||
RUN pip install dbus-python
|
|
@ -1,4 +0,0 @@
|
|||||||
# Base
|
|
||||||
FROM python:3.5-buster
|
|
||||||
RUN apt-get update && apt-get install -y libdbus-1-dev build-essential musl-dev
|
|
||||||
RUN pip install dbus-python
|
|
@ -1,4 +0,0 @@
|
|||||||
# Base
|
|
||||||
FROM python:3.6-buster
|
|
||||||
RUN apt-get update && apt-get install -y libdbus-1-dev build-essential musl-dev
|
|
||||||
RUN pip install dbus-python
|
|
@ -1,4 +0,0 @@
|
|||||||
# Base
|
|
||||||
FROM python:3.7-buster
|
|
||||||
RUN apt-get update && apt-get install -y libdbus-1-dev build-essential musl-dev
|
|
||||||
RUN pip install dbus-python
|
|
@ -1,4 +0,0 @@
|
|||||||
# Base
|
|
||||||
FROM python:3.8-buster
|
|
||||||
RUN apt-get update && apt-get install -y libdbus-1-dev build-essential musl-dev
|
|
||||||
RUN pip install dbus-python
|
|
@ -1,4 +0,0 @@
|
|||||||
# Base
|
|
||||||
FROM python:3.9-buster
|
|
||||||
RUN apt-get update && apt-get install -y libdbus-1-dev build-essential musl-dev
|
|
||||||
RUN pip install dbus-python
|
|
@ -8,6 +8,8 @@ source =
|
|||||||
[paths]
|
[paths]
|
||||||
source =
|
source =
|
||||||
apprise
|
apprise
|
||||||
|
.tox/*/lib/python*/site-packages/apprise
|
||||||
|
.tox/pypy/site-packages/apprise
|
||||||
|
|
||||||
[report]
|
[report]
|
||||||
show_missing = True
|
show_missing = True
|
||||||
|
47
.travis.yml
Normal file
47
.travis.yml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
language: python
|
||||||
|
|
||||||
|
dist: xenial
|
||||||
|
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- libdbus-1-dev
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- python: "2.7"
|
||||||
|
env: TOXENV=py27
|
||||||
|
- python: "3.5"
|
||||||
|
env: TOXENV=py35
|
||||||
|
- python: "3.6"
|
||||||
|
env: TOXENV=py36
|
||||||
|
- python: "3.7"
|
||||||
|
env: TOXENV=py37
|
||||||
|
- python: "3.8"
|
||||||
|
env: TOXENV=py38
|
||||||
|
- python: "3.9-dev"
|
||||||
|
env: TOXENV=py39
|
||||||
|
- python: "pypy2.7-6.0"
|
||||||
|
env: TOXENV=pypy
|
||||||
|
- python: "pypy3.5-7.0"
|
||||||
|
env: TOXENV=pypy3
|
||||||
|
|
||||||
|
install:
|
||||||
|
- pip install babel
|
||||||
|
- pip install .
|
||||||
|
- pip install codecov
|
||||||
|
- pip install -r dev-requirements.txt
|
||||||
|
- pip install -r requirements.txt
|
||||||
|
- if [[ $TRAVIS_PYTHON_VERSION != 'pypy'* ]]; then travis_retry pip install dbus-python; fi
|
||||||
|
|
||||||
|
|
||||||
|
# run tests
|
||||||
|
script:
|
||||||
|
- tox
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
- tox -e coverage-report
|
||||||
|
- codecov
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email: false
|
@ -22,6 +22,7 @@ System Administrators and DevOps who wish to send a notification now no longer n
|
|||||||
[![Follow](https://img.shields.io/twitter/follow/l2gnux)](https://twitter.com/l2gnux/)<br/>
|
[![Follow](https://img.shields.io/twitter/follow/l2gnux)](https://twitter.com/l2gnux/)<br/>
|
||||||
[![Discord](https://img.shields.io/discord/558793703356104724.svg?colorB=7289DA&label=Discord&logo=Discord&logoColor=7289DA&style=flat-square)](https://discord.gg/MMPeN2D)
|
[![Discord](https://img.shields.io/discord/558793703356104724.svg?colorB=7289DA&label=Discord&logo=Discord&logoColor=7289DA&style=flat-square)](https://discord.gg/MMPeN2D)
|
||||||
[![Python](https://img.shields.io/pypi/pyversions/apprise.svg?style=flat-square)](https://pypi.org/project/apprise/)
|
[![Python](https://img.shields.io/pypi/pyversions/apprise.svg?style=flat-square)](https://pypi.org/project/apprise/)
|
||||||
|
[![Build Status](https://travis-ci.org/caronc/apprise.svg?branch=master)](https://travis-ci.org/caronc/apprise)
|
||||||
[![CodeCov Status](https://codecov.io/github/caronc/apprise/branch/master/graph/badge.svg)](https://codecov.io/github/caronc/apprise)
|
[![CodeCov Status](https://codecov.io/github/caronc/apprise/branch/master/graph/badge.svg)](https://codecov.io/github/caronc/apprise)
|
||||||
[![PyPi](https://img.shields.io/pypi/dm/apprise.svg?style=flat-square)](https://pypi.org/project/apprise/)
|
[![PyPi](https://img.shields.io/pypi/dm/apprise.svg?style=flat-square)](https://pypi.org/project/apprise/)
|
||||||
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
# https://app.codecov.io
|
|
||||||
coverage:
|
|
||||||
status:
|
|
||||||
project:
|
|
||||||
default:
|
|
||||||
target: 100% # the required coverage value
|
|
||||||
threshold: 1% # the leniency in hitting the target
|
|
@ -3,6 +3,7 @@ flake8
|
|||||||
mock
|
mock
|
||||||
pytest
|
pytest
|
||||||
pytest-cov
|
pytest-cov
|
||||||
|
tox
|
||||||
babel
|
babel
|
||||||
|
|
||||||
#
|
#
|
||||||
|
201
pipeline.py
201
pipeline.py
@ -1,201 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# A Conducto Pipeline
|
|
||||||
# Visit https://www.conducto.com for more information.
|
|
||||||
import os
|
|
||||||
import conducto as co
|
|
||||||
from inspect import cleandoc
|
|
||||||
|
|
||||||
|
|
||||||
def all_checks(release=None) -> co.Serial:
|
|
||||||
"""
|
|
||||||
Define our Full Conducto Pipeline
|
|
||||||
"""
|
|
||||||
# Dockerfile Context
|
|
||||||
context = '.'
|
|
||||||
|
|
||||||
# Shared Pipeline Directory
|
|
||||||
share = '/conducto/data/pipeline/apprise'
|
|
||||||
|
|
||||||
# The directory the project can be found in within the containers
|
|
||||||
repo = '/apprise'
|
|
||||||
|
|
||||||
# Unit Testing
|
|
||||||
dockerfiles = (
|
|
||||||
# Define our Containers
|
|
||||||
("Python 3.9", os.path.join('.conducto', 'Dockerfile.py39')),
|
|
||||||
("Python 3.8", os.path.join('.conducto', 'Dockerfile.py38')),
|
|
||||||
("Python 3.7", os.path.join('.conducto', 'Dockerfile.py37')),
|
|
||||||
("Python 3.6", os.path.join('.conducto', 'Dockerfile.py36')),
|
|
||||||
("Python 3.5", os.path.join('.conducto', 'Dockerfile.py35')),
|
|
||||||
("Python 2.7", os.path.join('.conducto', 'Dockerfile.py27')),
|
|
||||||
)
|
|
||||||
|
|
||||||
# Package Testing
|
|
||||||
pkg_dockerfiles = (
|
|
||||||
# Define our Containers
|
|
||||||
("EL8 RPM", os.path.join('.conducto', 'Dockerfile.el8')),
|
|
||||||
("EL7 RPM", os.path.join('.conducto', 'Dockerfile.el7')),
|
|
||||||
)
|
|
||||||
|
|
||||||
# find generated coverage filename and store it in the pipeline
|
|
||||||
coverage_template = cleandoc('''
|
|
||||||
pip install -r requirements.txt -r dev-requirements.txt || exit 1
|
|
||||||
|
|
||||||
mkdir --verbose -p {share}/coverage && \\
|
|
||||||
coverage run --parallel -m pytest && \\
|
|
||||||
find . -mindepth 1 -maxdepth 1 -type f \\
|
|
||||||
-name '.coverage.*' \\
|
|
||||||
-exec mv --verbose -- {{}} {share}/coverage \;''')
|
|
||||||
|
|
||||||
# pull generated file from the pipeline and place it back into
|
|
||||||
# our working directory
|
|
||||||
coverage_report_template = cleandoc('''
|
|
||||||
pip install coverage || exit 1
|
|
||||||
|
|
||||||
find {share}/coverage -mindepth 1 -maxdepth 1 -type f \\
|
|
||||||
-name '.coverage.*' \\
|
|
||||||
-exec mv --verbose -- {{}} . \;
|
|
||||||
|
|
||||||
coverage combine . && \\
|
|
||||||
coverage report --ignore-errors --skip-covered --show-missing
|
|
||||||
|
|
||||||
# Push our coverage report to codecov.io
|
|
||||||
retry=3
|
|
||||||
iter=0
|
|
||||||
while [ $iter -lt $retry ]; do
|
|
||||||
bash <(curl -s https://codecov.io/bash) -Z
|
|
||||||
[ $? -eq 0 ] && break
|
|
||||||
sleep 1s
|
|
||||||
# loop to try again
|
|
||||||
let iter+=1
|
|
||||||
done
|
|
||||||
''')
|
|
||||||
|
|
||||||
# RPM Packaging Templates (assumes we're building as the user 'builder')
|
|
||||||
rpm_pkg_template = cleandoc('''
|
|
||||||
# copy our environment over
|
|
||||||
rsync -a ./ /home/builder/
|
|
||||||
|
|
||||||
# Permissions
|
|
||||||
chmod ug+rw -R /home/builder
|
|
||||||
chown -R builder /home/builder
|
|
||||||
|
|
||||||
# Advance to our build directory
|
|
||||||
cd /home/builder
|
|
||||||
|
|
||||||
# Prepare Virtual Environment
|
|
||||||
PYTHON=python3
|
|
||||||
VENV_CMD="$PYTHON -m venv"
|
|
||||||
|
|
||||||
# Enterprise Linux 7 (Python v2.7.5) Support
|
|
||||||
[ "$DIST" == "el7" ] && \\
|
|
||||||
VENV_CMD=virtualenv && \\
|
|
||||||
PYTHON=python2
|
|
||||||
|
|
||||||
sudo -u builder \\
|
|
||||||
$VENV_CMD . && . bin/activate && \\
|
|
||||||
pip install coverage babel wheel markdown && \\
|
|
||||||
$PYTHON setup.py extract_messages && \\
|
|
||||||
$PYTHON setup.py sdist
|
|
||||||
|
|
||||||
# Build Man Page
|
|
||||||
sudo -u builder \\
|
|
||||||
ronn --roff packaging/man/apprise.md
|
|
||||||
|
|
||||||
# Prepare RPM Package
|
|
||||||
find dist -type f -name '*.gz' \\
|
|
||||||
-exec mv --verbose {{}} packaging/redhat/ \\;
|
|
||||||
find packaging/man -type f -name '*.1' \\
|
|
||||||
-exec mv --verbose {{}} packaging/redhat/ \\;
|
|
||||||
|
|
||||||
# Build Source RPM Package
|
|
||||||
sudo -u builder \\
|
|
||||||
rpmbuild -bs packaging/redhat/python-apprise.spec || exit 1
|
|
||||||
|
|
||||||
# Install Missing RPM Dependencies
|
|
||||||
if [ -x /usr/bin/dnf ]; then
|
|
||||||
# EL8 and Newer
|
|
||||||
dnf builddep -y rpm/*.rpm || exit 1
|
|
||||||
else
|
|
||||||
# EL7 Backwards Compatibility
|
|
||||||
yum-builddep -y rpm/*.rpm || exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build our RPM using the environment we prepared
|
|
||||||
sudo -u builder \\
|
|
||||||
rpmbuild -bb packaging/redhat/python-apprise.spec''') \
|
|
||||||
.format(repo=repo)
|
|
||||||
|
|
||||||
# Define our default image keyword argument defaults
|
|
||||||
image_kwargs = {
|
|
||||||
'copy_repo': True,
|
|
||||||
'path_map': {'.': repo},
|
|
||||||
}
|
|
||||||
|
|
||||||
if release:
|
|
||||||
# Prepare release details into environment
|
|
||||||
image_kwargs.update({'env': {'PRODUCT_RELEASE': release}})
|
|
||||||
|
|
||||||
# Our base image is always the first entry defined in our dockerfiles
|
|
||||||
base_image = co.Image(
|
|
||||||
dockerfile=dockerfiles[0][1], context=context, **image_kwargs)
|
|
||||||
base_pkg_image = co.Image(
|
|
||||||
dockerfile=pkg_dockerfiles[0][1], context=context, **image_kwargs)
|
|
||||||
|
|
||||||
with co.Serial() as pipeline:
|
|
||||||
with co.Parallel(name="Presentation"):
|
|
||||||
# Code Styles
|
|
||||||
co.Exec(
|
|
||||||
'pip install flake8 && '
|
|
||||||
'flake8 . --count --show-source --statistics',
|
|
||||||
name="Style Guidelines", image=base_image)
|
|
||||||
|
|
||||||
# RPM Checking
|
|
||||||
co.Exec(
|
|
||||||
cleandoc('''rpmlint --verbose -o "NetworkEnabled False" \\
|
|
||||||
packaging/redhat/python-apprise.spec'''),
|
|
||||||
name="RPM Guidelines", image=base_pkg_image)
|
|
||||||
|
|
||||||
with co.Parallel(name="Tests"):
|
|
||||||
for entry in dockerfiles:
|
|
||||||
name, dockerfile = entry
|
|
||||||
|
|
||||||
# Prepare our Image
|
|
||||||
image = co.Image(
|
|
||||||
dockerfile=dockerfile, context=context, **image_kwargs)
|
|
||||||
|
|
||||||
# Unit Tests
|
|
||||||
# These produce files that look like:
|
|
||||||
# .coverage.{userid}.{hostname}.NNNNNN.NNNNNN where:
|
|
||||||
# - {userid} becomes the user that ran the test
|
|
||||||
# - {hostname} identifies the hostname it was built on
|
|
||||||
# - N gets replaced with a number
|
|
||||||
|
|
||||||
# The idea here is that the .coverage.* file is unique
|
|
||||||
# from others being built in other containers
|
|
||||||
co.Exec(
|
|
||||||
coverage_template.format(share=share),
|
|
||||||
name="{} Coverage".format(name), image=image)
|
|
||||||
|
|
||||||
# Coverage Reporting
|
|
||||||
co.Exec(
|
|
||||||
coverage_report_template.format(share=share),
|
|
||||||
name="Test Code Coverage", image=base_image)
|
|
||||||
|
|
||||||
with co.Parallel(name="Packaging"):
|
|
||||||
for entry in pkg_dockerfiles:
|
|
||||||
name, dockerfile = entry
|
|
||||||
image = co.Image(
|
|
||||||
dockerfile=dockerfile, context=context, **image_kwargs)
|
|
||||||
|
|
||||||
# Build our packages
|
|
||||||
co.Exec(rpm_pkg_template, name=name, image=image)
|
|
||||||
|
|
||||||
return pipeline
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
"""
|
|
||||||
Execute our pipeline
|
|
||||||
"""
|
|
||||||
co.main(default=all_checks)
|
|
@ -7,7 +7,7 @@ license_file = LICENSE
|
|||||||
|
|
||||||
[flake8]
|
[flake8]
|
||||||
# We exclude packages we don't maintain
|
# We exclude packages we don't maintain
|
||||||
exclude = .eggs
|
exclude = .eggs,.tox
|
||||||
ignore = E741,E722,W503,W504,W605
|
ignore = E741,E722,W503,W504,W605
|
||||||
statistics = true
|
statistics = true
|
||||||
builtins = _
|
builtins = _
|
||||||
|
@ -78,7 +78,8 @@ def test_dbus_plugin(mock_mainloop, mock_byte, mock_bytearray,
|
|||||||
del sys.modules[gi_name]
|
del sys.modules[gi_name]
|
||||||
reload(sys.modules['apprise.plugins.NotifyDBus'])
|
reload(sys.modules['apprise.plugins.NotifyDBus'])
|
||||||
|
|
||||||
# Fake our dbus environment for testing purposes
|
# We need to fake our dbus environment for testing purposes since
|
||||||
|
# the gi library isn't available in Travis CI
|
||||||
gi = types.ModuleType(gi_name)
|
gi = types.ModuleType(gi_name)
|
||||||
gi.repository = types.ModuleType(gi_name + '.repository')
|
gi.repository = types.ModuleType(gi_name + '.repository')
|
||||||
|
|
||||||
|
@ -65,7 +65,8 @@ def test_gnome_plugin():
|
|||||||
del sys.modules[gi_name]
|
del sys.modules[gi_name]
|
||||||
reload(sys.modules['apprise.plugins.NotifyGnome'])
|
reload(sys.modules['apprise.plugins.NotifyGnome'])
|
||||||
|
|
||||||
# Fake our Gnome environment for testing purposes
|
# We need to fake our gnome environment for testing purposes since
|
||||||
|
# the gi library isn't available in Travis CI
|
||||||
gi = types.ModuleType(gi_name)
|
gi = types.ModuleType(gi_name)
|
||||||
gi.repository = types.ModuleType(gi_name + '.repository')
|
gi.repository = types.ModuleType(gi_name + '.repository')
|
||||||
gi.module = types.ModuleType(gi_name + '.module')
|
gi.module = types.ModuleType(gi_name + '.module')
|
||||||
|
104
tox.ini
Normal file
104
tox.ini
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
[tox]
|
||||||
|
envlist = py27,py35,py36,py37,py38,py39,pypy,pypy3,coverage-report
|
||||||
|
|
||||||
|
|
||||||
|
[testenv]
|
||||||
|
# Prevent random setuptools/pip breakages like
|
||||||
|
# https://github.com/pypa/setuptools/issues/1042 from breaking our builds.
|
||||||
|
setenv =
|
||||||
|
VIRTUALENV_NO_DOWNLOAD=1
|
||||||
|
deps=
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
commands =
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:py27]
|
||||||
|
deps=
|
||||||
|
dbus-python
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
commands =
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:py35]
|
||||||
|
deps=
|
||||||
|
dbus-python
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
commands =
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:py36]
|
||||||
|
deps=
|
||||||
|
dbus-python
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
commands =
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:py37]
|
||||||
|
deps=
|
||||||
|
dbus-python
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
commands =
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:py38]
|
||||||
|
deps=
|
||||||
|
dbus-python
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
commands =
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:py39]
|
||||||
|
deps=
|
||||||
|
dbus-python
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
commands =
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:pypy]
|
||||||
|
deps=
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
commands =
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:pypy3]
|
||||||
|
deps=
|
||||||
|
-r{toxinidir}/requirements.txt
|
||||||
|
-r{toxinidir}/dev-requirements.txt
|
||||||
|
# Last supported cryptography version that can link against
|
||||||
|
# OpenSSL v1.0.2 (which pypy35 uses) is 3.1.1
|
||||||
|
commands =
|
||||||
|
pip install --upgrade cryptography==3.1.1
|
||||||
|
python setup.py compile_catalog
|
||||||
|
coverage run --parallel -m pytest {posargs}
|
||||||
|
flake8 . --count --show-source --statistics
|
||||||
|
|
||||||
|
[testenv:coverage-report]
|
||||||
|
deps = coverage
|
||||||
|
skip_install = true
|
||||||
|
commands=
|
||||||
|
coverage combine
|
||||||
|
coverage report
|
Loading…
Reference in New Issue
Block a user