From f052b4028e55118aecec13be4564708346cd5e5e Mon Sep 17 00:00:00 2001 From: larsevj Date: Tue, 12 Mar 2024 10:35:09 +0100 Subject: [PATCH] Make tests compatible with rhel8 --- .github/workflows/style.yml | 2 +- .github/workflows/testing.yml | 4 ++-- komodoenv/__main__.py | 17 ++++++------- komodoenv/creator.py | 13 +++++----- komodoenv/update.py | 13 +++++----- tests/conftest.py | 12 +++++++--- tests/test_integration.py | 4 +++- tests/test_main.py | 45 ++++++++++++++++++++--------------- tests/test_update.py | 11 +++++---- 9 files changed, 70 insertions(+), 51 deletions(-) diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index 38be837..4693ff3 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.11 - name: Install dependencies diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 2182706..d91ea00 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -13,11 +13,11 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: python-version: "${{ matrix.python-version }}" - name: Install Ubuntu Packages diff --git a/komodoenv/__main__.py b/komodoenv/__main__.py index 44385c6..a8689fc 100644 --- a/komodoenv/__main__.py +++ b/komodoenv/__main__.py @@ -1,17 +1,18 @@ -from __future__ import print_function -import os -import sys -import re import argparse import logging -import distro +import os +import re import subprocess -from typing import Tuple -from shutil import rmtree +import sys from pathlib import Path +from shutil import rmtree +from typing import Tuple + +import distro +from colors import blue, strip_color, yellow + from komodoenv.creator import Creator from komodoenv.statfs import is_nfs -from colors import blue, yellow, strip_color def get_release_maturity_text(release_path): diff --git a/komodoenv/creator.py b/komodoenv/creator.py index f0761d0..e02eadb 100644 --- a/komodoenv/creator.py +++ b/komodoenv/creator.py @@ -1,13 +1,14 @@ -from pathlib import Path -import subprocess import os -import distro +import subprocess +from importlib.metadata import distribution +from pathlib import Path from textwrap import dedent + +import distro from colors import green, strip_color -from pkg_resources import get_distribution -from komodoenv.python import Python from komodoenv.bundle import get_bundled_wheel +from komodoenv.python import Python class _OpenChmod: @@ -120,7 +121,7 @@ def create(self): tracked-release = {self.trackpath.name} mtime-release = 0 python-version = {self.srcpy.version_info[0]}.{self.srcpy.version_info[1]} - komodoenv-version = {get_distribution('komodoenv').version} + komodoenv-version = {distribution('komodoenv').version} komodo-root = {self.komodo_root} linux-dist = {distro.id() + distro.version_parts()[0]} """ diff --git a/komodoenv/update.py b/komodoenv/update.py index f32d896..5f13c87 100644 --- a/komodoenv/update.py +++ b/komodoenv/update.py @@ -7,28 +7,29 @@ to avoid any dependency on komodo during the update. """ import os +import platform import re -import sys import shutil -import platform -from typing import List +import sys from argparse import ArgumentParser from textwrap import dedent +from typing import List try: - from distro import id as distro_id, version_parts as distro_versions + from distro import id as distro_id + from distro import version_parts as distro_versions except ImportError: # The 'distro' package isn't installed. # def distro_id(): return "rhel" - if "el7" in platform.platform(): + if "el7" in platform.release(): def distro_versions(): return ("7", "0", "0") - elif "el8" in platform.platform(): + elif "el8" in platform.release(): def distro_versions(): return ("8", "0", "0") diff --git a/tests/conftest.py b/tests/conftest.py index 70aa67f..5258ba0 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,9 +1,15 @@ import os +import platform import re -import pytest -from typing import List, Optional from pathlib import Path from subprocess import check_output +from typing import List, Optional + +import pytest + + +def rhel_version(): + return "8" if "el8" in platform.release() else "7" @pytest.fixture(scope="session") @@ -39,7 +45,7 @@ def komodo_root(tmp_path_factory, python38_path): _install(python38_path, path / "2030.01.01-py38", ["numpy==1.19.1"]) _install(python38_path, path / "2030.02.00-py38") _install(python38_path, path / "2030.03.00-py38-rhel9") - _install(python38_path, path / "bleeding-py38-rhel7") + _install(python38_path, path / f"bleeding-py38-rhel{rhel_version()}") for chain in ( ("2030.01", "2030.01-py3", "2030.01-py38", "2030.01.00-py38"), diff --git a/tests/test_integration.py b/tests/test_integration.py index d1fc19a..c7e856f 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1,6 +1,8 @@ import sys +from subprocess import PIPE, CalledProcessError, Popen, check_output + import pytest -from subprocess import Popen, PIPE, check_output, CalledProcessError + from komodoenv.__main__ import main as _main diff --git a/tests/test_main.py b/tests/test_main.py index cdbb37a..4bb7e7d 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,21 +1,26 @@ import pytest + import komodoenv.__main__ as main +from tests.conftest import rhel_version -@pytest.mark.parametrize( - "expect,track_name,name", - [ - # Bleeding is py38, rhel7 - ("bleeding-py38-rhel7", "bleeding-py38", "bleeding"), - ("bleeding-py38-rhel7", "bleeding-py38", "bleeding-py3"), - ("bleeding-py38-rhel7", "bleeding-py38", "bleeding-py38"), - # Stable is py38, unspecified rhel +def generate_test_params_simple(rhel_version): + base_params = [ ("2030.01.00-py38", "stable-py38", "stable"), ("2030.01.00-py38", "stable-py38", "stable-py3"), ("2030.01.00-py38", "stable-py38", "stable-py38"), ("2030.01.00-py38", "stable-py38", "2030.01"), ("2030.01.00-py38", "stable-py38", "2030.01.00-py38"), - ], + (f"bleeding-py38-rhel{rhel_version}", "bleeding-py38", "bleeding"), + (f"bleeding-py38-rhel{rhel_version}", "bleeding-py38", "bleeding-py3"), + (f"bleeding-py38-rhel{rhel_version}", "bleeding-py38", "bleeding-py38"), + ] + return base_params + + +@pytest.mark.parametrize( + "expect, track_name,name", + generate_test_params_simple(rhel_version()), ) def test_resolve_simple(komodo_root, track_name, name, expect): release, tracked = main.resolve_release(komodo_root, name) @@ -55,22 +60,24 @@ def test_resolve_fail_singular(komodo_root): assert "--no-update" in str(exc.value) -@pytest.mark.parametrize( - "expect,name", - [ - # Bleeding is py38, rhel7 - ("bleeding-py38-rhel7", "bleeding"), - ("bleeding-py38-rhel7", "bleeding-py3"), - ("bleeding-py38-rhel7", "bleeding-py38"), - # Stable is py38, unspecified rhel +def generate_test_params_no_update(rhel_version): + base_params = [ ("2030.01.00-py38", "stable"), ("2030.01.00-py38", "stable-py3"), ("2030.01.00-py38", "stable-py38"), ("2030.01.00-py38", "2030.01"), ("2030.01.00-py38", "2030.01.00-py38"), - # Singular release ("2030.01.01-py38", "2030.01.01-py38"), - ], + (f"bleeding-py38-rhel{rhel_version}", "bleeding"), + (f"bleeding-py38-rhel{rhel_version}", "bleeding-py3"), + (f"bleeding-py38-rhel{rhel_version}", "bleeding-py38"), + ] + return base_params + + +@pytest.mark.parametrize( + "expect, name", + generate_test_params_no_update(rhel_version()), ) def test_resolve_no_update(komodo_root, expect, name): release, tracked = main.resolve_release(komodo_root, name, no_update=True) diff --git a/tests/test_update.py b/tests/test_update.py index 2479f5f..2811b24 100644 --- a/tests/test_update.py +++ b/tests/test_update.py @@ -1,9 +1,10 @@ -from komodoenv import update -from textwrap import dedent -from pkg_resources import get_distribution -import time import os import sys +import time +from importlib.metadata import distribution +from textwrap import dedent + +from komodoenv import update def test_rewrite_executable_python(): @@ -152,7 +153,7 @@ def test_get_pkg_version_exists(): "pip", ) - assert ver == get_distribution("pip").version + assert ver == distribution("pip").version def test_get_pkg_version_none():