text: """
  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
  
  Unit tests for ly_test_tools.builtin.helpers functions.
  """
  import unittest.mock as mock
  
  import pytest
  
  import ly_test_tools.builtin.helpers
  import ly_test_tools._internal.managers.abstract_resource_locator
  import ly_test_tools._internal.managers.workspace
  import ly_test_tools._internal.managers.platforms.mac
  import ly_test_tools._internal.managers.platforms.windows
  
  from ly_test_tools import MAC, WINDOWS
  
  pytestmark = pytest.mark.SUITE_smoke
  
  
  class MockedAbstractResourceLocator(ly_test_tools._internal.managers.abstract_resource_locator.AbstractResourceLocator):
      def __init__(self, build_directory, project):
          super(MockedAbstractResourceLocator, self).__init__(
              build_directory=build_directory,
              project=project,
          )
  
  
  class MockedWorkspaceManager(ly_test_tools._internal.managers.workspace.AbstractWorkspaceManager):
      def __init__(
              self, resource_locator, project, tmp_path, output_path
      ):
          super(MockedWorkspaceManager, self).__init__(
              resource_locator=resource_locator,
              project=project,
              tmp_path=tmp_path,
              output_path=output_path
          )
  
  
  @mock.patch(
      'ly_test_tools._internal.managers.abstract_resource_locator.AbstractResourceLocator',
      mock.MagicMock(return_value=MockedAbstractResourceLocator)
  )
  @mock.patch('os.remove', mock.MagicMock(return_value=True))
  class TestBuiltinHelpers(object):
  
      @mock.patch('ly_test_tools._internal.managers.workspace.AbstractWorkspaceManager',
                  mock.MagicMock(return_value=MockedWorkspaceManager))
      @mock.patch('ly_test_tools.builtin.helpers.WINDOWS', True)
      @mock.patch('os.path.exists', mock.MagicMock(return_value=True))
      def test_CreateBuiltinWorkspace_WindowsOS_ReturnsWindowsWorkspaceManager(self):
          expected_workspace = ly_test_tools._internal.managers.platforms.windows.WindowsWorkspaceManager
  
          under_test = ly_test_tools.builtin.helpers.create_builtin_workspace(
              build_directory='build_directory',
              project='mock_project',
              tmp_path='mock_tmp_path',
              output_path='mock_output_path',
          )
  
          assert type(under_test) == expected_workspace
  
      @mock.patch('ly_test_tools._internal.managers.abstract_resource_locator._find_project_json',
                  mock.MagicMock(return_value='mock_project'))
      @mock.patch('ly_test_tools._internal.managers.workspace.AbstractWorkspaceManager',
                  mock.MagicMock(return_value=MockedWorkspaceManager))
      @mock.patch('ly_test_tools.builtin.helpers.MAC', True)
      @mock.patch('ly_test_tools.builtin.helpers.WINDOWS', False)
      def test_CreateBuiltinWorkspace_MacOS_ReturnsMacWorkspaceManager(self):
          expected_workspace = ly_test_tools._internal.managers.platforms.mac.MacWorkspaceManager
  
          under_test = ly_test_tools.builtin.helpers.create_builtin_workspace(
              build_directory='build_directory',
              project='mock_project',
              tmp_path='mock_tmp_path',
              output_path='mock_output_path',
          )
  
          assert type(under_test) == expected_workspace
  
      @mock.patch('ly_test_tools._internal.managers.workspace.AbstractWorkspaceManager',
                  mock.MagicMock(return_value=MockedWorkspaceManager))
      @mock.patch('ly_test_tools._internal.pytest_plugin.build_directory', None)
      def test_CreateBuiltinWorkspace_InvalidPlatform_RaisesValueError(self):
          with pytest.raises(ValueError):
              ly_test_tools.builtin.helpers.create_builtin_workspace(
                  build_directory=None,
                  project='mock_project',
                  tmp_path='mock_tmp_path',
                  output_path='mock_output_path',
              )
  
      @mock.patch('os.path.abspath', mock.MagicMock(return_value='mock_base_dir'))
      @mock.patch('os.path.exists', mock.MagicMock(return_value=True))
      def test_FindEngineRoot_HasRootFile_ReturnsTuple(self):
          under_test = ly_test_tools._internal.managers.abstract_resource_locator._find_engine_root(
              initial_path='mock_dev_dir')
  
          assert under_test == ('mock_dev_dir')
  
      @mock.patch('os.path.abspath', mock.MagicMock(return_value='mock_base_dir'))
      @mock.patch('os.path.exists', mock.MagicMock(return_value=False))
      def test_FindEngineRoot_NoRootFile_RaisesOSError(self):
          with pytest.raises(OSError):
              ly_test_tools._internal.managers.abstract_resource_locator._find_engine_root(
                  initial_path='mock_dev_dir')
  
      @mock.patch('ly_test_tools._internal.managers.workspace.AbstractWorkspaceManager.setup')
      @mock.patch('ly_test_tools._internal.managers.artifact_manager.NullArtifactManager', mock.MagicMock())
      @mock.patch('os.path.exists', mock.MagicMock(return_value=True))
      def test_SetupBuiltinWorkspace_ValidWorkspaceSetup_ReturnsWorkspaceObject(self, mock_setup):
          mock_test_name = 'mock_test_name'
          mock_test_amount = 10
          mock_workspace = ly_test_tools.builtin.helpers.create_builtin_workspace(
              build_directory='build_directory',
              project='mock_project',
              tmp_path='mock_tmp_path',
              output_path='mock_output_path',
          )
  
          under_test = ly_test_tools.builtin.helpers.setup_builtin_workspace(
              mock_workspace, mock_test_name, mock_test_amount)
  
          assert under_test == mock_workspace
          assert mock_setup.call_count == 1
          mock_workspace.artifact_manager.set_test_name.assert_called_with(
              test_name=mock_test_name, amount=mock_test_amount)
  
      @mock.patch('ly_test_tools._internal.managers.workspace.AbstractWorkspaceManager.teardown')
      @mock.patch('os.path.exists', mock.MagicMock(return_value=True))
      def test_TeardownBuiltinWorkspace_ValidWorkspaceSetup_ReturnsWorkspaceObject(self, mock_teardown):
          mock_workspace = ly_test_tools.builtin.helpers.create_builtin_workspace(
              build_directory='build_directory',
              project='mock_project',
              tmp_path='mock_tmp_path',
              output_path='mock_output_path',
          )
  
          under_test = ly_test_tools.builtin.helpers.teardown_builtin_workspace(mock_workspace)
  
          assert under_test == mock_workspace
          assert mock_teardown.call_count == 1
  