From a6d02fb6c25ecba63f78488d52b7eb8c1ced0406 Mon Sep 17 00:00:00 2001 From: Shivanand Tendulker Date: Fri, 26 Jun 2020 04:11:33 -0400 Subject: [PATCH] Adds py3 to tox environment Adds py3 and removes py27 from tox environment Fixes testcases that were failing for py38 environment. Depends-on: https://review.opendev.org/#/c/738168/ Change-Id: I1a5f88c06808449e906d9b8ad43d690136737800 --- .zuul.yaml | 5 ++--- proliantutils/tests/ilo/test_ribcl.py | 26 ++++++++++++++++++-------- setup.cfg | 8 ++++---- test-requirements.txt | 1 + tox.ini | 17 ++++++++++++----- 5 files changed, 37 insertions(+), 20 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index f42aa593..1382d5e8 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -1,5 +1,4 @@ - project: templates: - - openstack-python-jobs - - openstack-python36-jobs - - openstack-python37-jobs + - openstack-python3-victoria-jobs + - openstack-cover-jobs diff --git a/proliantutils/tests/ilo/test_ribcl.py b/proliantutils/tests/ilo/test_ribcl.py index 386166ed..651d5c83 100644 --- a/proliantutils/tests/ilo/test_ribcl.py +++ b/proliantutils/tests/ilo/test_ribcl.py @@ -19,6 +19,7 @@ import json import re import unittest import xml.etree.ElementTree as ET +import xmltodict import ddt import mock @@ -102,6 +103,7 @@ class IloRibclTestCase(unittest.TestCase): self.ilo = ribcl.RIBCLOperations("x.x.x.x", "admin", "Admin", 60, 443) self.ilo.init_model_based_tags('ProLiant DL580 Gen8') + self.maxDiff = None def test_init_model_based_tags_gen7(self): self.ilo.init_model_based_tags('Proliant DL380 G7') @@ -828,15 +830,19 @@ class IloRibclTestCase(unittest.TestCase): upload_file_to_mock.assert_called_once_with( (self.ilo.host, self.ilo.port), self.ilo.timeout) - root_xml_string = constants.UPDATE_ILO_FIRMWARE_INPUT_XML % ( + ref_root_xml_string = constants.UPDATE_ILO_FIRMWARE_INPUT_XML % ( self.ilo.password, self.ilo.login, 12345, 'raw_fw_file.bin') - root_xml_string = re.sub(r"\n\s*", '', root_xml_string) + ref_root_xml_string = re.sub(r"\n\s*", '', ref_root_xml_string) + ref_dict = xmltodict.parse(ref_root_xml_string) + ref_string = json.dumps(ref_dict, sort_keys=True) ((ribcl_obj, xml_elem), the_ext_header_dict) = ( _request_ilo_mock.call_args) - self.assertEqual(root_xml_string, - ET.tostring(xml_elem).decode('latin-1')) + actual_dict = xmltodict.parse(ET.tostring(xml_elem).decode('latin-1')) + actual_string = json.dumps(actual_dict, sort_keys=True) + self.assertEqual(ref_string, actual_string) + self.assertDictEqual(the_ext_header_dict['extra_headers'], {'Cookie': 'hickory-dickory-dock'}) @@ -862,15 +868,19 @@ class IloRibclTestCase(unittest.TestCase): upload_file_to_mock.assert_called_once_with( (self.ilo.host, self.ilo.port), self.ilo.timeout) - root_xml_string = constants.UPDATE_NONILO_FIRMWARE_INPUT_XML % ( + ref_root_xml_string = constants.UPDATE_NONILO_FIRMWARE_INPUT_XML % ( self.ilo.password, self.ilo.login, 12345, 'raw_fw_file.bin') - root_xml_string = re.sub(r"\n\s*", '', root_xml_string) + ref_root_xml_string = re.sub(r"\n\s*", '', ref_root_xml_string) + ref_dict = xmltodict.parse(ref_root_xml_string) + ref_string = json.dumps(ref_dict, sort_keys=True) ((ribcl_obj, xml_elem), the_ext_header_dict) = ( _request_ilo_mock.call_args) - self.assertEqual(root_xml_string, - ET.tostring(xml_elem).decode('latin-1')) + actual_dict = xmltodict.parse(ET.tostring(xml_elem).decode('latin-1')) + actual_string = json.dumps(actual_dict, sort_keys=True) + self.assertEqual(ref_string, actual_string) + self.assertDictEqual(the_ext_header_dict['extra_headers'], {'Cookie': 'hickory-dickory-dock'}) diff --git a/setup.cfg b/setup.cfg index 39df20a5..3ccd5a94 100644 --- a/setup.cfg +++ b/setup.cfg @@ -6,7 +6,8 @@ description-file = license = Apache License, Version 2.0 author = Hewlett Packard Enterprise author-email = proliantutils@gmail.com -home-page = https://github.com/openstack/proliantutils +home-page = https://opendev.org/x/proliantutils +python-requires = >=3.6 classifier = Development Status :: 4 - Beta Environment :: Console @@ -16,12 +17,11 @@ classifier = License :: OSI Approved :: Apache Software License Operating System :: OS Independent Programming Language :: Python - Programming Language :: Python :: 2 - Programming Language :: Python :: 2.7 Programming Language :: Python :: 3 - Programming Language :: Python :: 3.5 + Programming Language :: Python :: 3 :: Only Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 [files] packages = diff --git a/test-requirements.txt b/test-requirements.txt index e9681017..a0902270 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -3,3 +3,4 @@ coverage>=3.6 # Apache-2.0 stestr!=2.3.0 # Apache-2.0 testtools>=1.4.0 # MIT ddt +xmltodict diff --git a/tox.ini b/tox.ini index 516bb4f1..57ac91cb 100644 --- a/tox.ini +++ b/tox.ini @@ -1,18 +1,25 @@ [tox] -envlist = py35,py34,py27,pep8 +minversion = 3.1.0 +skipsdist = True +envlist = py3,pep8 +ignore_basepython_conflict=true [testenv] basepython = python3 usedevelop = True -install_command = pip install -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} {opts} {packages} setenv = VIRTUAL_ENV={envdir} PYTHONDONTWRITEBYTECODE = 1 + LANGUAGE=en_US LC_ALL=en_US.UTF-8 + PYTHONWARNINGS=default::DeprecationWarning TESTS_DIR=./proliantutils/tests/ deps = - -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt -commands = stestr run {posargs} + -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt +commands = + stestr run {posargs} +passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY [testenv:pep8] deps =