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.
66 lines
2.5 KiB
Python
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")
|