test_reg_cleaner.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. """
  2. Copyright (c) Contributors to the Open 3D Engine Project.
  3. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. SPDX-License-Identifier: Apache-2.0 OR MIT
  5. """
  6. import pytest
  7. from pytest_mock import MockFixture
  8. import ly_test_tools.environment.reg_cleaner
  9. from ly_test_tools import WINDOWS
  10. pytestmark = pytest.mark.SUITE_smoke
  11. if not WINDOWS:
  12. pytestmark = pytest.mark.skipif(
  13. not WINDOWS,
  14. reason="tests.unit.test_reg_cleaner is restricted to the Windows platform.")
  15. def test_DeleteKey_KeyDoesNotExist_SilentlyFails(mocker):
  16. # type: (MockFixture) -> None
  17. mock_delete_child_keys_and_values = mocker.patch(
  18. "ly_test_tools.environment.reg_cleaner._delete_child_keys_and_values")
  19. mock_delete_child_keys_and_values.side_effect = WindowsError
  20. ly_test_tools.environment.reg_cleaner._delete_key("key_1")
  21. def test_DeleteKey_KeyIsEmpty_KeyDeleted(mocker):
  22. # type: (MockFixture) -> None
  23. mockwinreg = mocker.patch("ly_test_tools.environment.reg_cleaner.winreg")
  24. mock_delete_child_keys_and_values = mocker.patch(
  25. "ly_test_tools.environment.reg_cleaner._delete_child_keys_and_values")
  26. mock_delete_child_keys_and_values.return_value = True
  27. ly_test_tools.environment.reg_cleaner._delete_key("key_1")
  28. assert mockwinreg.DeleteKey.called
  29. def test_DeleteKey_KeyIsNotEmpty_KeyNotDeleted(mocker):
  30. # type: (MockFixture) -> None
  31. mockwinreg = mocker.patch("ly_test_tools.environment.reg_cleaner.winreg")
  32. mock_delete_child_keys_and_values = mocker.patch(
  33. "ly_test_tools.environment.reg_cleaner._delete_child_keys_and_values")
  34. mock_delete_child_keys_and_values.return_value = False
  35. ly_test_tools.environment.reg_cleaner._delete_key("key_1")
  36. assert not mockwinreg.DeleteKey.called
  37. def test_DeleteChildKeysAndValues_KeyDoesNotExist_RaisesWindowsError(mocker):
  38. # type: (MockFixture) -> None
  39. mockwinreg = mocker.patch("ly_test_tools.environment.reg_cleaner.winreg")
  40. mockwinreg.OpenKey.side_effect = WindowsError
  41. with pytest.raises(WindowsError):
  42. ly_test_tools.environment.reg_cleaner._delete_child_keys_and_values("key_1")
  43. def test_DeleteChildKeysAndValues_KeyIsEmpty_ReturnsTrue(mocker):
  44. # type: (MockFixture) -> None
  45. mockwinreg = mocker.patch("ly_test_tools.environment.reg_cleaner.winreg")
  46. mockwinreg.EnumKey.side_effect = WindowsError
  47. mockwinreg.EnumValue.side_effect = WindowsError
  48. assert ly_test_tools.environment.reg_cleaner._delete_child_keys_and_values("key_1")
  49. def test_DeleteChildKeysAndValues_KeyWithNoChildrenInExceptionList_ReturnsTrue(mocker):
  50. # type: (MockFixture) -> None
  51. mockwinreg = mocker.patch("ly_test_tools.environment.reg_cleaner.winreg")
  52. mockwinreg.EnumKey.side_effect = ["child_key_1", WindowsError, WindowsError]
  53. mockwinreg.EnumValue.side_effect = [WindowsError, ("child_value_1", None, None), WindowsError]
  54. assert ly_test_tools.environment.reg_cleaner._delete_child_keys_and_values("key_1")
  55. def test_DeleteChildKeysAndValues_KeyWithChildrenInExceptionList_ReturnsFalse(mocker):
  56. # type: (MockFixture) -> None
  57. mockwinreg = mocker.patch("ly_test_tools.environment.reg_cleaner.winreg")
  58. mockwinreg.EnumKey.side_effect = ["child_key_1", WindowsError]
  59. mockwinreg.EnumValue.side_effect = [("child_value_1", None, None), WindowsError]
  60. exception_list = ["key_1\\child_key_1", "key_1\\child_value_1"]
  61. assert not ly_test_tools.environment.reg_cleaner._delete_child_keys_and_values("key_1", exception_list)