Hello community, here is the log from the commit of package python-tap.py for openSUSE:Leap:15.2 checked in at 2020-03-21 16:46:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/python-tap.py (Old) and /work/SRC/openSUSE:Leap:15.2/.python-tap.py.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-tap.py" Sat Mar 21 16:46:14 2020 rev:2 rq:786842 version:3.0 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/python-tap.py/python-tap.py.changes 2020-02-22 18:48:26.144244483 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.python-tap.py.new.3160/python-tap.py.changes 2020-03-21 16:47:40.737671641 +0100 @@ -1,0 +2,9 @@ +Wed Mar 11 12:59:42 UTC 2020 - pgaj...@suse.com + +- version update to 3.0 + * Drop support for Python 2 (it is end-of-life). + * Add support for subtests. + * Run a test suite with ``python -m tap``. + * Discontinue use of Pipenv for managing development. + +------------------------------------------------------------------- Old: ---- tap.py-2.6.1.tar.gz New: ---- tap.py-3.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-tap.py.spec ++++++ --- /var/tmp/diff_new_pack.RZrA8e/_old 2020-03-21 16:47:41.189671927 +0100 +++ /var/tmp/diff_new_pack.RZrA8e/_new 2020-03-21 16:47:41.193671930 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-tap.py # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,8 +17,9 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} +%define skip_python2 1 Name: python-tap.py -Version: 2.6.1 +Version: 3.0 Release: 0 Summary: Test Anything Protocol (TAP) tools License: BSD-2-Clause @@ -29,6 +30,7 @@ BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros +Requires: python-setuptools Recommends: python-PyYAML Recommends: python-more-itertools BuildArch: noarch @@ -36,6 +38,7 @@ BuildRequires: %{python_module PyYAML} BuildRequires: %{python_module mock} BuildRequires: %{python_module more-itertools} +BuildRequires: %{python_module pytest} # /SECTION %python_subpackages @@ -56,7 +59,7 @@ %check export LANG=en_US.UTF-8 -%python_exec setup.py test +%pytest %files %{python_files} %doc AUTHORS README.md ++++++ tap.py-2.6.1.tar.gz -> tap.py-3.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/AUTHORS new/tap.py-3.0/AUTHORS --- old/tap.py-2.6.1/AUTHORS 2018-09-15 01:32:05.000000000 +0200 +++ new/tap.py-3.0/AUTHORS 2020-01-10 16:08:52.000000000 +0100 @@ -5,6 +5,7 @@ * Andrew McNamara * Chris Clarke +* Erik Cederstrand * Marc Abramowitz * Mark E. Hamilton * Matt Layman @@ -12,3 +13,5 @@ * Michael F. Lamb (http://datagrok.org) * Nicolas Caniart * Richard Bosworth +* Ross Burton +* Simon McVittie diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/MANIFEST.in new/tap.py-3.0/MANIFEST.in --- old/tap.py-2.6.1/MANIFEST.in 2018-01-07 03:54:20.000000000 +0100 +++ new/tap.py-3.0/MANIFEST.in 2019-12-15 02:25:01.000000000 +0100 @@ -1,8 +1,6 @@ include AUTHORS include LICENSE include README.md -include Pipfile -include Pipfile.lock recursive-include docs * recursive-include tap/locale * prune docs/_build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/PKG-INFO new/tap.py-3.0/PKG-INFO --- old/tap.py-2.6.1/PKG-INFO 2019-09-17 15:36:47.000000000 +0200 +++ new/tap.py-3.0/PKG-INFO 2020-01-10 16:12:24.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: tap.py -Version: 2.6.1 +Version: 3.0 Summary: Test Anything Protocol (TAP) tools Home-page: https://github.com/python-tap/tappy Author: Matt Layman @@ -19,6 +19,20 @@ Releases ======== + Version 3.0, Released January 10, 2020 + -------------------------------------- + + * Drop support for Python 2 (it is end-of-life). + * Add support for subtests. + * Run a test suite with ``python -m tap``. + * Discontinue use of Pipenv for managing development. + + Version 2.6.2, Released October 20, 2019 + ---------------------------------------- + + * Fix bug in streaming mode that would generate tap files + when the plan was already set (affected pytest). + Version 2.6.1, Released September 17, 2019 ------------------------------------------ @@ -185,7 +199,6 @@ Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/Pipfile new/tap.py-3.0/Pipfile --- old/tap.py-2.6.1/Pipfile 2019-01-23 19:31:06.000000000 +0100 +++ new/tap.py-3.0/Pipfile 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ -[[source]] -url = "https://pypi.python.org/simple" -verify_ssl = true -name = "pypi" - -[dev-packages] -Babel = "*" -coverage = "*" -"flake8" = "==3.6.0" -mock = "*" -requests = "*" -Sphinx = "*" -tox = "*" -twine = "*" -pytest = "*" -more-itertools = "*" -pyyaml = "*" -black = "*" - -[packages] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/Pipfile.lock new/tap.py-3.0/Pipfile.lock --- old/tap.py-2.6.1/Pipfile.lock 2018-09-15 01:33:21.000000000 +0200 +++ new/tap.py-3.0/Pipfile.lock 1970-01-01 01:00:00.000000000 +0100 @@ -1,370 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "75d157b7787ee1eff10691e6cbbd12b52687ef68f2aa6509d18f8a829f166beb" - }, - "pipfile-spec": 6, - "requires": {}, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.python.org/simple", - "verify_ssl": true - } - ] - }, - "default": {}, - "develop": { - "alabaster": { - "hashes": [ - "sha256:674bb3bab080f598371f4443c5008cbfeb1a5e622dd312395d2d82af2c54c456", - "sha256:b63b1f4dc77c074d386752ec4a8a7517600f6c0db8cd42980cae17ab7b3275d7" - ], - "version": "==0.7.11" - }, - "appdirs": { - "hashes": [ - "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", - "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" - ], - "version": "==1.4.3" - }, - "atomicwrites": { - "hashes": [ - "sha256:0312ad34fcad8fac3704d441f7b317e50af620823353ec657a53e981f92920c0", - "sha256:ec9ae8adaae229e4f8446952d204a3e4b5fdd2d099f9be3aaf556120135fb3ee" - ], - "markers": "python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.1.*' and python_version != '3.0.*' and python_version != '3.2.*'", - "version": "==1.2.1" - }, - "attrs": { - "hashes": [ - "sha256:10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69", - "sha256:ca4be454458f9dec299268d472aaa5a11f67a4ff70093396e1ceae9c76cf4bbb" - ], - "version": "==18.2.0" - }, - "babel": { - "hashes": [ - "sha256:6778d85147d5d85345c14a26aada5e478ab04e39b078b0745ee6870c2b5cf669", - "sha256:8cba50f48c529ca3fa18cf81fa9403be176d374ac4d60738b839122dfaaa3d23" - ], - "index": "pypi", - "version": "==2.6.0" - }, - "black": { - "hashes": [ - "sha256:22158b89c1a6b4eb333a1e65e791a3f8b998cf3b11ae094adb2570f31f769a44", - "sha256:4b475bbd528acce094c503a3d2dbc2d05a4075f6d0ef7d9e7514518e14cc5191" - ], - "index": "pypi", - "version": "==18.6b4" - }, - "certifi": { - "hashes": [ - "sha256:376690d6f16d32f9d1fe8932551d80b23e9d393a8578c5633a2ed39a64861638", - "sha256:456048c7e371c089d0a77a5212fb37a2c2dce1e24146e3b7e0261736aaeaa22a" - ], - "version": "==2018.8.24" - }, - "chardet": { - "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" - ], - "version": "==3.0.4" - }, - "click": { - "hashes": [ - "sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d", - "sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b" - ], - "version": "==6.7" - }, - "coverage": { - "hashes": [ - "sha256:0dcf381f51f589f1f797449602a7fe4e63be8a7963c259c13742af3f30be902e", - "sha256:11a4bb30306def2fa012e3429de44a93ef2ae3b6ad3f6b800f6c578658a5c402", - "sha256:166c957a38b034050a14201f64eec11fc95e17bf2ba31fc07d887db82bae1a47", - "sha256:184e6680f85fcc1b371f67ab732290ecf96a225448198e14ec170986db47b0aa", - "sha256:1904deb72c561a8e445feb190db07ca4b165ee85567894b4b85fdb9bf21a27c0", - "sha256:1f2003b83426cfaadebff8b9bb1fb3650134a15fda3a81434cc8415896d7a7bc", - "sha256:1f462997b1804f8b5d1ee2b262626fc76b746e66023eb64f529af35991167c7c", - "sha256:213697f49eba45b5fb05e77f63bdb7c0d13eed12dcd08e6af43224615b28b524", - "sha256:2557da232b0daeb55afe2f7e55f7b80c56bfa2981864c6638b32b5691da9f4c3", - "sha256:395a8525f1456439a5d6c248bc1397040491047e3e0e0c4ceb2059155419cd3b", - "sha256:43d6334b35e50e74d034ec075ffd9082c559bca624924af6c7e9d2b8aef0f362", - "sha256:4566c74bde36aaaef0372fb11678edf43dcc73f4eb8dbb6987250658c4a3b95a", - "sha256:6d39cc527c9c7a30f20bed14b5cf9a7e87ef1f3528c1847d1c81caf75a31ebb6", - "sha256:8bd69d3cba21d885df6fe8728cee779a722da08cf84072558956c148b5ab61e5", - "sha256:a1d0fcbbe0735eb66c6622266b12e60ea8d37ada405cb8f73b154c5eec467187", - "sha256:ab706bfbb365f232be01a536a9199ee6bfc80c9b63fb7825fdd5f4ae5cc2a12c", - "sha256:afbf4cee68d2f2968b06951cf16c0b18513eb59bb3af0685084de6cacb04e217", - "sha256:bbc8913cd5889df7eab597a4b4074a2c6c5ee6ca9aad58a9ba0f3f847b1a99df", - "sha256:bd5428ab378a7432e43afa52b6bb9c5d48f5029f395a97dc9ebf87fc0f2a9d8b", - "sha256:c3efe0185583443e04f8519818f4772d92fbbdf5f9fa23165f2f2482b20efc37", - "sha256:d40277e918da575d008e2955a0ca6600f870bdb3570b07ee3a754ea9301862e7", - "sha256:d4b6ec6951e20ea3f5d1fefe35b4bcbf692d4306f1b932c28dd2ee4cb167152c", - "sha256:d5837e813ad62c856bc80f988c4e24e0d2b7b22a8a1dad8c1cfcb8ff4d4750a8", - "sha256:d9583ae0e152c5fb0142cb55c3a11e1b13006c00d0c3e8b35ccc2d4ebfc6645e", - "sha256:e27380cbe4088a1df514e75aa4fe6dc9e98bbd7902cf28ab16e8b2de0f8cb344", - "sha256:e624daef32f8808296312e72190c7e576852cb75c27935b31c1bbbde14ab353c", - "sha256:ef4278e5ac1e47c731ec5e3e48351721e01d2eb4fefa9b97fcdba7495a82cfad" - ], - "index": "pypi", - "version": "==5.0a2" - }, - "docutils": { - "hashes": [ - "sha256:02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6", - "sha256:51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274", - "sha256:7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6" - ], - "version": "==0.14" - }, - "flake8": { - "hashes": [ - "sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0", - "sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37" - ], - "index": "pypi", - "version": "==3.5.0" - }, - "idna": { - "hashes": [ - "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e", - "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16" - ], - "version": "==2.7" - }, - "imagesize": { - "hashes": [ - "sha256:3f349de3eb99145973fefb7dbe38554414e5c30abd0c8e4b970a7c9d09f3a1d8", - "sha256:f3832918bc3c66617f92e35f5d70729187676313caa60c187eb0f28b8fe5e3b5" - ], - "markers": "python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.1.*' and python_version != '3.0.*' and python_version != '3.2.*'", - "version": "==1.1.0" - }, - "jinja2": { - "hashes": [ - "sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd", - "sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4" - ], - "version": "==2.10" - }, - "markupsafe": { - "hashes": [ - "sha256:a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665" - ], - "version": "==1.0" - }, - "mccabe": { - "hashes": [ - "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", - "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" - ], - "version": "==0.6.1" - }, - "mock": { - "hashes": [ - "sha256:5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1", - "sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba" - ], - "index": "pypi", - "version": "==2.0.0" - }, - "more-itertools": { - "hashes": [ - "sha256:c187a73da93e7a8acc0001572aebc7e3c69daf7bf6881a2cea10650bd4420092", - "sha256:c476b5d3a34e12d40130bc2f935028b5f636df8f372dc2c1c01dc19681b2039e", - "sha256:fcbfeaea0be121980e15bc97b3817b5202ca73d0eae185b4550cbfce2a3ebb3d" - ], - "index": "pypi", - "version": "==4.3.0" - }, - "packaging": { - "hashes": [ - "sha256:e9215d2d2535d3ae866c3d6efc77d5b24a0192cce0ff20e42896cc0664f889c0", - "sha256:f019b770dd64e585a99714f1fd5e01c7a8f11b45635aa953fd41c689a657375b" - ], - "version": "==17.1" - }, - "pbr": { - "hashes": [ - "sha256:1b8be50d938c9bb75d0eaf7eda111eec1bf6dc88a62a6412e33bf077457e0f45", - "sha256:b486975c0cafb6beeb50ca0e17ba047647f229087bd74e37f4a7e2cac17d2caa" - ], - "version": "==4.2.0" - }, - "pkginfo": { - "hashes": [ - "sha256:5878d542a4b3f237e359926384f1dde4e099c9f5525d236b1840cf704fa8d474", - "sha256:a39076cb3eb34c333a0dd390b568e9e1e881c7bf2cc0aee12120636816f55aee" - ], - "version": "==1.4.2" - }, - "pluggy": { - "hashes": [ - "sha256:6e3836e39f4d36ae72840833db137f7b7d35105079aee6ec4a62d9f80d594dd1", - "sha256:95eb8364a4708392bae89035f45341871286a333f749c3141c20573d2b3876e1" - ], - "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version >= '2.7' and python_version != '3.0.*'", - "version": "==0.7.1" - }, - "py": { - "hashes": [ - "sha256:06a30435d058473046be836d3fc4f27167fd84c45b99704f2fb5509ef61f9af1", - "sha256:50402e9d1c9005d759426988a492e0edaadb7f4e68bcddfea586bc7432d009c6" - ], - "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version >= '2.7' and python_version != '3.0.*'", - "version": "==1.6.0" - }, - "pycodestyle": { - "hashes": [ - "sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766", - "sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9" - ], - "version": "==2.3.1" - }, - "pyflakes": { - "hashes": [ - "sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f", - "sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805" - ], - "version": "==1.6.0" - }, - "pygments": { - "hashes": [ - "sha256:78f3f434bcc5d6ee09020f92ba487f95ba50f1e3ef83ae96b9d5ffa1bab25c5d", - "sha256:dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc" - ], - "version": "==2.2.0" - }, - "pyparsing": { - "hashes": [ - "sha256:0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04", - "sha256:fee43f17a9c4087e7ed1605bd6df994c6173c1e977d7ade7b651292fab2bd010" - ], - "version": "==2.2.0" - }, - "pytest": { - "hashes": [ - "sha256:453cbbbe5ce6db38717d282b758b917de84802af4288910c12442984bde7b823", - "sha256:a8a07f84e680482eb51e244370aaf2caa6301ef265f37c2bdefb3dd3b663f99d" - ], - "index": "pypi", - "version": "==3.8.0" - }, - "pytz": { - "hashes": [ - "sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053", - "sha256:ffb9ef1de172603304d9d2819af6f5ece76f2e85ec10692a524dd876e72bf277" - ], - "version": "==2018.5" - }, - "pyyaml": { - "hashes": [ - "sha256:254bf6fda2b7c651837acb2c718e213df29d531eebf00edb54743d10bcb694eb", - "sha256:3108529b78577327d15eec243f0ff348a0640b0c3478d67ad7f5648f93bac3e2", - "sha256:3c17fb92c8ba2f525e4b5f7941d850e7a48c3a59b32d331e2502a3cdc6648e76", - "sha256:8d6d96001aa7f0a6a4a95e8143225b5d06e41b1131044913fecb8f85a125714b", - "sha256:c8a88edd93ee29ede719080b2be6cb2333dfee1dccba213b422a9c8e97f2967b" - ], - "index": "pypi", - "version": "==4.2b4" - }, - "requests": { - "hashes": [ - "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1", - "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a" - ], - "index": "pypi", - "version": "==2.19.1" - }, - "requests-toolbelt": { - "hashes": [ - "sha256:42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237", - "sha256:f6a531936c6fa4c6cfce1b9c10d5c4f498d16528d2a54a22ca00011205a187b5" - ], - "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.0.*' and python_version >= '2.6' and python_version < '4'", - "version": "==0.8.0" - }, - "six": { - "hashes": [ - "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9", - "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb" - ], - "version": "==1.11.0" - }, - "snowballstemmer": { - "hashes": [ - "sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128", - "sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89" - ], - "version": "==1.2.1" - }, - "sphinx": { - "hashes": [ - "sha256:95acd6648902333647a0e0564abdb28a74b0a76d2333148aa35e5ed1f56d3c4b", - "sha256:c091dbdd5cc5aac6eb95d591a819fd18bccec90ffb048ec465b165a48b839b45" - ], - "index": "pypi", - "version": "==1.8.0" - }, - "sphinxcontrib-websupport": { - "hashes": [ - "sha256:68ca7ff70785cbe1e7bccc71a48b5b6d965d79ca50629606c7861a21b206d9dd", - "sha256:9de47f375baf1ea07cdb3436ff39d7a9c76042c10a769c52353ec46e4e8fc3b9" - ], - "markers": "python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.1.*' and python_version != '3.0.*' and python_version != '3.2.*'", - "version": "==1.1.0" - }, - "toml": { - "hashes": [ - "sha256:380178cde50a6a79f9d2cf6f42a62a5174febe5eea4126fe4038785f1d888d42", - "sha256:a7901919d3e4f92ffba7ff40a9d697e35bbbc8a8049fe8da742f34c83606d957" - ], - "version": "==0.9.6" - }, - "tox": { - "hashes": [ - "sha256:433bb93c57edae263150767e672a0d468ab4fefcc1958eb4013e56a670bb851e", - "sha256:bfb4e4efb7c61a54bc010a5c00fdbe0973bc4bdf04090bfcd3c93c901006177c" - ], - "index": "pypi", - "version": "==3.3.0" - }, - "tqdm": { - "hashes": [ - "sha256:18f1818ce951aeb9ea162ae1098b43f583f7d057b34d706f66939353d1208889", - "sha256:df02c0650160986bac0218bb07952245fc6960d23654648b5d5526ad5a4128c9" - ], - "markers": "python_version != '3.1.*' and python_version >= '2.6' and python_version != '3.0.*'", - "version": "==4.26.0" - }, - "twine": { - "hashes": [ - "sha256:08eb132bbaec40c6d25b358f546ec1dc96ebd2638a86eea68769d9e67fe2b129", - "sha256:2fd9a4d9ff0bcacf41fdc40c8cb0cfaef1f1859457c9653fd1b92237cc4e9f25" - ], - "index": "pypi", - "version": "==1.11.0" - }, - "urllib3": { - "hashes": [ - "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf", - "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5" - ], - "markers": "python_version != '3.3.*' and python_version != '3.2.*' and python_version != '3.1.*' and python_version != '3.0.*' and python_version >= '2.6' and python_version < '4'", - "version": "==1.23" - }, - "virtualenv": { - "hashes": [ - "sha256:2ce32cd126117ce2c539f0134eb89de91a8413a29baac49cbab3eb50e2026669", - "sha256:ca07b4c0b54e14a91af9f34d0919790b016923d157afda5efdde55c96718f752" - ], - "markers": "python_version != '3.2.*' and python_version != '3.1.*' and python_version >= '2.7' and python_version != '3.0.*'", - "version": "==16.0.0" - } - } -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/README.md new/tap.py-3.0/README.md --- old/tap.py-2.6.1/README.md 2019-09-17 03:43:18.000000000 +0200 +++ new/tap.py-3.0/README.md 2019-12-10 03:01:09.000000000 +0100 @@ -28,7 +28,6 @@ tappy is available for download from [PyPI][pypi]. tappy is currently supported on Python -2.7, 3.5, 3.6, 3.7, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/docs/contributing.rst new/tap.py-3.0/docs/contributing.rst --- old/tap.py-2.6.1/docs/contributing.rst 2018-09-15 01:57:18.000000000 +0200 +++ new/tap.py-3.0/docs/contributing.rst 2019-12-15 02:25:01.000000000 +0100 @@ -14,20 +14,15 @@ Setup ----- -tappy uses Pipenv -to manage development. -The following instructions assume that Pipenv is installed. -See the `Pipenv install instructions <https://docs.pipenv.org/install/>`_ -for more details. - -After installing Pipenv: +tappy uses the built-in `venv` module. .. code-block:: console $ git clone g...@github.com:python-tap/tappy.git $ cd tappy - $ pipenv install --dev --ignore-pipfile - $ pipenv shell + $ python3 -m venv venv + $ source venv/bin/activate + $ pip install -r requirements-dev.txt $ # Edit some files and run the tests. $ pytest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/docs/index.rst new/tap.py-3.0/docs/index.rst --- old/tap.py-2.6.1/docs/index.rst 2019-09-17 03:43:18.000000000 +0200 +++ new/tap.py-3.0/docs/index.rst 2019-12-15 03:07:09.000000000 +0100 @@ -24,7 +24,7 @@ tappy is available for download from `PyPI <https://pypi.python.org/pypi/tap.py>`_. tappy is currently supported on -Python 2.7, +Python 3.5, 3.6, 3.7, @@ -45,6 +45,18 @@ $ pip install tap.py[yaml] +Quickstart +---------- + +tappy can run like the built-in ``unittest`` discovery runner. + +.. code-block:: console + + $ python -m tap + +This should be enough to run a unittest-based test suite +and output TAP to the console. + Documentation ------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/docs/producers.rst new/tap.py-3.0/docs/producers.rst --- old/tap.py-2.6.1/docs/producers.rst 2016-07-30 20:51:28.000000000 +0200 +++ new/tap.py-3.0/docs/producers.rst 2019-12-15 03:07:09.000000000 +0100 @@ -13,6 +13,8 @@ for the **nose** testing tool. * tappy for **pytest** - tappy provides a plugin called ``tap`` for the **pytest** testing tool. +* tappy as the test runner - tappy can run like ``python -m unittest``. + Run your test suite with ``python -m tap``. By default, the producers will create one TAP file for each ``TestCase`` executed by the test suite. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/docs/releases.rst new/tap.py-3.0/docs/releases.rst --- old/tap.py-2.6.1/docs/releases.rst 2019-09-17 15:32:21.000000000 +0200 +++ new/tap.py-3.0/docs/releases.rst 2020-01-10 16:09:53.000000000 +0100 @@ -1,6 +1,20 @@ Releases ======== +Version 3.0, Released January 10, 2020 +-------------------------------------- + +* Drop support for Python 2 (it is end-of-life). +* Add support for subtests. +* Run a test suite with ``python -m tap``. +* Discontinue use of Pipenv for managing development. + +Version 2.6.2, Released October 20, 2019 +---------------------------------------- + +* Fix bug in streaming mode that would generate tap files + when the plan was already set (affected pytest). + Version 2.6.1, Released September 17, 2019 ------------------------------------------ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/docs/tappy.1.rst new/tap.py-3.0/docs/tappy.1.rst --- old/tap.py-2.6.1/docs/tappy.1.rst 2016-07-30 20:51:28.000000000 +0200 +++ new/tap.py-3.0/docs/tappy.1.rst 2020-01-10 16:08:52.000000000 +0100 @@ -17,7 +17,7 @@ given as *pathname* s and produces an output similar to what the regular text test-runner from python's :py:mod:`unittest` module would. If *pathname* points to a directory, -:program:`tappy` will look in that directory of ``*.tap`` +:program:`tappy` will look in that directory for ``*.tap`` files to consume. If you have a tool that consumes the `unittest` regular output, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/setup.py new/tap.py-3.0/setup.py --- old/tap.py-2.6.1/setup.py 2019-09-17 03:43:18.000000000 +0200 +++ new/tap.py-3.0/setup.py 2019-12-26 15:22:44.000000000 +0100 @@ -9,29 +9,33 @@ `Read the Docs <https://tappy.readthedocs.io/>`_. """ -from setuptools import find_packages, setup -from setuptools.command.build_py import build_py -from setuptools.command.sdist import sdist +from setuptools import find_packages, setup, Command import tap -class BuildPy(build_py): - """Custom ``build_py`` command to always build mo files for wheels.""" +class ReleaseCommand(Command): + description = "generate distribution release artifacts" + user_options = [] + + def initialize_options(self): + """Initialize options. + This method overrides a required abstract method. + """ + + def finalize_options(self): + """Finalize options. + This method overrides a required abstract method. + """ def run(self): + """Generate the distribution release artifacts. + The custom command is used to ensure that compiling + po to mo is not skipped. + """ self.run_command("compile_catalog") - # build_py is an old style class so super cannot be used. - build_py.run(self) - - -class Sdist(sdist): - """Custom ``sdist`` command to ensure that mo files are always created.""" - - def run(self): - self.run_command("compile_catalog") - # sdist is an old style class so super cannot be used. - sdist.run(self) + self.run_command("sdist") + self.run_command("bdist_wheel") # The docs import setup.py for the version so only call setup when not behaving @@ -59,14 +63,13 @@ zip_safe=False, platforms="any", install_requires=[], - extras_require={"yaml": ["more-itertools", "PyYAML"]}, + extras_require={"yaml": ["more-itertools", "PyYAML>=5.1"]}, classifiers=[ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", - "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", @@ -74,7 +77,5 @@ "Topic :: Software Development :: Testing", ], keywords=["TAP", "unittest"], - cmdclass={"build_py": BuildPy, "sdist": Sdist}, - test_suite="tap.tests", - tests_require=["mock"], + cmdclass={"release": ReleaseCommand}, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/__init__.py new/tap.py-3.0/tap/__init__.py --- old/tap.py-2.6.1/tap/__init__.py 2019-09-17 15:33:08.000000000 +0200 +++ new/tap.py-3.0/tap/__init__.py 2019-12-10 03:01:09.000000000 +0100 @@ -3,4 +3,4 @@ from .runner import TAPTestRunner __all__ = ["TAPTestRunner"] -__version__ = "2.6.1" +__version__ = "3.0" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/__main__.py new/tap.py-3.0/tap/__main__.py --- old/tap.py-2.6.1/tap/__main__.py 1970-01-01 01:00:00.000000000 +0100 +++ new/tap.py-3.0/tap/__main__.py 2019-12-15 03:07:09.000000000 +0100 @@ -0,0 +1,3 @@ +from tap.main import main_module + +main_module() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/directive.py new/tap.py-3.0/tap/directive.py --- old/tap.py-2.6.1/tap/directive.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/directive.py 2019-10-20 23:30:15.000000000 +0200 @@ -20,10 +20,10 @@ ) def __init__(self, text): - """Initialize the directive by parsing the text. + r"""Initialize the directive by parsing the text. The text is assumed to be everything after a '#\s*' on a result line. - """ # noqa: flake8 is grumbling about the \s in the description. + """ self._text = text self._skip = False self._todo = False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/line.py new/tap.py-3.0/tap/line.py --- old/tap.py-2.6.1/tap/line.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/line.py 2019-12-26 15:22:44.000000000 +0100 @@ -96,7 +96,7 @@ """ if LOAD_YAML and self._yaml_block is not None: try: - yaml_dict = yaml.load(self._yaml_block) + yaml_dict = yaml.load(self._yaml_block, Loader=yaml.SafeLoader) return yaml_dict except yaml.error.YAMLError: print("Error parsing yaml block. Check formatting.") Binary files old/tap.py-2.6.1/tap/locale/ar/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/ar/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/de/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/de/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/es/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/es/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/fr/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/fr/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/it/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/it/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/ja/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/ja/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/nl/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/nl/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/pt/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/pt/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/ru/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/ru/LC_MESSAGES/tappy.mo differ Binary files old/tap.py-2.6.1/tap/locale/zh/LC_MESSAGES/tappy.mo and new/tap.py-3.0/tap/locale/zh/LC_MESSAGES/tappy.mo differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/main.py new/tap.py-3.0/tap/main.py --- old/tap.py-2.6.1/tap/main.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/main.py 2019-12-15 03:07:09.000000000 +0100 @@ -6,6 +6,7 @@ from tap.i18n import _ from tap.loader import Loader +from tap.runner import TAPTestRunner def main(argv=sys.argv, stream=sys.stderr): @@ -71,3 +72,10 @@ return 0 else: return 1 + + +def main_module(): + """Entry point for running as ``python -m tap``.""" + runner = TAPTestRunner() + runner.set_stream(True) + unittest.main(module=None, testRunner=runner) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/runner.py new/tap.py-3.0/tap/runner.py --- old/tap.py-2.6.1/tap/runner.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/runner.py 2019-12-15 01:47:48.000000000 +0100 @@ -17,6 +17,18 @@ def __init__(self, stream, descriptions, verbosity): super(TAPTestResult, self).__init__(stream, descriptions, verbosity) + def addSubTest(self, test, subtest, err): + super(TAPTestResult, self).addSubTest(test, subtest, err) + if err is not None: + diagnostics = formatter.format_exception(err) + self.tracker.add_not_ok( + self._cls_name(test), + self._description(subtest), + diagnostics=diagnostics, + ) + else: + self.tracker.add_ok(self._cls_name(test), self._description(subtest)) + def stopTestRun(self): """Once the test run is complete, generate each of the TAP files.""" super(TAPTestResult, self).stopTestRun() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/tests/test_adapter.py new/tap.py-3.0/tap/tests/test_adapter.py --- old/tap.py-2.6.1/tap/tests/test_adapter.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/tests/test_adapter.py 2019-12-15 03:12:58.000000000 +0100 @@ -1,9 +1,6 @@ # Copyright (c) 2019, Matt Layman and contributors -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from tap.adapter import Adapter from tap.tests import TestCase diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/tests/test_loader.py new/tap.py-3.0/tap/tests/test_loader.py --- old/tap.py-2.6.1/tap/tests/test_loader.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/tests/test_loader.py 2019-12-15 02:05:47.000000000 +0100 @@ -5,11 +5,7 @@ import os import tempfile import unittest - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from tap.i18n import _ from tap.loader import Loader diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/tests/test_main.py new/tap.py-3.0/tap/tests/test_main.py --- old/tap.py-2.6.1/tap/tests/test_main.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/tests/test_main.py 2019-12-15 03:07:09.000000000 +0100 @@ -2,14 +2,10 @@ import argparse import os - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from tap.loader import Loader -from tap.main import build_suite, get_status, main, parse_args +from tap.main import build_suite, get_status, main, main_module, parse_args from tap.tests import TestCase @@ -57,3 +53,11 @@ parse_args(argv) self.assertTrue(print_help.called) self.assertTrue(sys_exit.called) + + +class TestMainModule(TestCase): + @mock.patch("tap.main.unittest") + def test_main_set_to_stream(self, mock_unittest): + main_module() + + mock_unittest.main.called diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/tests/test_parser.py new/tap.py-3.0/tap/tests/test_parser.py --- old/tap.py-2.6.1/tap/tests/test_parser.py 2019-09-17 15:30:59.000000000 +0200 +++ new/tap.py-3.0/tap/tests/test_parser.py 2019-12-15 02:05:47.000000000 +0100 @@ -6,11 +6,7 @@ import sys import tempfile import unittest - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from tap.parser import Parser diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/tests/test_result.py new/tap.py-3.0/tap/tests/test_result.py --- old/tap.py-2.6.1/tap/tests/test_result.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/tests/test_result.py 2019-12-15 01:47:48.000000000 +0100 @@ -1,7 +1,9 @@ # Copyright (c) 2019, Matt Layman and contributors +import contextlib import os import unittest +import unittest.case from tap.i18n import _ from tap.runner import TAPTestResult @@ -13,6 +15,14 @@ def runTest(self): pass + @contextlib.contextmanager + def subTest(self, *args, **kwargs): + try: + self._subtest = unittest.case._SubTest(self, object(), {}) + yield + finally: + self._subtest = None + def __call__(self, result): pass @@ -70,3 +80,25 @@ self.assertEqual( line.directive.text, "TODO {}".format(_("(unexpected success)")) ) + + def test_adds_subtest_success(self): + """Test that the runner handles subtest success results.""" + result = self._make_one() + test = FakeTestCase() + with test.subTest(): + result.addSubTest(test, test._subtest, None) + line = result.tracker._test_cases["FakeTestCase"][0] + self.assertTrue(line.ok) + + def test_adds_subtest_failure(self): + """Test that the runner handles subtest failure results.""" + result = self._make_one() + # Python 3 does some extra testing in unittest on exceptions so fake + # the cause as if it were raised. + ex = Exception() + ex.__cause__ = None + test = FakeTestCase() + with test.subTest(): + result.addSubTest(test, test._subtest, (ex.__class__, ex, None)) + line = result.tracker._test_cases["FakeTestCase"][0] + self.assertFalse(line.ok) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/tests/test_runner.py new/tap.py-3.0/tap/tests/test_runner.py --- old/tap.py-2.6.1/tap/tests/test_runner.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/tests/test_runner.py 2019-12-15 02:05:47.000000000 +0100 @@ -4,11 +4,7 @@ import sys import tempfile import unittest - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from tap import TAPTestRunner from tap.runner import TAPTestResult, _tracker diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/tests/test_tracker.py new/tap.py-3.0/tap/tests/test_tracker.py --- old/tap.py-2.6.1/tap/tests/test_tracker.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/tests/test_tracker.py 2020-01-10 16:08:52.000000000 +0100 @@ -1,18 +1,10 @@ # Copyright (c) 2019, Matt Layman and contributors import inspect +from io import StringIO import os import tempfile - -try: - from cStringIO import StringIO -except ImportError: - from io import StringIO - -try: - from unittest import mock -except ImportError: - import mock +from unittest import mock from tap.i18n import _ from tap.tests import TestCase @@ -233,11 +225,21 @@ @mock.patch("tap.tracker.ENABLE_VERSION_13", False) def test_write_plan_first_streaming(self): + outdir = tempfile.mkdtemp() stream = StringIO() - tracker = Tracker(streaming=True, stream=stream) + tracker = Tracker(outdir=outdir, streaming=True, stream=stream) tracker.set_plan(123) + tracker.add_ok("FakeTestCase", "YESSS!") + tracker.generate_tap_reports() - self.assertEqual(stream.getvalue(), "1..123\n") + + self.assertEqual( + stream.getvalue(), + "1..123\n{header}\nok 1 YESSS!\n".format( + header=self._make_header("FakeTestCase") + ), + ) + self.assertFalse(os.path.exists(os.path.join(outdir, "FakeTestCase.tap"))) @mock.patch("tap.tracker.ENABLE_VERSION_13", False) def test_write_plan_immediate_streaming(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap/tracker.py new/tap.py-3.0/tap/tracker.py --- old/tap.py-2.6.1/tap/tracker.py 2019-09-17 02:58:18.000000000 +0200 +++ new/tap.py-3.0/tap/tracker.py 2019-12-10 03:01:09.000000000 +0100 @@ -1,9 +1,6 @@ # Copyright (c) 2019, Matt Layman and contributors -from __future__ import print_function import os -import string -import sys from tap.directive import Directive from tap.i18n import _ @@ -52,11 +49,7 @@ # Internal state for tracking each test case. self._test_cases = {} - # Python versions 2 and 3 keep maketrans in different locations. - if sys.version_info[0] < 3: - self._sanitized_table = string.maketrans(" \\/\n", "----") - else: # pragma: no cover - self._sanitized_table = str.maketrans(" \\/\n", "----") + self._sanitized_table = str.maketrans(" \\/\n", "----") if self.streaming: self._write_tap_version(self.stream) @@ -152,11 +145,12 @@ The results are either combined into a single output file or the output file name is generated from the test case. """ - # We're streaming but set_plan wasn't called, so we can only - # know the plan now (at the end). - if self.streaming and not self._plan_written: - print("1..{0}".format(self.combined_line_number), file=self.stream) - self._plan_written = True + if self.streaming: + # We're streaming but set_plan wasn't called, so we can only + # know the plan now (at the end). + if not self._plan_written: + print("1..{0}".format(self.combined_line_number), file=self.stream) + self._plan_written = True return if self.combined: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap.py.egg-info/PKG-INFO new/tap.py-3.0/tap.py.egg-info/PKG-INFO --- old/tap.py-2.6.1/tap.py.egg-info/PKG-INFO 2019-09-17 15:36:47.000000000 +0200 +++ new/tap.py-3.0/tap.py.egg-info/PKG-INFO 2020-01-10 16:12:24.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: tap.py -Version: 2.6.1 +Version: 3.0 Summary: Test Anything Protocol (TAP) tools Home-page: https://github.com/python-tap/tappy Author: Matt Layman @@ -19,6 +19,20 @@ Releases ======== + Version 3.0, Released January 10, 2020 + -------------------------------------- + + * Drop support for Python 2 (it is end-of-life). + * Add support for subtests. + * Run a test suite with ``python -m tap``. + * Discontinue use of Pipenv for managing development. + + Version 2.6.2, Released October 20, 2019 + ---------------------------------------- + + * Fix bug in streaming mode that would generate tap files + when the plan was already set (affected pytest). + Version 2.6.1, Released September 17, 2019 ------------------------------------------ @@ -185,7 +199,6 @@ Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap.py.egg-info/SOURCES.txt new/tap.py-3.0/tap.py.egg-info/SOURCES.txt --- old/tap.py-2.6.1/tap.py.egg-info/SOURCES.txt 2019-09-17 15:36:47.000000000 +0200 +++ new/tap.py-3.0/tap.py.egg-info/SOURCES.txt 2020-01-10 16:12:24.000000000 +0100 @@ -1,8 +1,6 @@ AUTHORS LICENSE MANIFEST.in -Pipfile -Pipfile.lock README.md setup.cfg setup.py @@ -23,6 +21,7 @@ docs/images/stream.gif docs/images/tap.png tap/__init__.py +tap/__main__.py tap/adapter.py tap/directive.py tap/formatter.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tap.py-2.6.1/tap.py.egg-info/requires.txt new/tap.py-3.0/tap.py.egg-info/requires.txt --- old/tap.py-2.6.1/tap.py.egg-info/requires.txt 2019-09-17 15:36:47.000000000 +0200 +++ new/tap.py-3.0/tap.py.egg-info/requires.txt 2020-01-10 16:12:24.000000000 +0100 @@ -1,4 +1,4 @@ [yaml] more-itertools -PyYAML +PyYAML>=5.1