From 828f1e7181a5564d7fc93d49103d13f1f2049101 Mon Sep 17 00:00:00 2001 From: "d.kovalenko" Date: Mon, 2 Feb 2026 14:03:29 +0300 Subject: [PATCH] OsOperations::get_platform(self) is added This new method returns value that equal to sys.platform - "win32", "linux", ... Tests are added. Testgres (by fact) supports "linux" only. --- src/local_ops.py | 4 ++++ src/os_ops.py | 3 +++ src/remote_ops.py | 7 +++++-- tests/test_os_ops_common.py | 14 ++++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/local_ops.py b/src/local_ops.py index 3aba4e8..52b77d9 100644 --- a/src/local_ops.py +++ b/src/local_ops.py @@ -3,6 +3,7 @@ import getpass import logging import os +import sys import shutil import stat import subprocess @@ -75,6 +76,9 @@ def get_single_instance() -> OsOperations: assert type(__class__.sm_single_instance) == __class__ # noqa: E721 return __class__.sm_single_instance + def get_platform(self) -> str: + return str(sys.platform) + def create_clone(self) -> LocalOperations: clone = __class__(__class__.sm_dummy_conn_params) clone.conn_params = copy.copy(self.conn_params) diff --git a/src/os_ops.py b/src/os_ops.py index da4ff83..3c9cae4 100644 --- a/src/os_ops.py +++ b/src/os_ops.py @@ -23,6 +23,9 @@ class OsOperations: def __init__(self): pass + def get_platform(self) -> str: + raise NotImplementedError() + def create_clone(self) -> OsOperations: raise NotImplementedError() diff --git a/src/remote_ops.py b/src/remote_ops.py index 4aa7b94..465ac6b 100644 --- a/src/remote_ops.py +++ b/src/remote_ops.py @@ -3,7 +3,7 @@ import getpass import os import posixpath -import platform +import sys import subprocess import tempfile import io @@ -59,7 +59,7 @@ class RemoteOperations(OsOperations): ssh_dest: str def __init__(self, conn_params: ConnectionParams): - if not platform.system().lower() == "linux": + if sys.platform != "linux": raise EnvironmentError("Remote operations are supported only on Linux!") if conn_params is None: @@ -86,6 +86,9 @@ def __init__(self, conn_params: ConnectionParams): def __enter__(self): return self + def get_platform(self) -> str: + return "linux" + def create_clone(self) -> RemoteOperations: clone = __class__(__class__.sm_dummy_conn_params) clone.conn_params = copy.copy(self.conn_params) diff --git a/tests/test_os_ops_common.py b/tests/test_os_ops_common.py index dbcf100..aab017c 100644 --- a/tests/test_os_ops_common.py +++ b/tests/test_os_ops_common.py @@ -42,6 +42,20 @@ def os_ops(self, request: pytest.FixtureRequest) -> OsOperations: assert isinstance(request.param, OsOperations) return request.param + def test_get_platform(self, os_ops: OsOperations): + assert isinstance(os_ops, OsOperations) + p = os_ops.get_platform() + assert p is not None + assert type(p) == str # noqa: E721 + assert p == sys.platform + + def test_get_platform__is_known(self, os_ops: OsOperations): + assert isinstance(os_ops, OsOperations) + p = os_ops.get_platform() + assert p is not None + assert type(p) == str # noqa: E721 + assert p in {"win32", "linux"} + def test_create_clone(self, os_ops: OsOperations): assert isinstance(os_ops, OsOperations) clone = os_ops.create_clone()