class TestHTTPIO(unittest.TestCase): _remote_uri = "https://www.facebook.com" _filename = "facebook.html" _cache_dir = os.path.join(get_cache_dir(), __name__) def setUp(self) -> None: if os.path.exists(self._cache_dir): print(f"rmtree {self._cache_dir}") shutil.rmtree(self._cache_dir) os.makedirs(self._cache_dir, exist_ok=True) @patch("fvcore.common.file_io.get_cache_dir") def test_get_local_path(self, mock_get_cache_dir): mock_get_cache_dir.return_value = self._cache_dir local_path = PathManager.get_local_path(self._remote_uri) self.assertTrue(os.path.exists(local_path)) self.assertTrue(os.path.isfile(local_path)) @patch("fvcore.common.file_io.get_cache_dir") def test_open(self, mock_get_cache_dir): mock_get_cache_dir.return_value = self._cache_dir with PathManager.open(self._remote_uri, "r") as f: self.assertTrue(os.path.exists(f.name)) self.assertTrue(os.path.isfile(f.name)) self.assertTrue(f.read() != "") def test_open_writes(self): # HTTPURLHandler does not support writing, only reading. with self.assertRaises(AssertionError): with PathManager.open(self._remote_uri, "w") as f: f.write("foobar")
class TestHTTPIO(unittest.TestCase): _remote_uri = "https://www.facebook.com" _filename = "facebook.html" _cache_dir: str = os.path.join(get_cache_dir(), __name__) def setUp(self) -> None: if os.path.exists(self._cache_dir): shutil.rmtree(self._cache_dir) os.makedirs(self._cache_dir, exist_ok=True) def test_open_writes(self) -> None: # HTTPURLHandler does not support writing, only reading. with self.assertRaises(AssertionError): with PathManager.open(self._remote_uri, "w") as f: f.write("foobar") # pyre-ignore def test_bad_args(self) -> None: with self.assertRaises(NotImplementedError): PathManager.copy( self._remote_uri, self._remote_uri, foo="foo" # type: ignore ) with self.assertRaises(NotImplementedError): PathManager.exists(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.get_local_path(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.isdir(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.isfile(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.ls(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.mkdirs(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.open(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.rm(self._remote_uri, foo="foo") # type: ignore PathManager.set_strict_kwargs_checking(False) PathManager.get_local_path(self._remote_uri, foo="foo") # type: ignore f = PathManager.open(self._remote_uri, foo="foo") # type: ignore f.close() PathManager.set_strict_kwargs_checking(True)
class TestHTTPIO(unittest.TestCase): _remote_uri = "https://www.facebook.com" _filename = "facebook.html" _cache_dir: str = os.path.join(get_cache_dir(), __name__) @contextmanager def _patch_download(self) -> Generator[None, None, None]: def fake_download(url: str, dir: str, *, filename: str) -> str: dest = os.path.join(dir, filename) with open(dest, "w") as f: f.write("test") return dest with patch.object(file_io, "get_cache_dir", return_value=self._cache_dir), patch.object( file_io, "download", side_effect=fake_download): yield def setUp(self) -> None: if os.path.exists(self._cache_dir): shutil.rmtree(self._cache_dir) os.makedirs(self._cache_dir, exist_ok=True) def test_get_local_path(self) -> None: with self._patch_download(): local_path = PathManager.get_local_path(self._remote_uri) self.assertTrue(os.path.exists(local_path)) self.assertTrue(os.path.isfile(local_path)) def test_open(self) -> None: with self._patch_download(): with PathManager.open(self._remote_uri, "rb") as f: self.assertTrue(os.path.exists(f.name)) self.assertTrue(os.path.isfile(f.name)) self.assertTrue(f.read() != "") def test_open_writes(self) -> None: # HTTPURLHandler does not support writing, only reading. with self.assertRaises(AssertionError): with PathManager.open(self._remote_uri, "w") as f: f.write("foobar") # pyre-ignore def test_open_new_path_manager(self) -> None: with self._patch_download(): path_manager = PathManagerBase() with self.assertRaises(OSError): # no handler registered f = path_manager.open(self._remote_uri, "rb") path_manager.register_handler(HTTPURLHandler()) with path_manager.open(self._remote_uri, "rb") as f: self.assertTrue(os.path.isfile(f.name)) self.assertTrue(f.read() != "") def test_bad_args(self) -> None: with self.assertRaises(NotImplementedError): PathManager.copy( self._remote_uri, self._remote_uri, foo="foo" # type: ignore ) with self.assertRaises(NotImplementedError): PathManager.exists(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.get_local_path( self._remote_uri, foo="foo" # type: ignore ) with self.assertRaises(NotImplementedError): PathManager.isdir(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.isfile(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.ls(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.mkdirs(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.open(self._remote_uri, foo="foo") # type: ignore with self.assertRaises(NotImplementedError): PathManager.rm(self._remote_uri, foo="foo") # type: ignore PathManager.set_strict_kwargs_checking(False) PathManager.get_local_path(self._remote_uri, foo="foo") # type: ignore f = PathManager.open(self._remote_uri, foo="foo") # type: ignore f.close() PathManager.set_strict_kwargs_checking(True)