Hello community,
here is the log from the commit of package python-pytest-parallel for
openSUSE:Factory checked in at 2020-05-03 22:47:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest-parallel (Old)
and /work/SRC/openSUSE:Factory/.python-pytest-parallel.new.2738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pytest-parallel"
Sun May 3 22:47:12 2020 rev:3 rq:799797 version:0.1.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-pytest-parallel/python-pytest-parallel.changes
2020-03-22 14:17:46.434080059 +0100
+++
/work/SRC/openSUSE:Factory/.python-pytest-parallel.new.2738/python-pytest-parallel.changes
2020-05-03 22:47:12.915152336 +0200
@@ -1,0 +2,7 @@
+Sun May 3 07:34:08 UTC 2020 - Tomáš Chvátal <[email protected]>
+
+- Update to 0.1.0:
+ * No changelog
+- Remove no longer needed pytest-parallel-pr63-tblib-pickling.patch
+
+-------------------------------------------------------------------
Old:
----
pytest-parallel-0.0.10.tar.gz
pytest-parallel-pr63-tblib-pickling.patch
New:
----
pytest-parallel-0.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pytest-parallel.spec ++++++
--- /var/tmp/diff_new_pack.YF2EHi/_old 2020-05-03 22:47:14.471155501 +0200
+++ /var/tmp/diff_new_pack.YF2EHi/_new 2020-05-03 22:47:14.475155509 +0200
@@ -19,13 +19,13 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-pytest-parallel
-Version: 0.0.10
+Version: 0.1.0
Release: 0
Summary: Pytest plugin for parallel and concurrent testing
License: MIT
URL: https://github.com/browsertron/pytest-parallel
Source:
https://github.com/browsertron/pytest-parallel/archive/%{version}.tar.gz#/pytest-parallel-%{version}.tar.gz
-Patch0: pytest-parallel-pr63-tblib-pickling.patch
+BuildRequires: %{python_module base >= 3.6}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -44,7 +44,6 @@
%prep
%setup -q -n pytest-parallel-%{version}
-%patch0 -p1
%build
%python_build
++++++ pytest-parallel-0.0.10.tar.gz -> pytest-parallel-0.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/.ci/codecov.yml
new/pytest-parallel-0.1.0/.ci/codecov.yml
--- old/pytest-parallel-0.0.10/.ci/codecov.yml 1970-01-01 01:00:00.000000000
+0100
+++ new/pytest-parallel-0.1.0/.ci/codecov.yml 2020-04-30 20:19:07.000000000
+0200
@@ -0,0 +1 @@
+comment: off
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/.ci/report-coverage.sh
new/pytest-parallel-0.1.0/.ci/report-coverage.sh
--- old/pytest-parallel-0.0.10/.ci/report-coverage.sh 1970-01-01
01:00:00.000000000 +0100
+++ new/pytest-parallel-0.1.0/.ci/report-coverage.sh 2020-04-30
20:19:07.000000000 +0200
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Submit/report coverage when run from Travis for "coverage" tox factors.
+
+coverage_xml="coverage-travis.xml"
+if ! [ -f "$coverage_xml" ]; then
+ exit
+fi
+
+set -ex
+
+codecov_bash=/tmp/codecov-bash.sh
+
+if ! [ -f "$codecov_bash" ]; then
+ curl -sSf --retry 5 -o "$codecov_bash" https://codecov.io/bash
+ chmod +x "$codecov_bash"
+fi
+
+"$codecov_bash" -Z -X fix -f "$coverage_xml" -n "${TOX_ENV_NAME%-coverage}" -F
"$TRAVIS_OS_NAME,${TOX_ENV_NAME%-coverage}"
+rm "$coverage_xml"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/.coveragerc
new/pytest-parallel-0.1.0/.coveragerc
--- old/pytest-parallel-0.0.10/.coveragerc 1970-01-01 01:00:00.000000000
+0100
+++ new/pytest-parallel-0.1.0/.coveragerc 2020-04-30 20:19:07.000000000
+0200
@@ -0,0 +1,20 @@
+[coverage:run]
+include =
+ pytest_parallel/*
+ tests/*
+ */lib/python*/site-packages/pytest_parallel/*
+ */pypy*/site-packages/pytest_parallel/*
+ *\Lib\site-packages\pytest_parallel\*
+branch = 1
+parallel = 1
+
+[coverage:paths]
+source = pytest_parallel/
+ */lib/python*/site-packages/pytest_parallel/
+ */pypy*/site-packages/pytest_parallel/
+ *\Lib\site-packages\pytest_parallel\
+
+[coverage:report]
+exclude_lines =
+ \#\s*pragma: no cover
+ ^\s*raise NotImplementedError\b
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/.gitignore
new/pytest-parallel-0.1.0/.gitignore
--- old/pytest-parallel-0.0.10/.gitignore 2019-11-22 20:49:38.000000000
+0100
+++ new/pytest-parallel-0.1.0/.gitignore 2020-04-30 20:19:07.000000000
+0200
@@ -1,6 +1,7 @@
.DS_Store
.pytest_cache
.vscode
+tmp
# Byte-compiled / optimized / DLL files
__pycache__/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/.travis.yml
new/pytest-parallel-0.1.0/.travis.yml
--- old/pytest-parallel-0.0.10/.travis.yml 2019-11-22 20:49:38.000000000
+0100
+++ new/pytest-parallel-0.1.0/.travis.yml 2020-04-30 20:19:07.000000000
+0200
@@ -4,12 +4,9 @@
only:
- master
cache: pip
-python:
- - "3.6"
- - "3.7"
env:
global:
- - PYTEST_ADDOPTS=-vv
+ - PYTEST_ADDOPTS="-vv --cov-report=xml:coverage-travis.xml"
install:
- pip install pipenv
- pipenv run pip install pip==18.0
@@ -18,5 +15,14 @@
- pipenv run test
jobs:
include:
+ - name: py36
+ python: "3.6"
+ env: TOXENV=py36-coverage
+ - name: py37
+ python: "3.7"
+ env: TOXENV=py37-coverage
+ - name: py38
+ python: "3.8"
+ env: TOXENV=py38-coverage
- name: lint
script: pipenv run lint
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/Pipfile
new/pytest-parallel-0.1.0/Pipfile
--- old/pytest-parallel-0.0.10/Pipfile 2019-11-22 20:49:38.000000000 +0100
+++ new/pytest-parallel-0.1.0/Pipfile 2020-04-30 20:19:07.000000000 +0200
@@ -17,6 +17,7 @@
tox-pyenv = ">=1.1.0"
invoke = ">=0.23.0"
tox-travis = "*"
+importlib_resources = "*"
[requires]
python_version = "3.7"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/Pipfile.lock
new/pytest-parallel-0.1.0/Pipfile.lock
--- old/pytest-parallel-0.0.10/Pipfile.lock 2019-11-22 20:49:38.000000000
+0100
+++ new/pytest-parallel-0.1.0/Pipfile.lock 2020-04-30 20:19:07.000000000
+0200
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256":
"342ab5982614ef1dac50227d90cd8f3bdf2fd5488bb0b64d5fa0e9e829966578"
+ "sha256":
"1f428adedd0b10ef5c329bc2ea80db577b9d451f05903ecb485592850f39b06b"
},
"pipfile-spec": 6,
"requires": {
@@ -16,13 +16,6 @@
]
},
"default": {
- "atomicwrites": {
- "hashes": [
-
"sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4",
-
"sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"
- ],
- "version": "==1.3.0"
- },
"attrs": {
"hashes": [
"sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c",
@@ -32,18 +25,25 @@
},
"importlib-metadata": {
"hashes": [
-
"sha256:aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26",
-
"sha256:d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af"
+
"sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f",
+
"sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e"
],
"markers": "python_version < '3.8'",
- "version": "==0.23"
+ "version": "==1.6.0"
},
"more-itertools": {
"hashes": [
-
"sha256:409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832",
-
"sha256:92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4"
+
"sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c",
+
"sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507"
+ ],
+ "version": "==8.2.0"
+ },
+ "packaging": {
+ "hashes": [
+
"sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3",
+
"sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752"
],
- "version": "==7.2.0"
+ "version": "==20.3"
},
"pluggy": {
"hashes": [
@@ -54,55 +54,84 @@
},
"py": {
"hashes": [
-
"sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa",
-
"sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"
+
"sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa",
+
"sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"
],
- "version": "==1.8.0"
+ "version": "==1.8.1"
+ },
+ "pyparsing": {
+ "hashes": [
+
"sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1",
+
"sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"
+ ],
+ "version": "==2.4.7"
},
"pytest": {
"hashes": [
-
"sha256:7e258ee50338f4e46957f9e09a0f10fb1c2d05493fa901d113a8dafd0790de4e",
-
"sha256:9332147e9af2dcf46cd7ceb14d5acadb6564744ddff1fe8c17f0ce60ece7d9a2"
+
"sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172",
+
"sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970"
],
"index": "pypi",
- "version": "==3.8.2"
+ "version": "==5.4.1"
},
"six": {
"hashes": [
-
"sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
-
"sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"
+
"sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a",
+
"sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
],
- "version": "==1.13.0"
+ "version": "==1.14.0"
+ },
+ "tblib": {
+ "hashes": [
+
"sha256:229bee3754cb5d98b4837dd5c4405e80cfab57cb9f93220410ad367f8b352344",
+
"sha256:e222f44485d45ed13fada73b57775e2ff9bd8af62160120bbb6679f5ad80315b"
+ ],
+ "index": "pypi",
+ "version": "==1.6.0"
+ },
+ "wcwidth": {
+ "hashes": [
+
"sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1",
+
"sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1"
+ ],
+ "version": "==0.1.9"
},
"zipp": {
"hashes": [
-
"sha256:3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e",
-
"sha256:f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335"
+
"sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b",
+
"sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"
],
- "version": "==0.6.0"
+ "version": "==3.1.0"
}
},
"develop": {
+ "appdirs": {
+ "hashes": [
+
"sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92",
+
"sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"
+ ],
+ "version": "==1.4.3"
+ },
"astroid": {
"hashes": [
-
"sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a",
-
"sha256:840947ebfa8b58f318d42301cf8c0a20fd794a33b61cc4638e28e9e61ba32f42"
+
"sha256:29fa5d46a2404d01c834fcb802a3943685f1fc538eb2a02a161349f5505ac196",
+
"sha256:2fecea42b20abb1922ed65c7b5be27edfba97211b04b2b6abc6a43549a024ea6"
],
- "version": "==2.3.3"
+ "version": "==2.4.0"
},
"bleach": {
"hashes": [
-
"sha256:213336e49e102af26d9cde77dd2d0397afabc5a6bf2fed985dc35b5d1e285a16",
-
"sha256:3fdf7f77adcf649c9911387df51254b813185e32b2c6619f690b593a617e19fa"
+
"sha256:2bce3d8fab545a6528c8fa5d9f9ae8ebc85a56da365c7f85180bfe96a35ef22f",
+
"sha256:3c4c520fdb9db59ef139915a5db79f8b51bc2a7257ea0389f30c846883430a4b"
],
- "version": "==3.1.0"
+ "version": "==3.1.5"
},
"certifi": {
"hashes": [
-
"sha256:e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50",
-
"sha256:fd7c7c74727ddcf00e9acd26bba8da604ffec95bf1c2144e67aff7a8b50e6cef"
+
"sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304",
+
"sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519"
],
- "version": "==2019.9.11"
+ "version": "==2020.4.5.1"
},
"chardet": {
"hashes": [
@@ -111,13 +140,25 @@
],
"version": "==3.0.4"
},
+ "distlib": {
+ "hashes": [
+
"sha256:2e166e231a26b36d6dfe35a48c4464346620f8645ed0ace01ee31822b288de21"
+ ],
+ "version": "==0.3.0"
+ },
"docutils": {
"hashes": [
-
"sha256:6c4f696463b79f1fb8ba0c594b63840ebd41f059e92b31957c46b74a4599b6d0",
-
"sha256:9e4d7ecfc600058e07ba661411a2b7de2fd0fafa17d1a7f7361cd47b1175c827",
-
"sha256:a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99"
+
"sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af",
+
"sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"
+ ],
+ "version": "==0.16"
+ },
+ "entrypoints": {
+ "hashes": [
+
"sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19",
+
"sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451"
],
- "version": "==0.15.2"
+ "version": "==0.3"
},
"filelock": {
"hashes": [
@@ -128,35 +169,43 @@
},
"flake8": {
"hashes": [
-
"sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0",
-
"sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37"
+
"sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb",
+
"sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca"
],
"index": "pypi",
- "version": "==3.5.0"
+ "version": "==3.7.9"
},
"idna": {
"hashes": [
-
"sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
-
"sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
+
"sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb",
+
"sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"
],
- "version": "==2.8"
+ "version": "==2.9"
},
"importlib-metadata": {
"hashes": [
-
"sha256:aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26",
-
"sha256:d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af"
+
"sha256:2a688cbaa90e0cc587f1df48bdc97a6eadccdcd9c35fb3f976a09e3b5016d90f",
+
"sha256:34513a8a0c4962bc66d35b359558fd8a5e10cd472d37aec5f66858addef32c1e"
],
"markers": "python_version < '3.8'",
- "version": "==0.23"
+ "version": "==1.6.0"
+ },
+ "importlib-resources": {
+ "hashes": [
+
"sha256:6f87df66833e1942667108628ec48900e02a4ab4ad850e25fbf07cb17cf734ca",
+
"sha256:85dc0b9b325ff78c8bef2e4ff42616094e16b98ebd5e3b50fe7e2f0bbcdcde49"
+ ],
+ "index": "pypi",
+ "version": "==1.5.0"
},
"invoke": {
"hashes": [
-
"sha256:4f4de934b15c2276caa4fbc5a3b8a61c0eb0b234f2be1780d2b793321995c2d6",
-
"sha256:dc492f8f17a0746e92081aec3f86ae0b4750bf41607ea2ad87e5a7b5705121b7",
-
"sha256:eb6f9262d4d25b40330fb21d1e99bf0f85011ccc3526980f8a3eaedd4b43892e"
+
"sha256:87b3ef9d72a1667e104f89b159eaf8a514dbf2f3576885b2bbdefe74c3fb2132",
+
"sha256:93e12876d88130c8e0d7fd6618dd5387d6b36da55ad541481dfa5e001656f134",
+
"sha256:de3f23bfe669e3db1085789fd859eb8ca8e0c5d9c20811e2407fa042e8a5e15d"
],
"index": "pypi",
- "version": "==1.2.0"
+ "version": "==1.4.1"
},
"isort": {
"hashes": [
@@ -165,6 +214,13 @@
],
"version": "==4.3.21"
},
+ "keyring": {
+ "hashes": [
+
"sha256:197fd5903901030ef7b82fe247f43cfed2c157a28e7747d1cfcf4bc5e699dd03",
+
"sha256:8179b1cdcdcbc221456b5b74e6b7cfa06f8dd9f239eb81892166d9223d82c5ba"
+ ],
+ "version": "==21.2.0"
+ },
"lazy-object-proxy": {
"hashes": [
"sha256:0c4b206227a8097f05c4dbdd323c50edf81f15db3b8dc064d08c62d37e1a504d",
@@ -198,12 +254,12 @@
],
"version": "==0.6.1"
},
- "more-itertools": {
+ "packaging": {
"hashes": [
-
"sha256:409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832",
-
"sha256:92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4"
+
"sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3",
+
"sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752"
],
- "version": "==7.2.0"
+ "version": "==20.3"
},
"pkginfo": {
"hashes": [
@@ -221,53 +277,60 @@
},
"py": {
"hashes": [
-
"sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa",
-
"sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"
+
"sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa",
+
"sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0"
],
- "version": "==1.8.0"
+ "version": "==1.8.1"
},
"pycodestyle": {
"hashes": [
-
"sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766",
-
"sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9"
+
"sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56",
+
"sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c"
],
- "version": "==2.3.1"
+ "version": "==2.5.0"
},
"pyflakes": {
"hashes": [
-
"sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f",
-
"sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805"
+
"sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0",
+
"sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2"
],
- "version": "==1.6.0"
+ "version": "==2.1.1"
},
"pygments": {
"hashes": [
-
"sha256:71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127",
-
"sha256:881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297"
+
"sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44",
+
"sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324"
],
- "version": "==2.4.2"
+ "version": "==2.6.1"
},
"pylint": {
"hashes": [
-
"sha256:1d6d3622c94b4887115fe5204982eee66fdd8a951cf98635ee5caee6ec98c3ec",
-
"sha256:31142f764d2a7cd41df5196f9933b12b7ee55e73ef12204b648ad7e556c119fb"
+
"sha256:588e114e3f9a1630428c35b7dd1c82c1c93e1b0e78ee312ae4724c5e1a1e0245",
+
"sha256:bd556ba95a4cf55a1fc0004c00cf4560b1e70598a54a74c6904d933c8f3bd5a8"
],
"index": "pypi",
- "version": "==2.1.1"
+ "version": "==2.5.0"
+ },
+ "pyparsing": {
+ "hashes": [
+
"sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1",
+
"sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"
+ ],
+ "version": "==2.4.7"
},
"readme-renderer": {
"hashes": [
-
"sha256:bb16f55b259f27f75f640acf5e00cf897845a8b3e4731b5c1a436e4b8529202f",
-
"sha256:c8532b79afc0375a85f10433eca157d6b50f7d6990f337fa498c96cd4bfc203d"
+
"sha256:cbe9db71defedd2428a1589cdc545f9bd98e59297449f69d721ef8f1cfced68d",
+
"sha256:cc4957a803106e820d05d14f71033092537a22daa4f406dfbdd61177e0936376"
],
- "version": "==24.0"
+ "version": "==26.0"
},
"requests": {
"hashes": [
-
"sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4",
-
"sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"
+
"sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee",
+
"sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"
],
- "version": "==2.22.0"
+ "version": "==2.23.0"
},
"requests-toolbelt": {
"hashes": [
@@ -278,10 +341,10 @@
},
"six": {
"hashes": [
-
"sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
-
"sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"
+
"sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a",
+
"sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c"
],
- "version": "==1.13.0"
+ "version": "==1.14.0"
},
"toml": {
"hashes": [
@@ -292,11 +355,11 @@
},
"tox": {
"hashes": [
-
"sha256:217fb84aecf9792a98f93f07cfcaf014205a76c64e52bd7c2b4135458e6ad2a1",
-
"sha256:4baeb3d8ebdcd9f43afce38aa67d06f1165a87d221d5bb21e8b39a0d4880c134"
+
"sha256:a4a6689045d93c208d77230853b28058b7513f5123647b67bf012f82fa168303",
+
"sha256:b2c4b91c975ea5c11463d9ca00bebf82654439c5df0f614807b9bdec62cc9471"
],
"index": "pypi",
- "version": "==3.5.2"
+ "version": "==3.14.6"
},
"tox-pyenv": {
"hashes": [
@@ -308,66 +371,67 @@
},
"tox-travis": {
"hashes": [
-
"sha256:7e2f0b9db1ff9521da6a32a34aa4bfe292ea1c90ff8eb26001bf52f44ca0dc47"
+
"sha256:442c96b078333c94e272d0e90e4582e35e0529ea98bcd2f7f96053d690c4e7a4",
+
"sha256:465cd8f71ad878962a3fce0e9e2e213994e0ae4e0c30f87fe6af1b04ea282dc4"
],
"index": "pypi",
- "version": "==0.11"
+ "version": "==0.12"
},
"tqdm": {
"hashes": [
-
"sha256:5a1f3d58f3eb53264387394387fe23df469d2a3fab98c9e7f99d5c146c119873",
-
"sha256:f1a1613fee07cc30a253051617f2a219a785c58877f9f6bfa129446cbaf8b4c1"
+
"sha256:00339634a22c10a7a22476ee946bbde2dbe48d042ded784e4d88e0236eca5d81",
+
"sha256:ea9e3fd6bd9a37e8783d75bfc4c1faf3c6813da6bd1c3e776488b41ec683af94"
],
- "version": "==4.39.0"
+ "version": "==4.45.0"
},
"twine": {
"hashes": [
-
"sha256:7d89bc6acafb31d124e6e5b295ef26ac77030bf098960c2a4c4e058335827c5c",
-
"sha256:fad6f1251195f7ddd1460cb76d6ea106c93adb4e56c41e0da79658e56e547d2c"
+
"sha256:c1af8ca391e43b0a06bbc155f7f67db0bf0d19d284bfc88d1675da497a946124",
+
"sha256:d561a5e511f70275e5a485a6275ff61851c16ffcb3a95a602189161112d9f160"
],
"index": "pypi",
- "version": "==1.12.1"
+ "version": "==3.1.1"
},
"typed-ast": {
"hashes": [
-
"sha256:1170afa46a3799e18b4c977777ce137bb53c7485379d9706af8a59f2ea1aa161",
-
"sha256:18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e",
-
"sha256:262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e",
-
"sha256:2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0",
-
"sha256:354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c",
-
"sha256:48e5b1e71f25cfdef98b013263a88d7145879fbb2d5185f2a0c79fa7ebbeae47",
-
"sha256:4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631",
-
"sha256:630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4",
-
"sha256:66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34",
-
"sha256:71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b",
-
"sha256:7954560051331d003b4e2b3eb822d9dd2e376fa4f6d98fee32f452f52dd6ebb2",
-
"sha256:838997f4310012cf2e1ad3803bce2f3402e9ffb71ded61b5ee22617b3a7f6b6e",
-
"sha256:95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a",
-
"sha256:bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233",
-
"sha256:cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1",
-
"sha256:d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36",
-
"sha256:d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d",
-
"sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a",
-
"sha256:fdc1c9bbf79510b76408840e009ed65958feba92a88833cdceecff93ae8fff66",
-
"sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12"
+
"sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355",
+
"sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919",
+
"sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa",
+
"sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652",
+
"sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75",
+
"sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01",
+
"sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d",
+
"sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1",
+
"sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907",
+
"sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c",
+
"sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3",
+
"sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b",
+
"sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614",
+
"sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb",
+
"sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b",
+
"sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41",
+
"sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6",
+
"sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34",
+
"sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe",
+
"sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4",
+
"sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7"
],
"markers": "implementation_name == 'cpython' and python_version <
'3.8'",
- "version": "==1.4.0"
+ "version": "==1.4.1"
},
"urllib3": {
"hashes": [
-
"sha256:a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293",
-
"sha256:f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"
+
"sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527",
+
"sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"
],
- "index": "pypi",
- "version": "==1.25.7"
+ "version": "==1.25.9"
},
"virtualenv": {
"hashes": [
-
"sha256:11cb4608930d5fd3afb545ecf8db83fa50e1f96fc4fca80c94b07d2c83146589",
-
"sha256:d257bb3773e48cac60e475a19b608996c73f4d333b3ba2e4e57d5ac6134e0136"
+
"sha256:5021396e8f03d0d002a770da90e31e61159684db2859d0ba4850fbea752aa675",
+
"sha256:ac53ade75ca189bc97b6c1d9ec0f1a50efe33cbf178ae09452dcd9fd309013c1"
],
- "version": "==16.7.7"
+ "version": "==20.0.18"
},
"webencodings": {
"hashes": [
@@ -378,24 +442,24 @@
},
"wheel": {
"hashes": [
-
"sha256:9fa1f772f1a2df2bd00ddb4fa57e1cc349301e1facb98fbe62329803a9ff1196",
-
"sha256:d215f4520a1ba1851a3c00ba2b4122665cd3d6b0834d2ba2816198b1e3024a0e"
+
"sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96",
+
"sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e"
],
"index": "pypi",
- "version": "==0.32.1"
+ "version": "==0.34.2"
},
"wrapt": {
"hashes": [
-
"sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"
+
"sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
],
- "version": "==1.11.2"
+ "version": "==1.12.1"
},
"zipp": {
"hashes": [
-
"sha256:3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e",
-
"sha256:f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335"
+
"sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b",
+
"sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"
],
- "version": "==0.6.0"
+ "version": "==3.1.0"
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/README.md
new/pytest-parallel-0.1.0/README.md
--- old/pytest-parallel-0.0.10/README.md 2019-11-22 20:49:38.000000000
+0100
+++ new/pytest-parallel-0.1.0/README.md 2020-04-30 20:19:07.000000000 +0200
@@ -53,6 +53,14 @@
pytest --workers 2 --tests-per-worker auto
```
+## Notice
+
+Beginning with Python 3.8, forking behavior is forced on macOS at the expense
of safety.
+
+ Changed in version 3.8: On macOS, the spawn start method is now the
default. The fork start method should be considered unsafe as it can lead to
crashes of the subprocess. See bpo-33725.
+
+[Source](https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods)
+
## License
MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/pytest_parallel/__init__.py
new/pytest-parallel-0.1.0/pytest_parallel/__init__.py
--- old/pytest-parallel-0.0.10/pytest_parallel/__init__.py 2019-11-22
20:49:38.000000000 +0100
+++ new/pytest-parallel-0.1.0/pytest_parallel/__init__.py 2020-04-30
20:19:07.000000000 +0200
@@ -1,30 +1,33 @@
import os
+import py
+import sys
import time
import math
import pytest
import _pytest
import platform
import threading
-import queue as Queue
-from py._xmlgen import raw
+import multiprocessing
+from tblib import pickling_support
from multiprocessing import Manager, Process
-__version__ = '0.0.10'
+# In Python 3.8 and later, the default on macOS is spawn.
+# We force forking behavior at the expense of safety.
+#
+# "On macOS, the spawn start method is now the default. The fork start method
should be
+# considered unsafe as it can lead to crashes of the subprocess. See
bpo-33725."
+#
+#
https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods
+if sys.platform.startswith('darwin'):
+ multiprocessing.set_start_method('fork')
+
+__version__ = '0.1.0'
def parse_config(config, name):
return getattr(config.option, name, config.getini(name))
-def force(fn):
- while True:
- try:
- return fn()
- except ConnectionRefusedError:
- time.sleep(.1)
- continue
-
-
def pytest_addoption(parser):
workers_help = ('Set the max num of workers (aka processes) to start '
'(int or "auto" - one per core)')
@@ -53,7 +56,12 @@
raise session.Interrupted(session.shouldstop)
-def process_with_threads(queue, session, tests_per_worker, errors):
+def process_with_threads(config, queue, session, tests_per_worker, errors):
+ # This function will be called from subprocesses, forked from the main
+ # pytest process. First thing we need to do is to change config's value
+ # so we know we are running as a worker.
+ config.parallel_worker = True
+
threads = []
for _ in range(tests_per_worker):
thread = ThreadWorker(queue, session, errors)
@@ -70,14 +78,13 @@
self.errors = errors
def run(self):
- from tblib import pickling_support
-
pickling_support.install()
while True:
try:
- index = self.queue.get_nowait()
- except Queue.Empty:
- break
+ index = self.queue.get()
+ if index == 'stop':
+ self.queue.task_done()
+ break
except ConnectionRefusedError:
time.sleep(.1)
continue
@@ -171,87 +178,13 @@
super(ThreadLocalFixtureDef, self).__init__(*args, **kwargs)
-class SafeNumber(object):
- def __init__(self, manager):
- self._val = manager.Value('i', 0)
- self._lock = manager.RLock()
-
- def __add__(self, i):
- with self._lock:
- return self._val.value + i
-
- def __radd__(self, i):
- with self._lock:
- return self._val.value + i
-
- def __iadd__(self, i):
- with self._lock:
- self._val.value += i
- return self
-
- def __ge__(self, i):
- with self._lock:
- return int(self._val.value) >= i
-
- def __gt__(self, i):
- with self._lock:
- return int(self._val.value) > i
-
- def __le__(self, i):
- with self._lock:
- return int(self._val.value) <= i
-
- def __lt__(self, i):
- with self._lock:
- return int(self._val.value) < i
-
- def __eq__(self, i):
- with self._lock:
- return int(self._val.value) == i
-
- def __bool__(self):
- return not self.__eq__(0)
-
- def __int__(self):
- with self._lock:
- return int(self._val.value)
-
- def __str__(self):
- with self._lock:
- return str(self._val.value)
-
- def __repr__(self):
- with self._lock:
- return repr(self._val.value)
-
- @property
- def value(self):
- return int(self._val.value)
-
-
-class SafeHtmlTestLogs(raw):
- def __init__(self, manager):
- self._val = manager.list()
- self._lock = manager.RLock()
-
- def insert(self, index, tbody):
- # FIXME: sort by this order
- # ['Error', 'Failed', 'Rerun', 'XFailed',
- # 'XPassed', 'Skipped', 'Passed']
- #
https://github.com/pytest-dev/pytest-html/blob/cf21aed3635e5bd4baa24e8ea16ffe9dfda1845e/pytest_html/plugin.py#L141-L144
- log_entry = tbody.unicode(indent=2)
- self._val.append(log_entry)
-
- @property
- def uniobj(self):
- return ''.join(self._val)
-
-
class ParallelRunner(object):
def __init__(self, config):
+ self._config = config
self._manager = Manager()
+ self._log = py.log.Producer('pytest-parallel')
+
reporter = config.pluginmanager.getplugin('terminalreporter')
- html = config.pluginmanager.getplugin('html')
# prevent mangling the output
reporter.showfspath = False
@@ -274,38 +207,6 @@
self.workers = workers
- if self.workers > 1:
- # ensure stats are process-safe
- reporter.stats = self._manager.dict()
- setdefault = reporter.stats.setdefault
-
- def setdefault_proxy(key, default=None):
- if isinstance(default, list) and len(default) == 0:
- default = force(lambda: self._manager.list())
- if key == "deselected":
- # "deselected" on stats can safely ignore list values
- res = force(lambda: setdefault(key, default))
- res.extend = lambda iter: [
- default.append(1) for i in range(len(iter))
- ]
- return res
- return force(lambda: setdefault(key, default))
- reporter.stats.setdefault = setdefault_proxy
-
- # ensure pytest-html is process safe
- if html and hasattr(config, '_html'):
- htmlplugin = config._html
- htmlplugin.test_logs = SafeHtmlTestLogs(self._manager)
- htmlplugin.errors = SafeNumber(self._manager)
- htmlplugin.failed = SafeNumber(self._manager)
- htmlplugin.passed = SafeNumber(self._manager)
- htmlplugin.skipped = SafeNumber(self._manager)
- htmlplugin.xfailed = SafeNumber(self._manager)
- htmlplugin.xpassed = SafeNumber(self._manager)
- has_rerun = config.pluginmanager.hasplugin('rerunfailures')
- htmlplugin.rerun = SafeNumber(self._manager) \
- if has_rerun else None
-
@pytest.mark.tryfirst
def pytest_sessionstart(self, session):
# make the session threadsafe
@@ -359,27 +260,52 @@
.format(self.workers, worker_noun, process_noun,
tests_per_worker, test_noun, thread_noun))
- queue = Queue.Queue() if self.workers == 1 else self._manager.Queue()
- errors = Queue.Queue() if self.workers == 1 else self._manager.Queue()
+ queue_cls = self._manager.Queue
+ queue = queue_cls()
+ errors = queue_cls()
+
+ # Reports about tests will be gathered from workerss
+ # using this queue. Workers will push reports to the queue,
+ # and a separate thread will rerun pytest_runtest_logreport
+ # for them.
+ # This way, report generators like JUnitXML will work as expected.
+ self.responses_queue = queue_cls()
for i in range(len(session.items)):
queue.put(i)
- if self.workers == 1:
- process_with_threads(queue, session, tests_per_worker, errors)
- return True
+ # Now we need to put stopping sentinels, so that worker
+ # processes will know, there is time to finish the work.
+ for i in range(self.workers * tests_per_worker):
+ queue.put('stop')
+
+ responses_processor = threading.Thread(
+ target=self.process_responses,
+ args=(self.responses_queue,),
+ )
+ responses_processor.daemon = True
+ responses_processor.start()
- # Ensure testsfailed is process-safe
- session.testsfailed = SafeNumber(self._manager)
+ def wait_for_responses_processor():
+ self.responses_queue.put(('quit', {}))
+ responses_processor.join()
processes = []
+
+ # Current process is not a worker.
+ # This flag will be changed after the worker's fork.
+ self._config.parallel_worker = False
+
+ args = (self._config, queue, session, tests_per_worker, errors)
for _ in range(self.workers):
- process = Process(target=process_with_threads,
- args=(queue, session, tests_per_worker, errors))
+ process = Process(target=process_with_threads, args=args)
process.start()
processes.append(process)
+
[p.join() for p in processes]
+
queue.join()
+ wait_for_responses_processor()
if not errors.empty():
import six
@@ -397,3 +323,43 @@
six.raise_from(exc, err[1])
return True
+
+ def send_response(self, event_name, **arguments):
+ self.responses_queue.put((event_name, arguments))
+
+ def pytest_runtest_logreport(self, report):
+ # We want workers to report to it's master.
+ # Without this "if", master will try to report to itself.
+ if self._config.parallel_worker:
+ data = self._config.hook.pytest_report_to_serializable(
+ config=self._config, report=report
+ )
+ self.send_response('testreport', report=data)
+
+ def on_testreport(self, report):
+ report = self._config.hook.pytest_report_from_serializable(
+ config=self._config, data=report
+ )
+ self._config.hook.pytest_runtest_logreport(report=report)
+
+ def process_responses(self, queue):
+ while True:
+ try:
+ event_name, kwargs = queue.get()
+ if event_name == 'quit':
+ break
+ except ConnectionRefusedError:
+ time.sleep(.1)
+ continue
+
+ callback_name = 'on_' + event_name
+ try:
+ callback = getattr(self, callback_name)
+ callback(**kwargs)
+ except BaseException:
+ self._log('Exception during calling callback', callback_name)
+ finally:
+ try:
+ queue.task_done()
+ except ConnectionRefusedError:
+ pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/tests/test_concurrent.py
new/pytest-parallel-0.1.0/tests/test_concurrent.py
--- old/pytest-parallel-0.0.10/tests/test_concurrent.py 2019-11-22
20:49:38.000000000 +0100
+++ new/pytest-parallel-0.1.0/tests/test_concurrent.py 2020-04-30
20:19:07.000000000 +0200
@@ -23,7 +23,7 @@
def test_1(driver):
print_('inside test_1')
""")
- result = testdir.runpytest(
+ result = testdir.runpytest_subprocess(
'-s',
'--tests-per-worker=2'
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/tests/test_safenumber.py
new/pytest-parallel-0.1.0/tests/test_safenumber.py
--- old/pytest-parallel-0.0.10/tests/test_safenumber.py 2019-11-22
20:49:38.000000000 +0100
+++ new/pytest-parallel-0.1.0/tests/test_safenumber.py 1970-01-01
01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-import multiprocessing as mp
-
-from pytest_parallel import SafeNumber
-
-
-def test_SafeNumber():
- manager = mp.Manager()
-
- nr = SafeNumber(manager)
- assert isinstance(nr, SafeNumber)
- assert not nr
- assert nr == 0
-
- assert nr + 1 == 1
- nr += 1
- assert isinstance(nr, SafeNumber)
- assert nr == 1
- assert nr >= 1
- assert nr <= 1
- assert nr
- assert repr(nr) == '1'
- assert str(nr) == '1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pytest-parallel-0.0.10/tox.ini
new/pytest-parallel-0.1.0/tox.ini
--- old/pytest-parallel-0.0.10/tox.ini 2019-11-22 20:49:38.000000000 +0100
+++ new/pytest-parallel-0.1.0/tox.ini 2020-04-30 20:19:07.000000000 +0200
@@ -3,6 +3,7 @@
flake8
py36
py37
+ py38
[testenv]
deps =
@@ -10,7 +11,17 @@
pytest-html>=1.19.0
six>=1.11.0
tblib
+ importlib_resources
+ coverage: pytest-cov
+passenv =
+ CI
+ PYTEST_ADDOPTS
+ TERM
+ coverage: TRAVIS TRAVIS_*
+setenv =
+ coverage: PYTEST_ADDOPTS=--cov --cov-report=term-missing
{env:PYTEST_ADDOPTS:}
commands = pytest {posargs:tests}
+ coverage: {toxinidir}/.ci/report-coverage.sh
[testenv:flake8]
skip_install = true