Spaces:
Running
on
Zero
Running
on
Zero
| # Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| import multiprocessing | |
| import os.path | |
| import pathlib | |
| import tempfile | |
| import pytest | |
| def test_workspace_exist_and_empty_when_created(): | |
| from pytriton.utils.workspace import Workspace | |
| with tempfile.TemporaryDirectory() as tempdir: | |
| tempdir = pathlib.Path(tempdir) | |
| workspace = Workspace(tempdir / "workspace") | |
| assert workspace._workspace_path.exists() | |
| assert workspace.exists() | |
| assert workspace.is_empty() | |
| assert len(os.listdir(workspace._workspace_path)) == 0 | |
| assert workspace.path == workspace._workspace_path | |
| def test_workspace_not_exist_and_empty_when_removed(): | |
| from pytriton.utils.workspace import Workspace | |
| with tempfile.TemporaryDirectory() as tempdir: | |
| tempdir = pathlib.Path(tempdir) | |
| workspace = Workspace(tempdir / "workspace") | |
| os.rmdir(workspace._workspace_path) | |
| assert not workspace.exists() | |
| assert workspace.is_empty() | |
| def test_workspace_initializer_raises_error_when_workspace_directory_already_exists(): | |
| from pytriton.utils.workspace import Workspace | |
| with tempfile.TemporaryDirectory() as tempdir: | |
| tempdir = pathlib.Path(tempdir) | |
| workspace = Workspace(tempdir / "workspace") | |
| # Exception should be raised at second creation in the same path | |
| with pytest.raises(FileExistsError): | |
| _ = Workspace(workspace.path) | |
| def test_workspace_clean(): | |
| from pytriton.utils.workspace import Workspace | |
| with tempfile.TemporaryDirectory() as tempdir: | |
| tempdir = pathlib.Path(tempdir) | |
| workspace = Workspace(tempdir / "workspace") | |
| open(workspace.path / "file.txt", "w").close() | |
| (workspace.path / "dir").mkdir() | |
| assert not workspace.is_empty() | |
| workspace.clean() | |
| assert workspace.is_empty() | |
| assert not workspace.exists() | |
| # No exception should be raised at second clean | |
| workspace.clean() | |
| assert not workspace.exists() | |
| def test_tmp_workspace_exist_when_created(): | |
| import pytriton.constants as constants | |
| from pytriton.utils.workspace import Workspace | |
| with tempfile.TemporaryDirectory() as tempdir: | |
| constants.PYTRITON_HOME = pathlib.Path(tempdir) | |
| workspace = Workspace() | |
| assert workspace.exists() | |
| def test_tmp_workspace_not_exist_when_deleted(): | |
| import pytriton.constants as constants | |
| from pytriton.utils.workspace import Workspace | |
| with tempfile.TemporaryDirectory() as tempdir: | |
| constants.PYTRITON_HOME = pathlib.Path(tempdir) | |
| workspace = Workspace() | |
| assert workspace.exists() | |
| p = workspace.path | |
| del workspace | |
| assert not p.exists() | |
| def test_tmp_workspace_not_exist_when_cleaned(): | |
| import pytriton.constants as constants | |
| from pytriton.utils.workspace import Workspace | |
| with tempfile.TemporaryDirectory() as tempdir: | |
| constants.PYTRITON_HOME = pathlib.Path(tempdir) | |
| workspace = Workspace() | |
| assert workspace.exists() | |
| workspace.clean() | |
| assert not workspace.exists() | |
| def _check(pytriton_home=None): | |
| if pytriton_home is not None: | |
| os.environ["PYTRITON_HOME"] = pytriton_home | |
| else: | |
| pytriton_home = pathlib.Path.home() / ".cache" / "pytriton" | |
| from pytriton.constants import PYTRITON_HOME | |
| assert PYTRITON_HOME == pathlib.Path(pytriton_home), f"{PYTRITON_HOME} != {pytriton_home}" | |
| from pytriton.utils.workspace import Workspace | |
| workspace = Workspace() | |
| # below line will raise ValueError if workspace is not in pytriton_home | |
| workspace.path.relative_to(pytriton_home) | |
| def test_use_env_variable_to_set_pytriton_home(): | |
| ctx = multiprocessing.get_context("spawn") | |
| process = ctx.Process(target=_check) # no pytriton_home environment | |
| process.start() | |
| process.join() | |
| assert process.exitcode == 0 | |
| with tempfile.TemporaryDirectory() as tempdir: | |
| process = ctx.Process(target=_check, args=(tempdir,)) | |
| process.start() | |
| process.join() | |
| assert process.exitcode == 0 | |