Support tox and request more warnings:

- make separate tests runner - tests.py; python setup.py test still works
  - tox.ini with coverage config
  - -b: issue warnings about comparing bytearray with unicode
  - export PYTHONWARNINGS=all on stage install
This commit is contained in:
Dmitri Bogomolov 2021-02-06 21:07:42 +02:00
parent 0f8528cc48
commit e77238fa07
Signed by untrusted user: g1itch
GPG Key ID: 720A756F18DEED13
6 changed files with 61 additions and 16 deletions

View File

@ -15,7 +15,8 @@ addons:
install: install:
- pip install -r requirements.txt - pip install -r requirements.txt
- python setup.py install - python setup.py install
- export PYTHONWARNINGS=all
script: script:
- python checkdeps.py - python checkdeps.py
- xvfb-run src/bitmessagemain.py -t - xvfb-run src/bitmessagemain.py -t
- python setup.py test - python -bm tests

View File

@ -1,3 +1,4 @@
coverage
python_prctl python_prctl
psutil psutil
pycrypto pycrypto

View File

@ -4,7 +4,6 @@ import os
import platform import platform
import shutil import shutil
import sys import sys
import unittest
from setuptools import setup, Extension from setuptools import setup, Extension
from setuptools.command.install import install from setuptools.command.install import install
@ -46,14 +45,6 @@ class InstallCmd(install):
return install.run(self) return install.run(self)
def unittest_discover():
"""Explicit test suite creation"""
if sys.hexversion >= 0x3000000:
from pybitmessage import pathmagic
pathmagic.setup()
return unittest.TestLoader().discover('pybitmessage.tests')
if __name__ == "__main__": if __name__ == "__main__":
here = os.path.abspath(os.path.dirname(__file__)) here = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(here, 'README.md')) as f: with open(os.path.join(here, 'README.md')) as f:
@ -125,7 +116,7 @@ if __name__ == "__main__":
#keywords='', #keywords='',
install_requires=installRequires, install_requires=installRequires,
tests_require=requirements, tests_require=requirements,
test_suite='setup.unittest_discover', test_suite='tests.unittest_discover',
extras_require=EXTRAS_REQUIRE, extras_require=EXTRAS_REQUIRE,
classifiers=[ classifiers=[
"License :: OSI Approved :: MIT License" "License :: OSI Approved :: MIT License"

View File

@ -378,11 +378,7 @@ class Main(object):
test_core_result = test_core.run() test_core_result = test_core.run()
self.stop() self.stop()
test_core.cleanup() test_core.cleanup()
sys.exit( sys.exit(not test_core_result.wasSuccessful())
'Core tests failed!'
if test_core_result.errors or test_core_result.failures
else 0
)
@staticmethod @staticmethod
def daemonize(): def daemonize():

22
tests.py Normal file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python
"""Custom tests runner script for tox and python3"""
import random # noseq
import sys
import unittest
def unittest_discover():
"""Explicit test suite creation"""
if sys.hexversion >= 0x3000000:
from pybitmessage import pathmagic
pathmagic.setup()
loader = unittest.defaultTestLoader
# randomize the order of tests in test cases
loader.sortTestMethodsUsing = lambda a, b: random.randint(-1, 1)
# pybitmessage symlink may disappear on Windows
return loader.discover('src.tests')
if __name__ == "__main__":
result = unittest.TextTestRunner(verbosity=2).run(unittest_discover())
sys.exit(not result.wasSuccessful())

34
tox.ini Normal file
View File

@ -0,0 +1,34 @@
[tox]
envlist = reset,py{27,37,38},stats
skip_missing_interpreters = true
[testenv]
setenv =
BITMESSAGE_HOME = {envtmpdir}
PYTHONWARNINGS = all
deps = -rrequirements.txt
commands =
python checkdeps.py
coverage run -a src/bitmessagemain.py -t
coverage run -a -m tests
[testenv:reset]
commands = coverage erase
[testenv:stats]
commands =
coverage report
coverage xml
[coverage:run]
source = src
omit =
*/lib*
tests.py
*/tests/*
src/version.py
*/__init__.py
src/fallback/umsgpack/*
[coverage:report]
ignore_errors = true