def testParseSortDescendDate(self): files = [ "add.png", "Anchor.png", "image2.png", "image.png", "add.png2", "файл с пробелами.tmp", "filename" ] fullFilesPath = [ os.path.join("testdata/samplefiles/for_sort", fname) for fname in files ] attach = Attachment(self.testPage) attach.attach(fullFilesPath) os.utime(attach.getFullPath(files[3]), (1000000000, 1000000000)) os.utime(attach.getFullPath(files[0]), (1000000000, 1100000000)) os.utime(attach.getFullPath(files[2]), (1000000000, 1200000000)) os.utime(attach.getFullPath(files[6]), (1000000000, 1300000000)) os.utime(attach.getFullPath(files[4]), (1000000000, 1400000000)) os.utime(attach.getFullPath(files[5]), (1000000000, 1500000000)) os.utime(attach.getFullPath(files[1]), (1000000000, 1600000000)) text = "(:attachlist sort=descenddate:)" result = self.parser.toHtml(text) names = [ files[1], files[5], files[4], files[6], files[2], files[0], files[3] ] titles = names[:] self._compareResult(titles, names, result)
def testSortByDateRelative (self): files = [u"add.png", u"Anchor.png", u"image2.png", u"image.png", u"add.png2", u"файл с пробелами.tmp", u"filename"] fullFilesPath = [os.path.join (u"../test/samplefiles/for_sort", fname) for fname in files] attach = Attachment (self.page) attach.attach (fullFilesPath) files_list = attach.attachmentFull files_list.sort (Attachment.sortByName) os.utime (files_list[3], (1000000000, 1000000000)) os.utime (files_list[0], (1000000000, 1100000000)) os.utime (files_list[2], (1000000000, 1200000000)) os.utime (files_list[6], (1000000000, 1300000000)) os.utime (files_list[4], (1000000000, 1400000000)) os.utime (files_list[5], (1000000000, 1500000000)) os.utime (files_list[1], (1000000000, 1600000000)) attach2 = Attachment (self.page) files_list2 = attach.getAttachRelative() files_list2.sort (attach2.sortByDateRelative) for n in range (1, len (files)): self.assertTrue (os.stat (attach2.getFullPath (files_list2[n - 1])).st_mtime <= os.stat (attach2.getFullPath (files_list2[n])).st_mtime)
def testParseSortDescendDate (self): files = [u"add.png", u"Anchor.png", u"image2.png", u"image.png", u"add.png2", u"файл с пробелами.tmp", u"filename"] fullFilesPath = [os.path.join (u"../test/samplefiles/for_sort", fname) for fname in files] attach = Attachment (self.testPage) attach.attach (fullFilesPath) os.utime (attach.getFullPath (files[3]), (1000000000, 1000000000)) os.utime (attach.getFullPath (files[0]), (1000000000, 1100000000)) os.utime (attach.getFullPath (files[2]), (1000000000, 1200000000)) os.utime (attach.getFullPath (files[6]), (1000000000, 1300000000)) os.utime (attach.getFullPath (files[4]), (1000000000, 1400000000)) os.utime (attach.getFullPath (files[5]), (1000000000, 1500000000)) os.utime (attach.getFullPath (files[1]), (1000000000, 1600000000)) text = u"(:attachlist sort=descenddate:)" result = self.parser.toHtml (text) names = [files[1], files[5], files[4], files[6], files[2], files[0], files[3]] titles = names[:] self._compareResult (titles, names, result)
def testMoveInvalid (self): """ А что, если кто-то блокирует папку с заметкой? """ page = self.wiki[u"Страница 1"] attachname = u"add.png" attach = Attachment (page) attach.attach ([os.path.join (u"../test/samplefiles", attachname)]) # Откроем на запись файл в папке с вложениями, чтобы нельзя было переместить папку with open (attach.getFullPath (u"lock.tmp", True), "w"): try: page.moveTo (self.wiki[u"Страница 2/Страница 3"]) except TreeException: # Если не удалось переместить страницу self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1"], None) self.assertNotEqual (self.wiki[u"Страница 1"], None) self.assertEqual (len (self.wiki[u"Страница 2/Страница 3"]), 1) self.assertTrue (os.path.exists (page.path)) self.assertFalse (os.path.exists (os.path.join (self.wiki[u"Страница 2/Страница 3"].path, u"Страница 1"))) self.assertTrue (os.path.exists (attach.getFullPath (attachname))) else: # А если страницу переместить удалось, то проверим, что она действительно перенеслась self.assertEqual (self.wiki[u"Страница 1"], None) self.assertTrue (os.path.exists (os.path.join (self.wiki[u"Страница 2/Страница 3"].path, u"Страница 1"))) self.assertEqual (len (self.wiki[u"Страница 2/Страница 3"]), 2) self.assertEqual (len (self.wiki), 3) self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1"].title, u"Страница 1") self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1/Страница 5"].title, u"Страница 5") self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1"].subpath, u"Страница 2/Страница 3/Страница 1") self.assertEqual (self.wiki[u"Страница 2/Страница 3/Страница 1/Страница 5"].subpath, u"Страница 2/Страница 3/Страница 1/Страница 5")
def testMoveInvalid(self): """ А что, если кто-то блокирует папку с заметкой? """ page = self.wiki[u"Страница 1"] attachname = u"add.png" attach = Attachment(page) attach.attach([os.path.join(u"../test/samplefiles", attachname)]) # Откроем на запись файл в папке с вложениями, # чтобы нельзя было переместить папку with open(attach.getFullPath(u"lock.tmp", True), "w"): try: page.moveTo(self.wiki[u"Страница 2/Страница 3"]) except TreeException: # Если не удалось переместить страницу self.assertEqual( self.wiki[u"Страница 2/Страница 3/Страница 1"], None ) self.assertNotEqual(self.wiki[u"Страница 1"], None) self.assertEqual(len(self.wiki[u"Страница 2/Страница 3"]), 1) self.assertTrue(os.path.exists(page.path)) self.assertFalse(os.path.exists( os.path.join(self.wiki[u"Страница 2/Страница 3"].path, u"Страница 1"))) self.assertTrue(os.path.exists(attach.getFullPath(attachname))) else: # А если страницу переместить удалось, то проверим, # что она действительно перенеслась self.assertEqual(self.wiki[u"Страница 1"], None) self.assertTrue( os.path.exists( os.path.join( self.wiki[u"Страница 2/Страница 3"].path, u"Страница 1") ) ) self.assertEqual(len(self.wiki[u"Страница 2/Страница 3"]), 2) self.assertEqual(len(self.wiki), 3) self.assertEqual( self.wiki[u"Страница 2/Страница 3/Страница 1"].title, u"Страница 1" ) self.assertEqual( self.wiki[u"Страница 2/Страница 3/Страница 1/Страница 5"].title, u"Страница 5" ) self.assertEqual( self.wiki[u"Страница 2/Страница 3/Страница 1"].subpath, u"Страница 2/Страница 3/Страница 1") self.assertEqual( self.wiki[u"Страница 2/Страница 3/Страница 1/Страница 5"].subpath, u"Страница 2/Страница 3/Страница 1/Страница 5")
def testRemoveError2(self): page1 = self.wikiroot["Страница 2"] page2 = self.wikiroot["Страница 2/Страница 3"] pagepath = page1.path attach2 = Attachment(page2) attachname = "add.png" attach2.attach([os.path.join("../test/samplefiles", attachname)]) with open(attach2.getFullPath("111.txt", True), "w"): try: page1.remove() except IOError: self.assertTrue(os.path.exists(pagepath)) self.assertNotEqual(self.wikiroot["Страница 2"], None) self.assertTrue( os.path.exists(self.wikiroot["Страница 2"].path) ) self.assertEqual(len(self.wikiroot), 3) self.assertNotEqual(self.wikiroot["Страница 2/Страница 3"], None) self.assertNotEqual( self.wikiroot["Страница 2/Страница 3/Страница 4"], None) else: self.assertEqual(self.wikiroot["Страница 2"], None) self.assertFalse(os.path.exists(pagepath))
def testRemoveError2(self): page1 = self.wikiroot["Страница 2"] page2 = self.wikiroot["Страница 2/Страница 3"] pagepath = page1.path attach2 = Attachment(page2) attachname = "add.png" attach2.attach([os.path.join("../test/samplefiles", attachname)]) with open(attach2.getFullPath("111.txt", True), "w"): try: page1.remove() except IOError: self.assertTrue(os.path.exists(pagepath)) self.assertNotEqual(self.wikiroot["Страница 2"], None) self.assertTrue( os.path.exists(self.wikiroot["Страница 2"].path) ) self.assertEqual(len(self.wikiroot), 3) self.assertNotEqual(self.wikiroot["Страница 2/Страница 3"], None) self.assertNotEqual( self.wikiroot["Страница 2/Страница 3/Страница 4"], None) else: self.assertEqual(self.wikiroot["Страница 2"], None) self.assertFalse(os.path.exists(pagepath))
def test_attach_rename(self): self._application.wikiroot = self.wikiroot self._application.selectedPage = self.page_01 self._attach_files(self.page_01, ['add.png']) attach = Attachment(self.page_01) src_fname = attach.getFullPath('add.png') dest_fname = attach.getFullPath('newname.png') watcher = AttachWatcher(self._application, self._period_ms) watcher.initialize() os.rename(src_fname, dest_fname) wx.MilliSleep(500) self.myYield() watcher.clear() self.assertEqual(self._eventCount, 1)
def test_attach_rename(self): self._application.wikiroot = self.wikiroot self._application.selectedPage = self.page_01 self._attach_files(self.page_01, ['add.png']) attach = Attachment(self.page_01) src_fname = attach.getFullPath('add.png') dest_fname = attach.getFullPath('newname.png') watcher = AttachWatcher(self._application, self._period_ms) watcher.initialize() os.rename(src_fname, dest_fname) wx.MilliSleep(500) self.myYield() watcher.clear() self.assertEqual(self._eventCount, 1)
def testGetFullPath3 (self): attach = Attachment (self.page) fname = u"Имя файла.ext" path_full = attach.getFullPath (fname, create=True) path_right = os.path.join (attach.getAttachPath(), fname) self.assertTrue (os.path.exists (attach.getAttachPath())) self.assertEqual (path_full, path_right)
def testSortBySizeRelative (self): files = [u"add.png", u"Anchor.png", u"image2.png", u"image.png", u"add.png2", u"файл с пробелами.tmp", u"filename"] fullFilesPath = [os.path.join (u"../test/samplefiles/for_sort", fname) for fname in files] attach = Attachment (self.page) attach.attach (fullFilesPath) attach.attach ([os.path.join (u"../test/samplefiles", "dir")]) attach2 = Attachment (self.page) files_list = attach2.getAttachRelative() files_list.sort (attach2.sortBySizeRelative) for n in range (1, len (files_list)): self.assertTrue (os.stat (attach2.getFullPath (files_list[n - 1])).st_size <= os.stat (attach2.getFullPath (files_list[n])).st_size)
def testRenameError (self): page = self.wikiroot[u"Страница 2"] attach = Attachment (page) with open (attach.getFullPath ("111.txt", True), "w"): try: page.title = u"Новое имя" except OSError: pass else: self.assertTrue (os.path.exists (self.wikiroot[u"Новое имя"].path)) self.assertEqual (self.wikiroot[u"Страница 2"], None)
def testRenameError(self): page = self.wikiroot[u"Страница 2"] attach = Attachment(page) with open(attach.getFullPath("111.txt", True), "w"): try: page.title = u"Новое имя" except OSError: pass else: self.assertTrue( os.path.exists(self.wikiroot[u"Новое имя"].path)) self.assertEqual(self.wikiroot[u"Страница 2"], None)
def test_attach_touch_write(self): self._application.wikiroot = self.wikiroot self._application.selectedPage = self.page_01 self._attach_files(self.page_01, ['add.png']) watcher = AttachWatcher(self._application, self._period_ms) watcher.initialize() attach = Attachment(self.page_01) with open(attach.getFullPath('add.png'), 'w'): pass wx.MilliSleep(500) self.myYield() watcher.clear() self.assertEqual(self._eventCount, 0)
def test_attach_touch_write(self): self._application.wikiroot = self.wikiroot self._application.selectedPage = self.page_01 self._attach_files(self.page_01, ['add.png']) watcher = AttachWatcher(self._application, self._period_ms) watcher.initialize() attach = Attachment(self.page_01) with open(attach.getFullPath('add.png'), 'w'): pass wx.MilliSleep(500) self.myYield() watcher.clear() self.assertEqual(self._eventCount, 0)
def _prepareDialog(self): attach = Attachment(self._page) attachList = [self.createFileLink(fname) for fname in attach.getAttachRelative() if (not fname.startswith(u'__') or os.path.isfile(attach.getFullPath(fname)))] attachList.sort() self._dlg.linkText.AppendItems(attachList) if not self._dlg.comment: self._dlg.comment = self._selectedString if not self._dlg.link: self._dlg.link = self._findLink()
def _prepareDialog(self): attach = Attachment(self._page) attachList = [ self.createFileLink(fname) for fname in attach.getAttachRelative() if (not fname.startswith(u'__') or os.path.isfile(attach.getFullPath(fname))) ] attachList.sort() self._dlg.linkText.AppendItems(attachList) if not self._dlg.comment: self._dlg.comment = self._selectedString if not self._dlg.link: self._dlg.link = self._findLink()
def testRemoveError1(self): page = self.rootwiki[u"Страница 2"] pagepath = page.path attach = Attachment(page) attachname = u"add.png" attach.attach([os.path.join(u"../test/samplefiles", attachname)]) with open(attach.getFullPath("111.txt", True), "w") as fp: try: page.remove() except IOError: self.assertTrue(os.path.exists(pagepath)) self.assertNotEqual(self.rootwiki[u"Страница 2"], None) self.assertTrue(os.path.exists(self.rootwiki[u"Страница 2"].path)) self.assertEqual(len(self.rootwiki), 3) self.assertNotEqual(self.rootwiki[u"Страница 2/Страница 3"], None) self.assertNotEqual(self.rootwiki[u"Страница 2/Страница 3/Страница 4"], None) else: self.assertEqual(self.rootwiki[u"Страница 2"], None) self.assertFalse(os.path.exists(pagepath))
def _prepareDialog(self): attach = Attachment(self._page) attachList = [ self.createFileLink(fname) for fname in attach.getAttachRelative() if (not fname.startswith(u'__') or os.path.isfile(attach.getFullPath(fname))) ] attachList.sort() self._dlg.linkText.AppendItems(attachList) if not self._dlg.comment: self._dlg.comment = self._selectedString if not self._dlg.link: self._dlg.link = self._findLink() if self._isPageLink(self._dlg.link): prefix = 'page://' uid = self._dlg.link[len(prefix):] page = PageUidDepot(self._page.root)[uid] if page is not None and not self._selectedString: self._dlg.comment = page.display_title