emmental/lib/test_data.py

115 lines
3.9 KiB
Python

# Copyright 2019 (c) Anna Schumaker.
from . import data
import os
import pathlib
import unittest
import xdg.BaseDirectory
xdg_data_home = pathlib.Path(xdg.BaseDirectory.xdg_data_home)
testing_data = xdg_data_home / "emmental-testing"
testing_file = testing_data / "test.file"
testing_temp = testing_data / ".test.file.tmp"
class TestDataModule(unittest.TestCase):
def tearDown(self):
testing_file.unlink(missing_ok=True)
def test_dir(self):
self.assertEqual(data.emmental_data, testing_data)
self.assertTrue(testing_data.exists())
self.assertTrue(testing_data.is_dir())
self.assertEqual(data.READ, 'rb')
self.assertEqual(data.WRITE, 'wb')
self.assertEqual(data.READ_TEXT, 'r')
self.assertEqual(data.WRITE_TEXT, 'w')
def test_data_file_init(self):
f = data.DataFile("test.file", data.READ)
self.assertEqual(f.path, testing_file)
self.assertEqual(f.temp, testing_temp)
self.assertFalse(f.exists())
self.assertEqual(f.mode, data.READ)
self.assertIsNone(f.file)
f = data.DataFile("test.file", data.WRITE)
self.assertEqual(f.temp, testing_temp)
self.assertFalse(f.exists())
self.assertEqual(f.mode, data.WRITE)
self.assertIsNone(f.file)
def test_data_file_read_write(self):
test = [ "test", "saving", "a", "list" ]
with data.DataFile("test.file", data.READ) as f:
self.assertIsNone(f.file)
f.pickle(test)
self.assertIsNone(f.unpickle())
f.remove()
self.assertFalse(f.exists())
with data.DataFile("test.file", data.WRITE) as f:
self.assertIsNotNone(f.file)
self.assertEqual(pathlib.Path(f.file.name), testing_temp)
self.assertFalse(f.exists())
self.assertTrue(testing_temp.exists())
f.pickle(test)
f.remove()
self.assertFalse(f.exists())
self.assertIsNone(f.file)
self.assertFalse(testing_temp.exists())
self.assertTrue(f.exists())
with data.DataFile("test.file", data.READ) as f:
self.assertIsNotNone(f.file)
self.assertEqual(pathlib.Path(f.file.name), testing_file)
lst = f.unpickle()
self.assertEqual(test, lst)
f.remove()
self.assertTrue(f.exists())
f = data.DataFile("test.file", data.READ)
f.remove()
self.assertFalse(f.exists())
def test_data_file_read_write_text(self):
test = "test saving a string"
with data.DataFile("test.file", data.READ_TEXT) as f:
self.assertIsNone(f.file)
f.write(test)
self.assertIsNone(f.read())
f.remove()
self.assertFalse(f.exists())
with data.DataFile("test.file", data.WRITE_TEXT) as f:
self.assertIsNotNone(f.file)
self.assertEqual(pathlib.Path(f.file.name), testing_temp)
self.assertFalse(f.exists())
self.assertTrue(testing_temp.exists())
f.write(test)
f.remove()
self.assertFalse(f.exists())
self.assertIsNone(f.file)
self.assertFalse(testing_temp.exists())
self.assertTrue(f.exists())
with data.DataFile("test.file", data.READ_TEXT) as f:
self.assertIsNotNone(f.file)
self.assertEqual(pathlib.Path(f.file.name), testing_file)
txt = f.read()
self.assertEqual(test, txt)
f.remove()
self.assertTrue(f.exists())
f = data.DataFile("test.file", data.READ)
f.remove()
self.assertFalse(f.exists())
def test_data_file_exception(self):
f = data.DataFile("test.file", data.WRITE_TEXT)
with self.assertRaises(Exception):
with f:
f.write("test")
raise Exception("Test Exception")
self.assertFalse(f.exists())