curds: Add helpful functions to the DataFile
There are cases, mostly during testing, where we might want to check if a file exists or to remove it if it does. Let's add those functions now so we can use them. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
60f56ba3b7
commit
c28e06730b
|
@ -22,7 +22,7 @@ class DataFile:
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
if self.mode == WRITE:
|
if self.mode == WRITE:
|
||||||
self.file = open(self.temp, self.mode)
|
self.file = open(self.temp, self.mode)
|
||||||
elif self.mode == READ and os.path.exists(self.path):
|
elif self.mode == READ and self.exists():
|
||||||
self.file = open(self.path, self.mode)
|
self.file = open(self.path, self.mode)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
@ -34,10 +34,19 @@ class DataFile:
|
||||||
os.rename(self.temp, self.path)
|
os.rename(self.temp, self.path)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def exists(self):
|
||||||
|
return os.path.exists(self.path)
|
||||||
|
|
||||||
def pickle(self, obj):
|
def pickle(self, obj):
|
||||||
if self.file:
|
if self.file:
|
||||||
pickle.dump(obj, self.file, pickle.HIGHEST_PROTOCOL)
|
pickle.dump(obj, self.file, pickle.HIGHEST_PROTOCOL)
|
||||||
|
|
||||||
|
def remove(self):
|
||||||
|
if not self.file and self.exists():
|
||||||
|
os.remove(self.path)
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def unpickle(self):
|
def unpickle(self):
|
||||||
if self.file:
|
if self.file:
|
||||||
return pickle.load(self.file)
|
return pickle.load(self.file)
|
||||||
|
|
|
@ -25,13 +25,13 @@ class TestDataModule(unittest.TestCase):
|
||||||
f = data.DataFile("test.file", data.READ)
|
f = data.DataFile("test.file", data.READ)
|
||||||
self.assertEqual(f.path, testing_file)
|
self.assertEqual(f.path, testing_file)
|
||||||
self.assertEqual(f.temp, testing_temp)
|
self.assertEqual(f.temp, testing_temp)
|
||||||
self.assertFalse(os.path.exists(testing_file))
|
self.assertFalse(f.exists())
|
||||||
self.assertEqual(f.mode, data.READ)
|
self.assertEqual(f.mode, data.READ)
|
||||||
self.assertIsNone(f.file)
|
self.assertIsNone(f.file)
|
||||||
|
|
||||||
f = data.DataFile("test.file", data.WRITE)
|
f = data.DataFile("test.file", data.WRITE)
|
||||||
self.assertEqual(f.temp, testing_temp)
|
self.assertEqual(f.temp, testing_temp)
|
||||||
self.assertFalse(os.path.exists(testing_file))
|
self.assertFalse(f.exists())
|
||||||
self.assertEqual(f.mode, data.WRITE)
|
self.assertEqual(f.mode, data.WRITE)
|
||||||
self.assertIsNone(f.file)
|
self.assertIsNone(f.file)
|
||||||
|
|
||||||
|
@ -41,20 +41,31 @@ class TestDataModule(unittest.TestCase):
|
||||||
self.assertIsNone(f.file)
|
self.assertIsNone(f.file)
|
||||||
f.pickle(test)
|
f.pickle(test)
|
||||||
self.assertIsNone(f.unpickle())
|
self.assertIsNone(f.unpickle())
|
||||||
|
self.assertFalse(f.remove())
|
||||||
|
self.assertTrue(f.exists())
|
||||||
|
|
||||||
with data.DataFile("test.file", data.WRITE) as f:
|
with data.DataFile("test.file", data.WRITE) as f:
|
||||||
self.assertIsNotNone(f.file)
|
self.assertIsNotNone(f.file)
|
||||||
self.assertEqual(f.file.name, testing_temp)
|
self.assertEqual(f.file.name, testing_temp)
|
||||||
self.assertFalse(os.path.exists(testing_file))
|
self.assertFalse(f.exists())
|
||||||
self.assertTrue(os.path.exists(testing_temp))
|
self.assertTrue(os.path.exists(testing_temp))
|
||||||
f.pickle(test)
|
f.pickle(test)
|
||||||
|
self.assertFalse(f.remove())
|
||||||
|
self.assertTrue(f.exists())
|
||||||
|
|
||||||
self.assertIsNone(f.file)
|
self.assertIsNone(f.file)
|
||||||
self.assertFalse(os.path.exists(testing_temp))
|
self.assertFalse(os.path.exists(testing_temp))
|
||||||
self.assertTrue(os.path.exists(testing_file))
|
self.assertTrue(f.exists())
|
||||||
|
|
||||||
with data.DataFile("test.file", data.READ) as f:
|
with data.DataFile("test.file", data.READ) as f:
|
||||||
self.assertIsNotNone(f.file)
|
self.assertIsNotNone(f.file)
|
||||||
self.assertEqual(f.file.name, testing_file)
|
self.assertEqual(f.file.name, testing_file)
|
||||||
lst = f.unpickle()
|
lst = f.unpickle()
|
||||||
self.assertEqual(test, lst)
|
self.assertEqual(test, lst)
|
||||||
|
self.assertFalse(f.remove())
|
||||||
|
self.assertTrue(f.exists())
|
||||||
|
|
||||||
|
f = data.DataFile("test.file", data.READ)
|
||||||
|
self.assertTrue(f.remove())
|
||||||
|
self.assertFalse(f.exists())
|
||||||
|
self.assertFalse(f.remove())
|
||||||
|
|
Loading…
Reference in New Issue