src/distro/distro.py | 2 ++ tests/resources/distros/altlinux10/etc/altlinux-release | 1 + tests/resources/distros/altlinux10/etc/fedora-release | 1 + tests/resources/distros/altlinux10/etc/os-release | 10 ++++++++++ tests/resources/distros/altlinux10/etc/redhat-release | 1 + tests/resources/distros/altlinux10/etc/system-release | 1 + tests/test_distro.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 65 insertions(+) diff --git a/src/distro/distro.py b/src/distro/distro.py index 89e1868..c5d38d1 100755 --- a/src/distro/distro.py +++ b/src/distro/distro.py @@ -125,6 +125,7 @@ _DISTRO_RELEASE_BASENAME_PATTERN = re.compile(r"(\w+)[-_](release|version)$") # Base file names to be looked up for if _UNIXCONFDIR is not readable. _DISTRO_RELEASE_BASENAMES = [ "SuSE-release", + "altlinux-release", "arch-release", "base-release", "centos-release", @@ -243,6 +244,7 @@ def id() -> str: "rocky" Rocky Linux "aix" AIX "guix" Guix System + "altlinux" ALT Linux ============== ========================================= If you have a need to get distros for reliable IDs added into this set, diff --git a/tests/resources/distros/altlinux10/etc/altlinux-release b/tests/resources/distros/altlinux10/etc/altlinux-release new file mode 100644 index 0000000..dc48160 --- /dev/null +++ b/tests/resources/distros/altlinux10/etc/altlinux-release @@ -0,0 +1 @@ +ALT Server 10.1 (Mendelevium) diff --git a/tests/resources/distros/altlinux10/etc/fedora-release b/tests/resources/distros/altlinux10/etc/fedora-release new file mode 120000 index 0000000..eefa5c1 --- /dev/null +++ b/tests/resources/distros/altlinux10/etc/fedora-release @@ -0,0 +1 @@ +altlinux-release \ No newline at end of file diff --git a/tests/resources/distros/altlinux10/etc/os-release b/tests/resources/distros/altlinux10/etc/os-release new file mode 100644 index 0000000..9363b09 --- /dev/null +++ b/tests/resources/distros/altlinux10/etc/os-release @@ -0,0 +1,10 @@ +NAME="ALT Server" +VERSION="10.1" +ID=altlinux +VERSION_ID=10.1 +PRETTY_NAME="ALT Server 10.1 (Mendelevium)" +ANSI_COLOR="1;33" +CPE_NAME="cpe:/o:alt:server:10.1" +BUILD_ID="ALT Server 10.1" +HOME_URL="https://basealt.ru/" +BUG_REPORT_URL="https://bugs.altlinux.org/" diff --git a/tests/resources/distros/altlinux10/etc/redhat-release b/tests/resources/distros/altlinux10/etc/redhat-release new file mode 120000 index 0000000..eefa5c1 --- /dev/null +++ b/tests/resources/distros/altlinux10/etc/redhat-release @@ -0,0 +1 @@ +altlinux-release \ No newline at end of file diff --git a/tests/resources/distros/altlinux10/etc/system-release b/tests/resources/distros/altlinux10/etc/system-release new file mode 120000 index 0000000..eefa5c1 --- /dev/null +++ b/tests/resources/distros/altlinux10/etc/system-release @@ -0,0 +1 @@ +altlinux-release \ No newline at end of file diff --git a/tests/test_distro.py b/tests/test_distro.py index 3dda970..f738cff 100644 --- a/tests/test_distro.py +++ b/tests/test_distro.py @@ -509,6 +509,19 @@ class TestOSRelease: } self._test_outcome(desired_outcome) + def test_altlinux10_os_release(self) -> None: + desired_outcome = { + "id": "altlinux", + "name": "ALT Server", + "pretty_name": "ALT Server 10.1 (Mendelevium)", + "version": "10.1", + "pretty_version": "10.1", + "best_version": "10.1", + "major_version": "10", + "minor_version": "1", + } + self._test_outcome(desired_outcome) + class TestWithRootDir(TestOSRelease): """Test that a LinuxDistribution can be created using an arbitrary root_dir @@ -1080,6 +1093,20 @@ class TestDistroRelease: } self._test_outcome(desired_outcome, "cloudlinux", "7", "redhat") + def test_altlinux10_dist_release(self) -> None: + desired_outcome = { + "id": "altlinux", + "name": "ALT Server", + "codename": "Mendelevium", + "pretty_name": "ALT Server 10.1 (Mendelevium)", + "version": "10.1", + "pretty_version": "10.1 (Mendelevium)", + "best_version": "10.1", + "major_version": "10", + "minor_version": "1", + } + self._test_outcome(desired_outcome, "altlinux", "10") + @pytest.mark.skipif(not IS_LINUX, reason="Irrelevant on non-linux") class TestOverall(DistroTestCase): @@ -1829,6 +1856,28 @@ class TestOverall(DistroTestCase): } self._test_outcome(desired_outcome) + def test_altlinux10_release(self) -> None: + desired_outcome = { + "id": "altlinux", + "name": "ALT Server", + "codename": "Mendelevium", + "pretty_name": "ALT Server 10.1 (Mendelevium)", + "version": "10.1", + "pretty_version": "10.1 (Mendelevium)", + "best_version": "10.1", + "major_version": "10", + "minor_version": "1", + } + self._test_outcome(desired_outcome) + + desired_info = { + "id": "altlinux", + "name": "ALT Server", + "version_id": "10.1", + "codename": "Mendelevium", + } + self._test_release_file_info("altlinux-release", desired_info) + def _bad_os_listdir(path: str = ".") -> NoReturn: """This function is used by TestOverallWithEtcNotReadable to simulate