test_cache.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import unittest
  2. import os
  3. from shutil import rmtree
  4. from copy import copy
  5. from cPickle import dumps
  6. from cache import ADMINISTRATION_FILE, assert_file_exists, to_dir, Cache
  7. d = os.path.realpath('') + '/'
  8. class TestCache(unittest.TestCase):
  9. def setUp(self):
  10. if os.path.exists('baz'):
  11. rmtree('baz')
  12. os.mkdir('baz')
  13. for name in ('foo', 'bar', 'baz'):
  14. f = open('baz/' + name, 'w')
  15. f.write(name)
  16. f.close()
  17. self.c = Cache(files=['foo', 'bar'], root='baz/')
  18. def tearDown(self):
  19. rmtree('baz')
  20. if os.path.exists('cached'):
  21. rmtree('cached')
  22. def test_assert_file_exists(self):
  23. assert_file_exists('baz/foo')
  24. self.assertRaises(IOError, assert_file_exists, 'foobar')
  25. def test_to_dir(self):
  26. self.assertEqual(to_dir(''), d)
  27. self.assertEqual(to_dir('foo'), d)
  28. self.assertEqual(to_dir('foo/'), d + 'foo/')
  29. self.assertEqual(to_dir('foo/bar.txt'), d + 'foo/')
  30. def test___init__(self):
  31. self.assertTrue(hasattr(self.c, 'root'))
  32. self.assertEqual(self.c.root, d + 'baz/')
  33. self.assertTrue(hasattr(self.c, 'files'))
  34. self.assertEqual(self.c.files, [d + 'baz/foo', d + 'baz/bar'])
  35. self.assertTrue(hasattr(self.c, 'cached'))
  36. self.assertEqual(self.c.cached, d + 'cached/')
  37. def test___init___custom_root(self):
  38. c = Cache(root='foo/')
  39. self.assertTrue(hasattr(c, 'root'))
  40. self.assertEqual(c.root, d + 'foo/')
  41. def test___init___custom_cached_dir(self):
  42. c = Cache(cached='foo/')
  43. self.assertTrue(hasattr(c, 'cached'))
  44. self.assertEqual(c.cached, d + 'foo/')
  45. def test___init___non_existant_file(self):
  46. self.assertRaises(IOError, Cache, files=['foo'])
  47. def test_add(self):
  48. self.c.add('baz')
  49. self.assertIn(d + 'baz/baz', self.c.files)
  50. def test_add_non_relative(self):
  51. self.c.add('baz', absolute=True)
  52. self.assertIn('baz', self.c.files)
  53. def test_remove(self):
  54. self.c.remove('foo')
  55. self.assertNotIn(d + 'baz/foo', self.c.files)
  56. def test_remove_non_relative(self):
  57. self.c.remove(d + 'baz/foo', absolute=True)
  58. self.assertNotIn(d + 'baz/foo', self.c.files)
  59. def test_assert_modification_dates_exist(self):
  60. self.c.assert_modification_dates_exist()
  61. self.assertIn(d + 'baz/foo', self.c.modified)
  62. self.assertEqual(self.c.modified[d + 'baz/foo'],
  63. os.path.getmtime('baz/foo'))
  64. modified = copy(self.c.modified)
  65. self.c.assert_modification_dates_exist()
  66. self.assertEqual(self.c.modified, modified)
  67. def test_assert_cached_folder_exist(self):
  68. self.assertFalse(os.path.exists('cached'))
  69. self.c.assert_cached_folder_exist()
  70. self.assertTrue(os.path.exists('cached'))
  71. def test_save_administration(self):
  72. self.c.save_administration()
  73. path = 'cached/' + ADMINISTRATION_FILE
  74. self.assertTrue(os.path.exists(path))
  75. f = open(path, 'r')
  76. pickled = f.read()
  77. f.close()
  78. self.assertEqual(pickled, dumps(self.c.modified))