mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 07:49:11 +03:00
c2af69fdf8
Summary: D13267528 malformed the bookmark store files for testing by deleting a random file. This makes the test flaky since sometimes a non critical file is deleted and the exception is not raised. Therefore, lets malform the store more reliably by truncating all the files in the store. Reviewed By: ikostia Differential Revision: D13271362 fbshipit-source-id: 684ffbcdc59e943476a6acc2c4152bf65cc12e1f
98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
from __future__ import absolute_import
|
|
|
|
import os
|
|
import random
|
|
import shutil
|
|
import tempfile
|
|
import unittest
|
|
|
|
import silenttestrunner
|
|
from mercurial import node
|
|
from mercurial.rust import bookmarkstore
|
|
|
|
|
|
class bookmarkstoretests(unittest.TestCase):
|
|
def setUp(self):
|
|
random.seed(0)
|
|
self._tempdirs = []
|
|
|
|
def tearDown(self):
|
|
for d in self._tempdirs:
|
|
shutil.rmtree(d)
|
|
|
|
def makeTempDir(self):
|
|
tempdir = tempfile.mkdtemp()
|
|
self._tempdirs.append(tempdir)
|
|
return tempdir
|
|
|
|
def testAddingBookmarks(self):
|
|
bmdir = self.makeTempDir()
|
|
bmstore = bookmarkstore.bookmarkstore(bmdir)
|
|
self.assertIsNone(bmstore.lookup_bookmark("not_real"))
|
|
|
|
bmstore.update("test", node.nullid)
|
|
self.assertEquals(
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
bmstore.lookup_bookmark("test"),
|
|
)
|
|
|
|
bmstore.update("test", node.bin("1" * 40))
|
|
self.assertEquals(
|
|
"\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11",
|
|
bmstore.lookup_bookmark("test"),
|
|
)
|
|
|
|
bmstore.remove("test")
|
|
|
|
def testAddingBookmarksToSameNode(self):
|
|
bmdir = self.makeTempDir()
|
|
bmstore = bookmarkstore.bookmarkstore(bmdir)
|
|
|
|
testnode = node.bin("2" * 40)
|
|
self.assertIsNone(bmstore.lookup_node(testnode))
|
|
|
|
bmstore.update("test", testnode)
|
|
bmstore.update("test2", testnode)
|
|
|
|
self.assertEquals(["test2", "test"], bmstore.lookup_node(testnode))
|
|
|
|
bmstore.remove("test2")
|
|
self.assertEquals(["test"], bmstore.lookup_node(testnode))
|
|
|
|
def testMalformedBookmarks(self):
|
|
bmdir = self.makeTempDir()
|
|
bmstore = bookmarkstore.bookmarkstore(bmdir)
|
|
bmstore.update("test", node.bin("1" * 40))
|
|
bmstore.flush()
|
|
|
|
def truncateFilesInDir(d):
|
|
for f in os.listdir(d):
|
|
with open(os.path.join(d, f), "w"):
|
|
pass
|
|
|
|
truncateFilesInDir(bmdir)
|
|
self.assertRaises(IOError, bookmarkstore.bookmarkstore, bmdir)
|
|
|
|
def testLoadingBookmarks(self):
|
|
bmdir = self.makeTempDir()
|
|
bmstore1 = bookmarkstore.bookmarkstore(bmdir)
|
|
bmstore1.update("test", node.bin("1" * 40))
|
|
bmstore1.flush()
|
|
|
|
bmstore2 = bookmarkstore.bookmarkstore(bmdir)
|
|
self.assertEquals(
|
|
"\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11",
|
|
bmstore2.lookup_bookmark("test"),
|
|
)
|
|
|
|
def testFlushingBookmarks(self):
|
|
bmdir = self.makeTempDir()
|
|
bmstore = bookmarkstore.bookmarkstore(bmdir)
|
|
bmstore.update("test", node.bin("1" * 40))
|
|
bmstore.flush()
|
|
self.assertTrue(len(os.listdir(bmdir)) > 0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
silenttestrunner.main(__name__)
|