| | from unittest import mock |
| | import pytest |
| | from mlagents_envs.env_utils import validate_environment_path, launch_executable |
| | from mlagents_envs.exception import UnityEnvironmentException |
| | from mlagents_envs.logging_util import ( |
| | set_log_level, |
| | get_logger, |
| | INFO, |
| | ERROR, |
| | FATAL, |
| | CRITICAL, |
| | DEBUG, |
| | ) |
| |
|
| |
|
| | def mock_glob_method(path): |
| | """ |
| | Given a path input, returns a list of candidates |
| | """ |
| | if ".x86" in path: |
| | return ["linux"] |
| | if ".app" in path: |
| | return ["darwin"] |
| | if ".exe" in path: |
| | return ["win32"] |
| | if "*" in path: |
| | return "Any" |
| | return [] |
| |
|
| |
|
| | @mock.patch("sys.platform") |
| | @mock.patch("glob.glob") |
| | def test_validate_path_empty(glob_mock, platform_mock): |
| | glob_mock.return_value = None |
| | path = validate_environment_path(" ") |
| | assert path is None |
| |
|
| |
|
| | @mock.patch("mlagents_envs.env_utils.get_platform") |
| | @mock.patch("glob.glob") |
| | def test_validate_path(glob_mock, platform_mock): |
| | glob_mock.side_effect = mock_glob_method |
| | for platform in ["linux", "darwin", "win32"]: |
| | platform_mock.return_value = platform |
| | path = validate_environment_path(" ") |
| | assert path == platform |
| |
|
| |
|
| | @mock.patch("glob.glob") |
| | @mock.patch("subprocess.Popen") |
| | def test_launch_executable(mock_popen, glob_mock): |
| | with pytest.raises(UnityEnvironmentException): |
| | launch_executable(" ", []) |
| | glob_mock.return_value = ["FakeLaunchPath"] |
| | launch_executable(" ", []) |
| | mock_popen.side_effect = PermissionError("Fake permission error") |
| | with pytest.raises(UnityEnvironmentException): |
| | launch_executable(" ", []) |
| |
|
| |
|
| | def test_set_logging_level(): |
| | for level in [INFO, ERROR, FATAL, CRITICAL, DEBUG]: |
| | set_log_level(level) |
| | assert get_logger("test").level == level |
| |
|