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

66 lines
2.5 KiB
Python

"""
Copyright (c) Contributors to the Open 3D Engine Project.
For complete copyright and license terms please see the LICENSE at the root of this distribution.
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")