aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsteven stark <steven.stark@att.com>2019-07-24 19:06:47 +0000
committerGerrit Code Review <gerrit@onap.org>2019-07-24 19:06:47 +0000
commit107d6b6a59ba8bc012f35a073e609b53b2ce05e7 (patch)
treeed625a9efe12e7e048947656dafc3314a2e8c3c8
parent1f02c5a5f2bbddfa375e44bc1d93e435d501f4ee (diff)
parentf6e9ca272583650752cf22915ba34a745d206113 (diff)
Merge "[VVP] Tox support for installing Win pre-built libraries"
-rw-r--r--install_win_deps.py96
-rw-r--r--tox.ini13
2 files changed, 105 insertions, 4 deletions
diff --git a/install_win_deps.py b/install_win_deps.py
new file mode 100644
index 0000000..01e9503
--- /dev/null
+++ b/install_win_deps.py
@@ -0,0 +1,96 @@
+# ============LICENSE_START====================================================
+# org.onap.vvp/validation-scripts
+# ===================================================================
+# Copyright © 2019 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the "License");
+# you may not use this software except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ============LICENSE_END============================================
+#
+import os
+import platform
+import subprocess #nosec
+import sys
+import tempfile
+from urllib import request
+
+PREBUILT_DOWNLOAD_SITE = "https://download.lfd.uci.edu/pythonlibs/n5jyqt7p/"
+PREBUILT_WIN_LIBS = [
+ "yappi-1.0-cp{python_version}-cp{python_version}m-{arch}.whl",
+ "setproctitle-1.1.10-cp{python_version}-cp{python_version}m-{arch}.whl"
+]
+
+
+def is_windows():
+ return os.name == 'nt'
+
+
+def python_version():
+ return sys.version[:3].replace(".", "")
+
+
+def system_architecture():
+ arch = platform.architecture()
+ return "win32" if arch[0] != "64bit" else "win_amd64"
+
+
+def download_url(url):
+ resp = request.urlopen(url) #nosec
+ return resp.read()
+
+
+def read_file(path):
+ with open(path, "r") as f:
+ return f.read()
+
+
+def write_file(data, path, mode="w"):
+ with open(path, mode) as f:
+ f.write(data)
+
+
+def install_prebuilt_binaries_on_windows():
+ if not is_windows():
+ return
+ temp_dir = tempfile.mkdtemp()
+ for lib in PREBUILT_WIN_LIBS:
+ filename = lib.format(python_version=python_version(),
+ arch=system_architecture())
+ url = PREBUILT_DOWNLOAD_SITE + filename
+ print(f"Downloading {url}")
+ contents = download_url(url)
+ file_path = os.path.join(temp_dir, filename)
+ write_file(contents, file_path, mode="wb")
+ print("Download complete. Installing dependency.")
+ subprocess.call(["pip", "install", file_path]) #nosec
+
+
+if __name__ == "__main__":
+ install_prebuilt_binaries_on_windows()
diff --git a/tox.ini b/tox.ini
index 84e1b14..8bbf1fc 100644
--- a/tox.ini
+++ b/tox.ini
@@ -42,22 +42,27 @@ skipsdist=True
envlist = py36
[testenv]
+whitelist_externals =
+ install_win_deps.py
+passenv =
+ http_proxy
+ https_proxy
distribute = False
commands =
- {envpython} --version
+ python install_win_deps.py
+ pip install -r requirements.txt
+ {envpython} --version
pytest --version
coverage run --module pytest ice_validator/tests --self-test -rxXs
coverage xml
flake8 --version
flake8 ice_validator
bandit -c bandit.yaml -r . -x ./.tox/**,./venv-tox/**
-deps = --no-use-pep517
- -rrequirements.txt
+deps = --no-use-pep517
flake8
coverage
bandit
-
[flake8]
ignore = W391, W503, E501
max-line-length = 88