diff --git a/tox.ini b/tox.ini index 97efae2..9cf3343 100644 --- a/tox.ini +++ b/tox.ini @@ -18,9 +18,9 @@ skip_missing_interpreters = False # * It is necessary to declare setuptools as a dependency otherwise tox will # fail very early at not being able to load it. The version pinning is in # line with `pip.sh`. -requires = pip < 20.3 - virtualenv < 20.0 - setuptools < 50.0.0 +requires = pip + virtualenv + setuptools # NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci minversion = 3.2.0 @@ -35,8 +35,13 @@ allowlist_externals = git bash charmcraft - rename.sh -passenv = HOME TERM CS_* OS_* TEST_* + {toxinidir}/rename.sh +passenv = + HOME + TERM + CS_* + OS_* + TEST_* deps = -r{toxinidir}/test-requirements.txt [testenv:py35] @@ -46,46 +51,60 @@ commands = /bin/true [testenv:py36] basepython = python3.6 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt [testenv:py37] basepython = python3.7 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt [testenv:py38] basepython = python3.8 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt [testenv:py39] basepython = python3.9 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt [testenv:py310] basepython = python3.10 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + +[testenv:py311] +basepython = python3.11 +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt [testenv:py3] basepython = python3 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt [testenv:pep8] basepython = python3 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt commands = flake8 {posargs} src unit_tests tests [testenv:cover] # Technique based heavily upon # https://github.com/openstack/nova/blob/master/tox.ini basepython = python3 -deps = -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt setenv = {[testenv]setenv} PYTHON=coverage run @@ -124,6 +143,7 @@ commands = charmcraft clean charmcraft -v pack {toxinidir}/rename.sh + charmcraft clean [testenv:func-noop] basepython = python3 diff --git a/unit_tests/__init__.py b/unit_tests/__init__.py index 26092e0..986ae45 100644 --- a/unit_tests/__init__.py +++ b/unit_tests/__init__.py @@ -11,3 +11,19 @@ # 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. + +# Patch out lsb_release() and get_platform() as unit tests should be fully +# insulated from the underlying platform. Unit tests assume that the system is +# ubuntu jammy. + +from unittest.mock import patch + + +patch( + 'charmhelpers.osplatform.get_platform', return_value='ubuntu' +).start() +patch( + 'charmhelpers.core.host.lsb_release', + return_value={ + 'DISTRIB_CODENAME': 'jammy' + }).start()