def test_symlink(self) -> None: _symlink = self._tmpfile + "_symlink" # pyre-ignore assert PathManager.symlink(self._tmpfile, _symlink) # pyre-ignore with PathManager.open(_symlink) as f: self.assertEqual(f.read(), self._tmpfile_contents) assert os.readlink(_symlink) == self._tmpfile os.remove(_symlink)
def test_isfile(self) -> None: self.assertTrue(PathManager.isfile(self._tmpfile)) # pyre-ignore # This is a directory, not a file, so it should fail self.assertFalse(PathManager.isfile(self._tmpdir)) # pyre-ignore # This is a non-existing path, so it should fail fake_path = os.path.join(self._tmpdir, uuid.uuid4().hex) # pyre-ignore self.assertFalse(PathManager.isfile(fake_path))
def test_copy(self) -> None: _tmpfile_2 = self._tmpfile + "2" # pyre-ignore _tmpfile_2_contents = "something else" with open(_tmpfile_2, "w") as f: f.write(_tmpfile_2_contents) f.flush() # pyre-ignore assert PathManager.copy(self._tmpfile, _tmpfile_2, True) with PathManager.open(_tmpfile_2, "r") as f: self.assertEqual(f.read(), self._tmpfile_contents)
def test_open_args(self) -> None: PathManager.set_strict_kwargs_checking(True) f = PathManager.open( self._tmpfile, # type: ignore mode="r", buffering=1, encoding="UTF-8", errors="ignore", newline=None, closefd=True, opener=None, ) f.close()
def test_ls(self) -> None: # Create some files in the tempdir to ls out. root_dir = os.path.join(self._tmpdir, "ls") # pyre-ignore os.makedirs(root_dir, exist_ok=True) files = sorted(["foo.txt", "bar.txt", "baz.txt"]) for f in files: open(os.path.join(root_dir, f), "a").close() children = sorted(PathManager.ls(root_dir)) self.assertListEqual(children, files) # Cleanup the tempdir shutil.rmtree(root_dir)
def test_rm(self) -> None: # pyre-ignore with open(os.path.join(self._tmpdir, "test_rm.txt"), "w") as f: rm_file = f.name f.write(self._tmpfile_contents) f.flush() self.assertTrue(PathManager.exists(rm_file)) self.assertTrue(PathManager.isfile(rm_file)) PathManager.rm(rm_file) self.assertFalse(PathManager.exists(rm_file)) self.assertFalse(PathManager.isfile(rm_file))
def test_exists(self) -> None: # pyre-ignore self.assertTrue(PathManager.exists(self._tmpfile)) # pyre-ignore fake_path = os.path.join(self._tmpdir, uuid.uuid4().hex) self.assertFalse(PathManager.exists(fake_path))
def test_get_local_path(self) -> None: self.assertEqual( # pyre-ignore PathManager.get_local_path(self._tmpfile), self._tmpfile, )
def test_open(self) -> None: # pyre-ignore with PathManager.open(self._tmpfile, "r") as f: self.assertEqual(f.read(), self._tmpfile_contents)
def test_PathManager(self) -> None: x = LazyPath(lambda: "./") output = PathManager.ls(x) # pyre-ignore output_gt = PathManager.ls("./") self.assertEqual(sorted(output), sorted(output_gt))
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)
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(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_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_bad_args(self) -> None: # TODO (T58240718): Replace with dynamic checks with self.assertRaises(ValueError): PathManager.copy(self._tmpfile, self._tmpfile, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.exists(self._tmpfile, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.get_local_path(self._tmpfile, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.isdir(self._tmpfile, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.isfile(self._tmpfile, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.ls(self._tmpfile, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.mkdirs(self._tmpfile, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.open(self._tmpfile, foo="foo") # type: ignore with self.assertRaises(ValueError): PathManager.rm(self._tmpfile, foo="foo") # type: ignore PathManager.set_strict_kwargs_checking(False) PathManager.copy(self._tmpfile, self._tmpfile, foo="foo") # type: ignore PathManager.exists(self._tmpfile, foo="foo") # type: ignore PathManager.get_local_path(self._tmpfile, foo="foo") # type: ignore PathManager.isdir(self._tmpfile, foo="foo") # type: ignore PathManager.isfile(self._tmpfile, foo="foo") # type: ignore PathManager.ls(self._tmpdir, foo="foo") # type: ignore PathManager.mkdirs(self._tmpdir, foo="foo") # type: ignore f = PathManager.open(self._tmpfile, foo="foo") # type: ignore f.close() # pyre-ignore with open(os.path.join(self._tmpdir, "test_rm.txt"), "w") as f: rm_file = f.name f.write(self._tmpfile_contents) f.flush() PathManager.rm(rm_file, foo="foo") # type: ignore
def test_mkdirs(self) -> None: # pyre-ignore new_dir_path = os.path.join(self._tmpdir, "new", "tmp", "dir") self.assertFalse(PathManager.exists(new_dir_path)) PathManager.mkdirs(new_dir_path) self.assertTrue(PathManager.exists(new_dir_path))