You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/platform_setting.py

65 lines
2.4 KiB
Python

"""
Copyright (c) Contributors to the Open 3D Engine Project
SPDX-License-Identifier: Apache-2.0 OR MIT
Class for querying and setting a system setting/preference.
"""
import pytest
import logging
from typing import Optional, Any
import ly_test_tools.o3de.pipeline_utils as utils
logger = logging.getLogger(__name__)
class PlatformSetting:
"""
Interface for managing different platforms' system variables.
"""
class DATA_TYPE:
"""Platform-agnostic data type enums"""
INT = 1
STR = 2
STR_LIST = 3
def __init__(self, workspace: pytest.fixture, subkey: str, key: str) -> None:
self._workspace = workspace
self._key = key
self._subkey = subkey
def get_value(self, get_type: bool = False) -> object:
"""Gets the current setting's value (and optionally type as tuple) from the system. Returns None if entry DNE"""
raise NotImplementedError("Virtual PlatformSetting not implemented. Instantiate a specific platform")
def set_value(self, value: any) -> bool:
"""Sets the current setting's value. Creates the entry if it DNE. Returns True for success."""
raise NotImplementedError("Virtual PlatformSetting not implemented. Instantiate a specific platform")
def delete_entry(self) -> bool:
"""Deletes the settings entry. Returns boolean for success."""
raise NotImplementedError("Virtual PlatformSetting not implemented. Instantiate a specific platform")
def entry_exists(self) -> bool:
"""Checks if the settings entry exists."""
raise NotImplementedError("Virtual PlatformSetting not implemented. Instantiate a specific platform")
@staticmethod
def get_system_setting(workspace: pytest.fixture, subkey: str, key: str, hive: Optional[str] = None) -> Any:
"""Factory method creates a platform-specific system setting accessor"""
if workspace.asset_processor_platform == 'windows':
# import WindowsSetting and return an instance
from automatedtesting_shared.windows_registry_setting import WindowsRegistrySetting
return WindowsRegistrySetting(workspace, subkey, key, hive)
# ########################################################
# Insert Mac (and Linux?) Setting implementations
# ########################################################
else:
raise NotImplementedError(f"Platform: {workspace.platform} not supported yet")