diff --git a/setup.py b/setup.py index dabce13..c657ec9 100755 --- a/setup.py +++ b/setup.py @@ -1,8 +1,23 @@ #!/usr/bin/env python # vim: set sw=4 et: +from setuptools.command.test import test as TestCommand +import sys import setuptools +# special class needs to be added to support the pytest written dump-anydbm tests +class PyTest(TestCommand): + def finalize_options(self): + TestCommand.finalize_options(self) + self.test_args = [] + self.test_suite = True + def run_tests(self): + #import here, cause outside the eggs aren't loaded + import pytest + errno = pytest.main(self.test_args) + sys.exit(errno) + + setuptools.setup(name='warcprox', version='1.1', description='WARC writing MITM HTTP/S proxy', @@ -14,7 +29,8 @@ setuptools.setup(name='warcprox', packages=['warcprox'], install_requires=['pyopenssl', 'warctools>=4.8.3'], # gdbm not in pip :( dependency_links=['git+https://github.com/internetarchive/warctools.git#egg=warctools-4.8.3'], - tests_require=['requests>=2.0.1'], # >=2.0.1 for https://github.com/kennethreitz/requests/pull/1636 + tests_require=['requests>=2.0.1', 'pytest'], # >=2.0.1 for https://github.com/kennethreitz/requests/pull/1636 + cmdclass = {'test': PyTest}, test_suite='warcprox.tests', scripts=['bin/dump-anydbm', 'bin/warcprox'], zip_safe=False, diff --git a/warcprox/tests/test_dump-anydbm.py b/warcprox/tests/test_dump-anydbm.py index 1fddefc..7c973a6 100644 --- a/warcprox/tests/test_dump-anydbm.py +++ b/warcprox/tests/test_dump-anydbm.py @@ -4,6 +4,7 @@ import pytest import os import tempfile import subprocess # to access the script from shell +import sys # will try as python 3 then default to python 2 modules try: @@ -34,8 +35,9 @@ key1 = 'very first key' key2 = 'second key' val1 = 'very first value' val2 = 'second value' -dump_anydbm = "dump-anydbm" +py = sys.executable +dump_anydbm_loc = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "bin/dump-anydbm") @pytest.fixture(scope="function") def gdbm_test_db(request): @@ -94,8 +96,11 @@ def dumbdbm_test_db(request): def test_dumpanydbm_identify_gdbm(gdbm_test_db): print("running test_dumpanydbm_identify_gdbm") - output = subprocess.check_output([dump_anydbm, gdbm_test_db]) - print(b"script printout: \n" + output) + output = subprocess.check_output([py, dump_anydbm_loc, gdbm_test_db]) + print(b"script printout: ") + print(output) + print(b"check_one: ") + print(gdbm_test_db.encode(encoding='UTF-8') + b' is a ' + gdbm_type + b' db\nvery first key:very first value\nsecond key:second value\n') assert (output == gdbm_test_db.encode(encoding='UTF-8') + b' is a ' + gdbm_type + b' db\nvery first key:very first value\nsecond key:second value\n' or output == gdbm_test_db.encode(encoding='UTF-8') + b' is a ' + gdbm_type + b' db\nsecond key:second value\nvery first key:very first value\n') @@ -103,8 +108,11 @@ def test_dumpanydbm_identify_gdbm(gdbm_test_db): def test_dumpanydbm_identify_ndbm(ndbm_test_db): print("running test_dumpanydbm_identify_ndbm") - output = subprocess.check_output([dump_anydbm, ndbm_test_db]) - print(b"script printout: \n" + output) + output = subprocess.check_output([py, dump_anydbm_loc, ndbm_test_db]) + print(b"script printout: ") + print(output) + print(b"check_one: ") + print(ndbm_test_db.encode(encoding='UTF-8') + b' is a ' + ndbm_type + b' db\nvery first key:very first value\nsecond key:second value\n') assert (output == ndbm_test_db.encode(encoding='UTF-8') + b' is a ' + ndbm_type + b' db\nvery first key:very first value\nsecond key:second value\n' or output == ndbm_test_db.encode(encoding='UTF-8') + b' is a ' + ndbm_type + b' db\nsecond key:second value\nvery first key:very first value\n') @@ -112,8 +120,12 @@ def test_dumpanydbm_identify_ndbm(ndbm_test_db): def test_dumpanydbm_identify_dumbdbm(dumbdbm_test_db): print("running test_dumpanydbm_identify_dumbdbm") - output = subprocess.check_output([dump_anydbm, dumbdbm_test_db]) - print(b"script printout: \n" + output) + + output = subprocess.check_output([py, dump_anydbm_loc, dumbdbm_test_db]) + print(b"script printout: ") + print(output) + print(b"check_one: ") + print(dumbdbm_test_db.encode(encoding='UTF-8') + b' is a ' + dumb_type + b' db\nvery first key:very first value\nsecond key:second value\n') assert (output == dumbdbm_test_db.encode(encoding='UTF-8') + b' is a ' + dumb_type + b' db\nvery first key:very first value\nsecond key:second value\n' or output == dumbdbm_test_db.encode(encoding='UTF-8') + b' is a ' + dumb_type + b' db\nsecond key:second value\nvery first key:very first value\n')