def setUp(self): if vfs.exists(self.root + 'tmp'): vfs.remove(self.root + 'tmp') vfs.make_folder(self.root + 'tmp') file = vfs.make_file(self.root + 'tmp/blah.txt') file.write("BLAH!!!") file.close()
def test10_creation(self): file = vfs.make_file(self.root + 'testfile.txt') file.write("one\n") file.close() self.assertEqual(vfs.is_file(self.root + 'testfile.txt'), True) url = self.root + 'tmp/dir' vfs.make_folder(url) self.assertEqual(vfs.is_folder(url), True) url = self.root + 'tmp/dir/file1' fh = vfs.make_file(url) fh.write("this is file1") fh.close() self.assertEqual(vfs.is_file(url), True) url = self.root + 'tmp/dir/zero' fh = vfs.make_file(url) fh.close() self.assertEqual(vfs.is_file(url), True) # this should raise an OSError because it's trying to make a file out # of an existing folder url = self.root + 'tmp/dir' self.assertRaises(OSError, vfs.make_file, url) # this should raise an OSError because it's trying to make a file in # another file url = self.root + 'tmp/dir/file1/file2' self.assertRaises(OSError, vfs.make_file, url)
def createProject(cls, topdir): url = vfs.normalize(topdir) if url in cls.url_to_project_mapping: raise TypeError("Project already exists.") proj_dir = url.resolve2(cls.classprefs.project_directory) if not vfs.is_folder(proj_dir): if not vfs.exists(proj_dir): vfs.make_folder(proj_dir) else: raise TypeError( "Can't create directory %s -- seems already exist as a file" % proj_dir) info = cls.registerProject(None, proj_dir) info.savePrefs() cls.dprint(info) buffers = BufferList.getBuffers() for buffer in buffers: if buffer.url.scheme != "file": continue cls.dprint(u"prefix=%s topdir=%s" % (buffer.url.path.get_prefix(url.path), url.path)) if buffer.url.path.get_prefix(url.path) == url.path: cls.dprint(u"belongs in project! %s" % buffer.url.path) for mode in buffer.iterViewers(): mode.project_info = info else: cls.dprint(u"not in project: %s" % buffer.url.path) return info
def createProject(cls, topdir): url = vfs.normalize(topdir) if url in cls.url_to_project_mapping: raise TypeError("Project already exists.") proj_dir = url.resolve2(cls.classprefs.project_directory) if not vfs.is_folder(proj_dir): if not vfs.exists(proj_dir): vfs.make_folder(proj_dir) else: raise TypeError("Can't create directory %s -- seems already exist as a file" % proj_dir) info = cls.registerProject(None, proj_dir) info.savePrefs() cls.dprint(info) buffers = BufferList.getBuffers() for buffer in buffers: if buffer.url.scheme != "file": continue cls.dprint(u"prefix=%s topdir=%s" % (buffer.url.path.get_prefix(url.path), url.path)) if buffer.url.path.get_prefix(url.path) == url.path: cls.dprint(u"belongs in project! %s" % buffer.url.path) for mode in buffer.iterViewers(): mode.project_info = info else: cls.dprint(u"not in project: %s" % buffer.url.path) return info
def test14_remove_folder(self): # Create hierarchy vfs.make_folder('vfs/folder') vfs.make_folder('vfs/folder/a') vfs.make_file('vfs/folder/a/hello.txt') # Remove and test vfs.remove('vfs/folder') self.assertEqual(vfs.exists('vfs/folder'), False)
def test22_copy_folder(self): vfs.copy('vfs', 'mem:/tmp/folder-copy') with vfs.open('mem:/tmp/folder-copy/hello.txt') as file: self.assertEqual(file.read(), 'hello world\n') vfs.make_folder('mem:/tmp/folder-dest') vfs.copy('vfs', 'mem:/tmp/folder-dest') with vfs.open('mem:/tmp/folder-dest/vfs/hello.txt') as file: self.assertEqual(file.read(), 'hello world\n')
def test21_copy_file(self): url = self.root + 'tmp/dir/' vfs.make_folder(url) vfs.copy(self.root + 'tmp/blah.txt', url) file = vfs.open(url + 'blah.txt') self.assertEqual(file.read(), 'BLAH!!!') vfs.copy(self.root + 'tmp/blah.txt', url + 'blah2.txt') file = vfs.open(url + 'blah2.txt') self.assertEqual(file.read(), 'BLAH!!!')
def test21_copy_file(self): url = self.root + "tmp/dir/" vfs.make_folder(url) vfs.copy(self.root + "tmp/blah.txt", url) file = vfs.open(url + "blah.txt") self.assertEqual(file.read(), "BLAH!!!") vfs.copy(self.root + "tmp/blah.txt", url + "blah2.txt") file = vfs.open(url + "blah2.txt") self.assertEqual(file.read(), "BLAH!!!")
def test_simple(self): vfs.make_folder(self.root + 'tmp') file = vfs.make_file(self.root + 'tmp/blah.txt') file.write("BLAH!!!") file.close() # Probably too loose of a test, but the modification time has a 10 # second window for correctness mtime = vfs.get_mtime(self.root + 'tmp/blah.txt') current = datetime.now() assert abs(mtime - current) < timedelta(10) file = vfs.open(self.root + 'tmp/blah.txt') self.assertEqual(file.read(), 'BLAH!!!') assert vfs.exists(self.root + 'tmp') names = vfs.get_names(self.root) assert "tmp" in names names = vfs.get_names(self.root + 'tmp') assert "blah.txt" in names vfs.remove(self.root + 'tmp') assert not vfs.exists(self.root + 'tmp') assert not vfs.exists(self.root + 'tmp/blah.txt')
def test_simple(self): vfs.make_folder(self.root + "tmp") file = vfs.make_file(self.root + "tmp/blah.txt") file.write("BLAH!!!") file.close() # Probably too loose of a test, but the modification time has a 10 # second window for correctness mtime = vfs.get_mtime(self.root + "tmp/blah.txt") current = datetime.now() assert abs(mtime - current) < timedelta(10) file = vfs.open(self.root + "tmp/blah.txt") self.assertEqual(file.read(), "BLAH!!!") assert vfs.exists(self.root + "tmp") names = vfs.get_names(self.root) assert "tmp" in names names = vfs.get_names(self.root + "tmp") assert "blah.txt" in names vfs.remove(self.root + "tmp") assert not vfs.exists(self.root + "tmp") assert not vfs.exists(self.root + "tmp/blah.txt")
def addMacro(cls, macro, dirname=None): if dirname: if not dirname.endswith("/"): dirname += "/" # Make sure the directory exists url = vfs.normalize("macro:%s" % dirname) needs_mkdir = False if vfs.exists(url): if vfs.is_file(url): # we have a macro that is the same name as the directory # name. Rename the file and create the directory. components = dirname.strip('/').split('/') filename = components.pop() parent_dirname = "/".join(components) dum, new_filename = cls.findAlternateName(parent_dirname, filename) #dprint("parent=%s filename=%s: New filename: %s" % (parent_dirname, filename, new_filename)) parent, existing, name = cls._find(parent_dirname) #dprint("existing=%s" % existing) existing[new_filename] = existing[filename] del existing[filename] #dprint("existing after=%s" % existing) needs_mkdir = True else: needs_mkdir = True if needs_mkdir: #dprint("Making folder %s" % url) vfs.make_folder(url) else: dirname = "" fullpath, basename = cls.findAlternateName(dirname, macro.name) parent, existing, name = cls._find(dirname) #dprint("name=%s: parent=%s, existing=%s" % (basename, parent, existing)) macro.setName(fullpath) existing[basename] = macro
def test29_remove(self): url = self.root + 'tmp/dir' vfs.make_folder(url) vfs.remove(url) self.assertEqual(vfs.exists(url), False) # Create hierarchy vfs.make_folder(self.root + 'tmp3') vfs.exists(self.root + 'tmp3') vfs.make_folder(self.root + 'tmp3/folder') vfs.exists(self.root + 'tmp3/folder') vfs.make_folder(self.root + 'tmp3/folder/a') vfs.exists(self.root + 'tmp3/folder/a') fh = vfs.make_file(self.root + 'tmp3/folder/a/hello.txt') fh.write("blah") fh.close() vfs.exists(self.root + 'tmp3/folder/a/hello.txt') # Remove and test vfs.remove(self.root + 'tmp3/folder') self.assertEqual(vfs.exists(self.root + 'tmp3/folder'), False)
def test29_remove(self): url = 'mem:testfile.txt.old' vfs.remove(url) self.assertEqual(vfs.exists(url), False) url = 'mem:test/dir' vfs.make_folder(url) vfs.remove(url) self.assertEqual(vfs.exists(url), False) # Create hierarchy vfs.make_folder('mem:tests/folder') vfs.make_folder('mem:tests/folder/a') vfs.make_file('mem:tests/folder/a/hello.txt') # Remove and test vfs.remove('mem:tests/folder') self.assertEqual(vfs.exists('mem:tests/folder'), False)
def test07_make_folder(self): vfs.make_folder('vfs/folder') self.assertEqual(vfs.is_folder('vfs/folder'), True)
def setUp(self): vfs.make_folder('vfs-tmp')
def setUp(self): vfs.make_folder('mem:tmp') file = vfs.make_file('mem:tmp/blah.txt') file.write("BLAH!!!") file.close()
def handleFileDrop(self, x, y, filenames): self.dprint("%d file(s) dropped at %d,%d:" % (len(filenames), x, y)) srcdir = None tocopy = [] for src in filenames: filename = os.path.basename(src) if not srcdir: srcdir = os.path.dirname(src) srcdir += os.pathsep if os.path.isdir(src): self.dprint("dir: %s" % src) for root, dirs, files in os.walk(src): for file in files: child = os.path.join(root, file) self.dprint(" file: %s" % child) tocopy.append(child) elif os.path.isfile(src): self.dprint("file: %s" % src) tocopy.append(src) else: self.dprint("not file or dir: %s NOT COPYING" % src) self.status_info.startProgress("Copying...", len(tocopy), delay=1.0) count = 0 skipped = 0 errors = [] for src in tocopy: try: srcref = vfs.get_file_reference(src) relsrc = src[len(srcdir):] relref = vfs.get_file_reference(relsrc) dest = self.url.resolve2(relref) self.dprint("srcref=%s, relref=%s, dest=%s" % (srcref, relref, dest)) self.dprint("copying: '%s' -> '%s'" % (src, dest)) self.status_info.updateProgress(count, "Copying to %s" % str(dest)) destdir = vfs.get_dirname(dest) if not vfs.exists(destdir): # Need to recursively make directories dirs = [] parent = destdir maxdepth = len(parent.path) while not vfs.exists(parent) and maxdepth > 0: dirs.append(parent) parent = vfs.get_dirname(parent) maxdepth -= 1 dirs.reverse() for dir in dirs: self.dprint("Creating dir: %s" % dir) vfs.make_folder(dir) copy = True self.dprint("src path: %s" % srcref.path) self.dprint("dest path: %s" % dest.path) if vfs.exists(dest): self.dprint("exists: %s" % str(dest)) if vfs.is_folder(dest): errors.append("Not copying folder %s; shouldn't be specified from %s" % (dest, src)) copy = False else: dlg = CustomOkDialog(self.frame, u"File exists! Replace\n\n%s, %s, %s\n\nwith:\n\n%s, %s, %s" % (dest, vfs.get_mtime(dest), vfs.get_size(dest), src, os.path.getmtime(src), os.path.getsize(src)), "Replace", "Skip") retval=dlg.ShowModal() dlg.Destroy() copy = retval==wx.ID_OK if copy: self.dprint("Removing %s" % dest) vfs.remove(dest) if copy: vfs.copy(srcref, dest) else: skipped += 1 except Exception, e: errors.append("%s: %s" % (src, e)) count += 1