Spaces:
Running
Running
# This source code is licensed under the MIT license found in the | |
# LICENSE file in the root directory of this source tree. | |
import os | |
import shutil | |
import sys | |
import tempfile | |
import unittest | |
from typing import Optional | |
from unittest.mock import MagicMock | |
class TestFileIO(unittest.TestCase): | |
_tmpdir: Optional[str] = None | |
_tmpfile: Optional[str] = None | |
_tmpfile_contents = "Hello, World" | |
def setUpClass(cls) -> None: | |
cls._tmpdir = tempfile.mkdtemp() | |
with open(os.path.join(cls._tmpdir, "test.txt"), "w") as f: | |
cls._tmpfile = f.name | |
f.write(cls._tmpfile_contents) | |
f.flush() | |
def tearDownClass(cls) -> None: | |
# Cleanup temp working dir. | |
if cls._tmpdir is not None: | |
shutil.rmtree(cls._tmpdir) # type: ignore | |
def test_file_io(self): | |
from fairseq.file_io import PathManager | |
with PathManager.open(os.path.join(self._tmpdir, "test.txt"), "r") as f: | |
s = f.read() | |
self.assertEqual(s, self._tmpfile_contents) | |
def test_file_io_oss(self): | |
# Mock iopath to simulate oss environment. | |
sys.modules["iopath"] = MagicMock() | |
from fairseq.file_io import PathManager | |
with PathManager.open(os.path.join(self._tmpdir, "test.txt"), "r") as f: | |
s = f.read() | |
self.assertEqual(s, self._tmpfile_contents) | |
def test_file_io_async(self): | |
# ioPath `PathManager` is initialized after the first `opena` call. | |
try: | |
from fairseq.file_io import IOPathManager, PathManager | |
_asyncfile = os.path.join(self._tmpdir, "async.txt") | |
f = PathManager.opena(_asyncfile, "wb") | |
f.close() | |
finally: | |
self.assertTrue(PathManager.async_close()) | |