forked from DevoInc/python-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_tests.py
More file actions
77 lines (62 loc) · 2.19 KB
/
run_tests.py
File metadata and controls
77 lines (62 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import os
import sys
import unittest
import argparse
from devo.common import load_env_file
from tests.sender.local_servers import SSLServer, TCPServer
failed = False
def run_test_suite():
def mark_failed():
global failed
failed = True
class _TrackingTextTestResult(unittest._TextTestResult):
def addError(self, test, err):
unittest._TextTestResult.addError(self, test, err)
mark_failed()
def addFailure(self, test, err):
unittest._TextTestResult.addFailure(self, test, err)
mark_failed()
class TrackingTextTestRunner(unittest.TextTestRunner):
def _makeResult(self):
return _TrackingTextTestResult(
self.stream, self.descriptions, self.verbosity)
load_env_file(os.path.abspath(os.getcwd()) + os.sep + "environment.env")
original_cwd = os.path.abspath(os.getcwd())
os.chdir('.%stests%s' % (os.sep, os.sep))
suite = unittest.defaultTestLoader.discover('.', pattern="*.py")
runner = TrackingTextTestRunner(verbosity=2)
runner.run(suite)
os.chdir(original_cwd)
return failed
class CoverageCommand():
"""setup.py command to run code coverage of the test suite."""
def run(self):
try:
import coverage
except ImportError:
print("Could not import coverage. Please install it and try again.")
exit(1)
cov = coverage.coverage(source=['devo'])
cov.start()
run_test_suite()
cov.stop()
cov.html_report(directory='coverage_report')
class TestCommand():
def run(self):
"""setup.py command to run the whole test suite."""
failed = run_test_suite()
if failed:
sys.exit(1)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--coverage", type=bool, const=True,
default=False, nargs='?', help="Generate coverage.")
args = parser.parse_args()
local_ssl_server = SSLServer()
local_tcp_server = TCPServer()
if args.coverage:
CoverageCommand().run()
else:
TestCommand().run()
local_ssl_server.close_server()
local_tcp_server.close_server()