def testCopy(self): path1 = '/some/local/path' path2 = '/other/local/path' relative_path = 'relative.bin' self.mox.StubOutWithMock(filelib, 'Exists') self.mox.StubOutWithMock(osutils, 'SafeMakedirs') self.mox.StubOutWithMock(filelib.shutil, 'copy2') # Set up the test replay script. # Run 1, path2 directory exists. filelib.Exists(os.path.dirname(path2), as_dir=True).AndReturn(True) filelib.shutil.copy2(path1, path2) # Run 2, path2 directory does not exist. filelib.Exists(os.path.dirname(path2), as_dir=True).AndReturn(False) osutils.SafeMakedirs(os.path.dirname(path2)) filelib.shutil.copy2(path1, path2) # Run 3, there is target directory is '.', don't test existence. filelib.shutil.copy2(path1, relative_path) self.mox.ReplayAll() # Run the test verifications, three times. filelib.Copy(path1, path2) filelib.Copy(path1, path2) filelib.Copy(path1, relative_path) self.mox.VerifyAll()
def Exists(uri, as_dir=False): """Return True if file exists at given URI. If URI is a directory and as_dir is False then this will return False. Args: uri: URI to consider as_dir: If True then check URI as a directory, otherwise check as a file. Returns: True if file (or directory) exists at URI, False otherwise. """ uri_type = GetUriType(uri) if TYPE_GS == uri_type: if as_dir: # GS does not contain directories. return False return gslib.Exists(uri) if TYPE_LOCAL == uri_type: return filelib.Exists(uri, as_dir=as_dir) if TYPE_HTTP == uri_type or TYPE_HTTPS == uri_type: if as_dir: raise NotSupportedForType(uri_type, extra_msg='with as_dir=True') try: response = urllib2.urlopen(uri) return response.getcode() == 200 except urllib2.HTTPError: return False raise NotSupportedForType(uri_type)
def testExists(self): path = '/some/local/path' result = 'TheResult' self.mox.StubOutWithMock(filelib.os.path, 'isdir') self.mox.StubOutWithMock(filelib.os.path, 'isfile') # Set up the test replay script. # Run 1, as file. filelib.os.path.isfile(path).AndReturn(result) # Run 2, as dir. filelib.os.path.isdir(path).AndReturn(result) self.mox.ReplayAll() # Run the test verification. self.assertEqual(result, filelib.Exists(path)) self.assertEqual(result, filelib.Exists(path, as_dir=True)) self.mox.VerifyAll()
def testExists(self): gs_path = 'gs://bucket/some/path' local_path = '/some/local/path' http_path = 'http://host.domain/some/path' ftp_path = 'ftp://host.domain/some/path' result = 'TheResult' self.mox.StubOutWithMock(gslib, 'Exists') self.mox.StubOutWithMock(filelib, 'Exists') self.mox.StubOutWithMock(urilib.urllib2, 'urlopen') # Set up the test replay script. # Run 1, local, as_dir=False filelib.Exists(local_path, as_dir=False).AndReturn(result) # Run 2, GS, as_dir=False. gslib.Exists(gs_path).AndReturn(result) # Run 3, GS, as_dir=True. # Run 6, HTTP, as_dir=False, code=200. urilib.urllib2.urlopen(http_path).AndReturn(FakeHttpResponse(200)) # Run 7, HTTP, as_dir=False, code=404. urilib.urllib2.urlopen(http_path).AndReturn(FakeHttpResponse(404)) # Run 8, HTTP, as_dir=False, HTTPError. urilib.urllib2.urlopen(http_path).AndRaise( urilib.urllib2.HTTPError('url', 404, 'msg', None, None)) # Run 9, HTTP, as_dir=True. # Run 10, FTP, as_dir=False. self.mox.ReplayAll() # Run the test verification. self.assertEquals(result, urilib.Exists(local_path)) self.assertEquals(result, urilib.Exists(gs_path)) self.assertEquals(False, urilib.Exists(gs_path, as_dir=True)) self.assertTrue(urilib.Exists(http_path)) self.assertFalse(urilib.Exists(http_path)) self.assertFalse(urilib.Exists(http_path)) self.assertRaises(urilib.NotSupportedForType, urilib.Exists, http_path, as_dir=True) self.assertRaises(urilib.NotSupportedForType, urilib.Exists, ftp_path) self.mox.VerifyAll()
def testIntegrationScript(self): dir1 = None dir2 = None try: dir1 = utils.CreateTmpDir('filelib_unittest1-') dir2 = utils.CreateTmpDir('filelib_unittest2-') self._SetUpTempdir(dir1) dir1_file1 = os.path.join(dir1, self.FILE1) dir1_file2 = os.path.join(dir1, self.FILE2) dir1_subfile = os.path.join(dir1, self.SUBFILE) dir1_top_files = [dir1_file1, dir1_file2] dir1_deep_files = dir1_top_files + [dir1_subfile] dir2_file1 = os.path.join(dir2, self.FILE1) dir2_file2 = os.path.join(dir2, self.FILE2) dir2_subdir = os.path.join(dir2, self.SUBDIR) dir2_subfile = os.path.join(dir2, self.SUBFILE) dir2_top_files = [dir2_file1, dir2_file2] dir2_deep_files = dir2_top_files + [dir2_subfile] # Test Exists. for dir1_path in dir1_deep_files: self.assertTrue(filelib.Exists(dir1_path)) for dir2_path in dir2_deep_files: self.assertFalse(filelib.Exists(dir2_path)) # Test ListFiles with various options. self.assertEqual(set(dir1_top_files), set(filelib.ListFiles(dir1))) self.assertEqual(set(dir1_deep_files), set(filelib.ListFiles(dir1, recurse=True))) self.assertEqual(sorted(dir1_deep_files), filelib.ListFiles(dir1, recurse=True, sort=True)) self.assertEqual(set([dir1_file1, dir1_subfile]), set(filelib.ListFiles(dir1, recurse=True, filepattern=self.FILE_GLOB))) # Test CopyFiles from dir1 to dir2. self.assertEqual(set(dir2_deep_files), set(filelib.CopyFiles(dir1, dir2))) for dir2_path in dir2_deep_files: self.assertTrue(filelib.Exists(dir2_path)) # Test Cmp. self.assertTrue(filelib.Cmp(dir1_file1, dir2_file1)) self.assertTrue(filelib.Cmp(dir2_file2, dir1_file2)) self.assertFalse(filelib.Cmp(dir1_file2, dir2_file1)) # Test RemoveDirContents. filelib.RemoveDirContents(dir2_subdir) self.assertTrue(filelib.Exists(dir2_subdir, as_dir=True)) self.assertFalse(filelib.Exists(dir2_subfile)) filelib.RemoveDirContents(dir2) self.assertTrue(filelib.Exists(dir2, as_dir=True)) for dir2_path in dir2_deep_files: self.assertFalse(filelib.Exists(dir2_path)) filelib.RemoveDirContents(dir1) self.assertTrue(filelib.Exists(dir1, as_dir=True)) for dir1_path in dir1_deep_files: self.assertFalse(filelib.Exists(dir1_path)) finally: for d in (dir1, dir2): if d and os.path.isdir(d): shutil.rmtree(d)
def testRemove(self): # pylint: disable=E1101 path1 = os.path.join(self.tempdir, 'file1') path2 = os.path.join(self.tempdir, 'file2') missing_path = os.path.join(self.tempdir, 'missing') subdir = os.path.join(self.tempdir, 'subdir') subpath1 = os.path.join(subdir, 'file3') subpath2 = os.path.join(subdir, 'file4') # Test remove on path that does not exist. self.assertRaises(filelib.MissingFileError, filelib.Remove, path1) self.assertFalse(filelib.Remove(path1, ignore_no_match=True)) # Test remove on simple file. self._CreateSimpleFile(path1) self.assertTrue(filelib.Remove(path1)) self.assertRaises(filelib.MissingFileError, filelib.Remove, path1) self.assertFalse(filelib.Remove(path1, ignore_no_match=True)) # Test remove on more than one file. self._CreateSimpleFile(path1, path2) self.assertTrue(filelib.Remove(path1, path2)) # Test remove on multiple files, with one missing. self._CreateSimpleFile(path1, path2) self.assertRaises(filelib.MissingFileError, filelib.Remove, path1, missing_path, path2) # First path1 removed, but path2 not because it was after missing. self.assertFalse(filelib.Exists(path1)) self.assertTrue(filelib.Exists(path2)) # Test remove multiple files, one missing, with ignore_no_match True. self._CreateSimpleFile(path1, path2) self.assertFalse(filelib.Remove(path1, missing_path, path2, ignore_no_match=True)) self.assertFalse(filelib.Exists(path1)) self.assertFalse(filelib.Exists(path2)) # Test recursive Remove. os.makedirs(subdir) self._CreateSimpleFile(path1, path2, subpath1, subpath2) self.assertTrue(filelib.Remove(path1, path2, subdir, recurse=True)) self.assertFalse(filelib.Exists(path1)) self.assertFalse(filelib.Exists(subpath1)) # Test recursive Remove with one missing path. os.makedirs(subdir) self._CreateSimpleFile(path1, path2, subpath1, subpath2) self.assertRaises(filelib.MissingFileError, filelib.Remove, path1, subdir, missing_path, path2, recurse=True) self.assertFalse(filelib.Exists(path1)) self.assertTrue(filelib.Exists(path2)) self.assertFalse(filelib.Exists(subpath1)) # Test recursive Remove with one missing path and ignore_no_match True. os.makedirs(subdir) self._CreateSimpleFile(path1, path2, subpath1, subpath2) self.assertFalse(filelib.Remove(path1, subdir, missing_path, path2, recurse=True, ignore_no_match=True)) self.assertFalse(filelib.Exists(path1)) self.assertFalse(filelib.Exists(path2)) self.assertFalse(filelib.Exists(subpath1))