-
Notifications
You must be signed in to change notification settings - Fork 460
/
test_python.py
95 lines (75 loc) · 2.31 KB
/
test_python.py
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env python
# encoding: utf-8
import os
import subprocess
import pytest
def test_01_python_interpreter_exists(site):
assert os.path.exists(site.root + "/bin/python")
def test_02_python_interpreter_path(site):
p = site.execute(["which", "python"], stdout=subprocess.PIPE)
path = p.stdout.read().strip()
assert path == "/omd/sites/%s/bin/python" % site.id
def test_03_python_interpreter_version(site):
p = site.execute(["python", "-V"], stderr=subprocess.PIPE)
version = p.stderr.read()
assert version.startswith("Python 2.7.17")
def test_03_python_path(site):
p = site.execute(["python", "-c", "import sys ; print(sys.path)"], stdout=subprocess.PIPE)
sys_path = eval(p.stdout.read())
assert sys_path[0] == ""
assert site.root + "/local/lib/python" in sys_path
assert site.root + "/lib/python" in sys_path
assert site.root + "/lib/python2.7" in sys_path
for p in sys_path:
if p != "" and not p.startswith(site.root):
raise Exception("Found non site path %s in sys.path" % p)
def test_01_pip_exists(site):
assert os.path.exists(site.root + "/bin/pip")
def test_02_pip_path(site):
p = site.execute(["which", "pip"], stdout=subprocess.PIPE)
path = p.stdout.read().strip()
assert path == "/omd/sites/%s/bin/pip" % site.id
def test_03_pip_interpreter_version(site):
p = site.execute(["pip", "-V"], stdout=subprocess.PIPE)
version = p.stdout.read()
assert version.startswith("pip 19.2.3")
# TODO: Improve this test to automatically adapt the expected modules from our Pipfile
@pytest.mark.parametrize("module_name", [
"netsnmp",
"pysphere",
"ldap",
"OpenSSL",
"cryptography",
"pysmi",
"pysnmp",
"pymssql",
"ldap",
"MySQLdb",
"psycopg2",
"dicttoxml",
"enum",
"PIL",
"reportlab",
"PyPDF2",
"psutil",
"ipaddress",
"netifaces",
"requests",
"paramiko",
"pyghmi",
"typing",
"pathlib2",
"dateutil",
"snap7",
"rrdtool",
"werkzeug",
"boto3",
"kubernetes",
])
def test_python_modules(site, module_name):
import importlib
module = importlib.import_module(module_name)
assert module.__file__.startswith(site.root)
def test_python_preferred_encoding():
import locale
assert locale.getpreferredencoding() == "UTF-8"