def test_enabled_uninstalled(self): dsb = DummyStorageBackend() getSiteManager().registerUtility(dsb, IStorageBackend, name='dummy_storage') utilities = queryUtility(IUtilityRegistry, 'repodono.storage.backends') utilities.enable('dummy_storage') vocab = queryUtility(IVocabularyFactory, name='repodono.storage.backends')(None) self.assertEqual( vocab.getTermByToken('dummy_storage').token, 'dummy_storage') getSiteManager().unregisterUtility(dsb, IStorageBackend, name='dummy_storage') vocab = queryUtility(IVocabularyFactory, name='repodono.storage.backends')(None) self.assertEqual(list(vocab), []) # registry should be untouched at this point registry = queryUtility(IRegistry) self.assertEqual(registry['repodono.storage.backends'], [u'dummy_storage']) # shouldn't break anything. utilities.disable('unrelated') self.assertEqual(list(vocab), []) # The bad value is no longer stored. self.assertEqual(registry['repodono.storage.backends'], [])
class DummyStorageBackendTestCase(unittest.TestCase): maxDiff = None def setUp(self): self.backend = DummyStorageBackend() def tearDown(self): DummyStorageData.teardown() def test_teardown(self): orig = self.backend._data self.assertIs(orig, DummyStorageData._data) self.backend.install(Item(id='testdummy')) self.assertIn('testdummy', DummyStorageData._data) DummyStorageData.teardown() self.assertIs(orig, DummyStorageData._data) self.assertNotIn('testdummy', DummyStorageData._data) def test_backend_loader(self): self.backend.load_dir('test', path('testrepo')) self.assertEqual( self.backend._data, { 'test': [{ 'file1': 'file1-rev0\nThis is a test file.\n', 'file2': 'file2-rev0\nThis is also a test file.\n' }, { 'file1': 'file1-rev1\nThis test file has changed.\n', 'file2': 'file2-rev0\nThis is also a test file.\n', 'file3': 'A new test file.\n' }, { 'dir1/f1': 'File 1 in dir1\n', 'dir1/f2': 'File 2 in dir1\n', 'file2': 'file2-rev0\nThis is also a test file.\n', 'file3': 'This is to note that file1 was removed.\n' }, { 'dir1/dir2/f1': 'first file in dir1\n', 'dir1/dir2/f2': 'second file in dir2\n', 'dir1/dir3/dir4/dir5/info': 'This is some quite nested file.\n', 'dir1/f1': 'File 1 in dir1\n', 'dir1/f2': 'File 2 in dir1\n', 'file1': 'file2-rev0\nThis is also a test file.\n', 'file3': 'This is to note that file1 was removed.\n' }] })
def test_vocabulary_utilities(self): getSiteManager().registerUtility(DummyStorageBackend(), IStorageBackend, name='dummy_storage') utilities = queryUtility(IUtilityRegistry, 'repodono.storage.backends') utilities.enable('dummy_storage') vocab = queryUtility(IVocabularyFactory, name='repodono.storage.backends')(None) self.assertEqual( vocab.getTermByToken('dummy_storage').token, 'dummy_storage')
class DummyStorageBackendTestCase(unittest.TestCase): maxDiff = None def setUp(self): self.backend = DummyStorageBackend() def tearDown(self): DummyStorageData.teardown() def test_teardown(self): orig = self.backend._data self.assertIs(orig, DummyStorageData._data) self.backend.install(Item(id='testdummy')) self.assertIn('testdummy', DummyStorageData._data) DummyStorageData.teardown() self.assertIs(orig, DummyStorageData._data) self.assertNotIn('testdummy', DummyStorageData._data) def test_backend_loader(self): self.backend.load_dir('test', path('testrepo')) self.assertEqual(self.backend._data, {'test': [ {'file1': 'file1-rev0\nThis is a test file.\n', 'file2': 'file2-rev0\nThis is also a test file.\n'}, {'file1': 'file1-rev1\nThis test file has changed.\n', 'file2': 'file2-rev0\nThis is also a test file.\n', 'file3': 'A new test file.\n'}, {'dir1/f1': 'File 1 in dir1\n', 'dir1/f2': 'File 2 in dir1\n', 'file2': 'file2-rev0\nThis is also a test file.\n', 'file3': 'This is to note that file1 was removed.\n'}, {'dir1/dir2/f1': 'first file in dir1\n', 'dir1/dir2/f2': 'second file in dir2\n', 'dir1/dir3/dir4/dir5/info': 'This is some quite nested file.\n', 'dir1/f1': 'File 1 in dir1\n', 'dir1/f2': 'File 2 in dir1\n', 'file1': 'file2-rev0\nThis is also a test file.\n', 'file3': 'This is to note that file1 was removed.\n'} ]})
def test_vocabulary_registry(self): getSiteManager().registerUtility(DummyStorageBackend(), IStorageBackend, name='dummy_storage') vocab = queryUtility(IVocabularyFactory, name='repodono.storage.backends.available')(None) self.assertEqual( vocab.getTermByToken('dummy_storage').token, 'dummy_storage') vocab = queryUtility(IVocabularyFactory, name='repodono.storage.backends')(None) self.assertEqual(list(vocab), []) registry = queryUtility(IRegistry) registry['repodono.storage.backends'] = ['dummy_storage'] vocab = queryUtility(IVocabularyFactory, name='repodono.storage.backends')(None) self.assertEqual( vocab.getTermByToken('dummy_storage').token, 'dummy_storage')
def setUp(self): self.backend = DummyStorageBackend() self.backend.load_dir('dummy_a', path('testrepo'))
class DummyStorageTestCase(unittest.TestCase): def setUp(self): self.backend = DummyStorageBackend() self.backend.load_dir('dummy_a', path('testrepo')) def tearDown(self): DummyStorageData.teardown() def test_acquire_fail(self): item = Item(id='not_installed') self.assertRaises(StorageNotFoundError, self.backend.acquire, item) def test_acquire_new_install(self): item = Item(id='new') self.backend.install(item) storage = self.backend.acquire(item) self.assertEqual(item, storage.context) self.assertEqual(storage.rev, '0') self.assertEqual(storage.files(), []) self.assertEqual(storage.listdir(''), []) def test_acquire_basic(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertEqual(item, storage.context) self.assertEqual(storage.rev, '3') self.assertEqual(storage.shortrev, '3') self.assertEqual(storage.file('file1'), 'file2-rev0\nThis is also a test file.\n') self.assertEqual(storage.file('dir1/dir2/f2'), 'second file in dir2\n') self.assertEqual(storage.files(), [ 'dir1/dir2/f1', 'dir1/dir2/f2', 'dir1/dir3/dir4/dir5/info', 'dir1/f1', 'dir1/f2', 'file1', 'file3', ]) self.assertEqual(storage.basename('dir1/dir3/dir4/dir5/info'), 'info') self.assertEqual(storage.listdir(''), ['dir1', 'file1', 'file3']) self.assertEqual(storage.listdir('dir1'), ['dir2', 'dir3', 'f1', 'f2']) self.assertEqual(storage.listdir('dir1/dir2'), ['f1', 'f2']) with self.assertRaises(PathNotFoundError): storage.listdir('dir1/no/such/dir') # this implementation will raise an error if trying to access a # file as directory. with self.assertRaises(PathNotDirError): storage.listdir('file1') # acquire the detailed information associated with this path. self.assertEqual( storage.pathinfo('dir1'), { 'basename': 'dir1', 'size': 0, 'type': 'folder', 'date': '2005-03-18 23:12:19', }) # ditto for a file self.assertEqual( storage.pathinfo('file1'), { 'basename': 'file1', 'size': 37, 'type': 'file', 'date': '2005-03-18 23:12:19', }) # or something nested deeper self.assertEqual( storage.pathinfo('dir1/dir3/dir4/dir5/info'), { 'basename': 'info', 'size': 32, 'type': 'file', 'date': '2005-03-18 23:12:19', }) storage.checkout('0') self.assertEqual(storage.rev, '0') self.assertEqual(storage.file('file1'), 'file1-rev0\nThis is a test file.\n') self.assertEqual(storage.files(), ['file1', 'file2']) self.assertEqual(storage.listdir(''), ['file1', 'file2']) with self.assertRaises(PathNotFoundError): storage.listdir('dir1') with self.assertRaises(PathNotFoundError): storage.pathinfo('dir1') self.assertEqual( storage.pathinfo('file1'), { 'basename': 'file1', 'size': 32, 'type': 'file', 'date': '2005-03-18 14:58:31', }) def test_log_multi(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) log_entries = storage.log(storage.rev, 10) self.assertEqual(log_entries, [{ 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 23:12:19', 'desc': 'A:dir1/dir2/f1\nA:dir1/dir2/f2\n' 'A:dir1/dir3/dir4/dir5/info\nA:file1\nD:file2', 'node': '3' }, { 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 20:27:43', 'desc': 'A:dir1/f1\nA:dir1/f2\nC:file3\nD:file1', 'node': '2' }, { 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 17:43:07', 'desc': 'A:file3\nC:file1', 'node': '1' }, { 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 14:58:31', 'desc': 'A:file1\nA:file2', 'node': '0' }]) def test_log_single(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) log_entries = storage.log('1', 1) self.assertEqual(log_entries, [{ 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 17:43:07', 'desc': 'A:file3\nC:file1', 'node': '1' }]) def test_bad_revision(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertRaises(RevisionNotFoundError, storage.checkout, '123') self.assertRaises(RevisionNotFoundError, storage.checkout, 'abc') self.assertRaises(RevisionNotFoundError, storage.checkout, '4') self.assertRaises(RevisionNotFoundError, storage.checkout, 3) def test_bad_path(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) with self.assertRaises(PathNotFoundError): storage.file('no/such/path') def test_datetime(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertEqual(storage._datetime(), '2005-03-18 23:12:19') storage.checkout('0') self.assertEqual(storage._datetime(), '2005-03-18 14:58:31') def test_validate_rev_failure(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) with self.assertRaises(RevisionNotFoundError): storage._validate_rev('0') def test_subrepo(self): self.backend.load_dir('external_root', path('external_root')) self.backend.load_dir('external_test', path('external_test')) item = Item(id='external_root') storage = self.backend.acquire(item) self.assertEqual( storage.file('external_test'), { u'location': u'http://nohost/plone/workspace/external_test', # u'path': '', # this is basically not set. Correct? u'rev': u'0', u'type': u'subrepo', }) self.assertEqual( storage.file('external_test/test.txt'), { u'location': u'http://nohost/plone/workspace/external_test', u'path': 'test.txt', u'rev': u'0', u'type': u'subrepo', }) self.assertEqual( storage.pathinfo('external_test'), { u'location': u'http://nohost/plone/workspace/external_test', u'rev': u'0', u'type': u'subrepo', }) def test_branches(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertEqual(storage.branches(), ( ('default', '4'), ('develop', '1'), )) def test_tags(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertEqual(storage.tags(), ( ('initial', '0'), ('release', '3'), ))
def setUp(self): self.backend = DummyStorageBackend()
class DummyStorageTestCase(unittest.TestCase): def setUp(self): self.backend = DummyStorageBackend() self.backend.load_dir('dummy_a', path('testrepo')) def tearDown(self): DummyStorageData.teardown() def test_acquire_fail(self): item = Item(id='not_installed') self.assertRaises(StorageNotFoundError, self.backend.acquire, item) def test_acquire_new_install(self): item = Item(id='new') self.backend.install(item) storage = self.backend.acquire(item) self.assertEqual(item, storage.context) self.assertEqual(storage.rev, '0') self.assertEqual(storage.files(), []) self.assertEqual(storage.listdir(''), []) def test_acquire_basic(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertEqual(item, storage.context) self.assertEqual(storage.rev, '3') self.assertEqual(storage.shortrev, '3') self.assertEqual( storage.file('file1'), 'file2-rev0\nThis is also a test file.\n') self.assertEqual( storage.file('dir1/dir2/f2'), 'second file in dir2\n') self.assertEqual(storage.files(), [ 'dir1/dir2/f1', 'dir1/dir2/f2', 'dir1/dir3/dir4/dir5/info', 'dir1/f1', 'dir1/f2', 'file1', 'file3', ]) self.assertEqual(storage.basename('dir1/dir3/dir4/dir5/info'), 'info') self.assertEqual(storage.listdir(''), ['dir1', 'file1', 'file3']) self.assertEqual(storage.listdir('dir1'), ['dir2', 'dir3', 'f1', 'f2']) self.assertEqual(storage.listdir('dir1/dir2'), ['f1', 'f2']) with self.assertRaises(PathNotFoundError): storage.listdir('dir1/no/such/dir') # this implementation will raise an error if trying to access a # file as directory. with self.assertRaises(PathNotDirError): storage.listdir('file1') # acquire the detailed information associated with this path. self.assertEqual(storage.pathinfo('dir1'), { 'basename': 'dir1', 'size': 0, 'type': 'folder', 'date': '2005-03-18 23:12:19', }) # ditto for a file self.assertEqual(storage.pathinfo('file1'), { 'basename': 'file1', 'size': 37, 'type': 'file', 'date': '2005-03-18 23:12:19', }) # or something nested deeper self.assertEqual(storage.pathinfo('dir1/dir3/dir4/dir5/info'), { 'basename': 'info', 'size': 32, 'type': 'file', 'date': '2005-03-18 23:12:19', }) storage.checkout('0') self.assertEqual(storage.rev, '0') self.assertEqual( storage.file('file1'), 'file1-rev0\nThis is a test file.\n') self.assertEqual(storage.files(), ['file1', 'file2']) self.assertEqual(storage.listdir(''), ['file1', 'file2']) with self.assertRaises(PathNotFoundError): storage.listdir('dir1') with self.assertRaises(PathNotFoundError): storage.pathinfo('dir1') self.assertEqual(storage.pathinfo('file1'), { 'basename': 'file1', 'size': 32, 'type': 'file', 'date': '2005-03-18 14:58:31', }) def test_log_multi(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) log_entries = storage.log(storage.rev, 10) self.assertEqual(log_entries, [{ 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 23:12:19', 'desc': 'A:dir1/dir2/f1\nA:dir1/dir2/f2\n' 'A:dir1/dir3/dir4/dir5/info\nA:file1\nD:file2', 'node': '3' }, { 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 20:27:43', 'desc': 'A:dir1/f1\nA:dir1/f2\nC:file3\nD:file1', 'node': '2' }, { 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 17:43:07', 'desc': 'A:file3\nC:file1', 'node': '1' }, { 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 14:58:31', 'desc': 'A:file1\nA:file2', 'node': '0' }]) def test_log_single(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) log_entries = storage.log('1', 1) self.assertEqual(log_entries, [{ 'author': 'tester <*****@*****.**>', 'date': '2005-03-18 17:43:07', 'desc': 'A:file3\nC:file1', 'node': '1' }]) def test_bad_revision(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertRaises(RevisionNotFoundError, storage.checkout, '123') self.assertRaises(RevisionNotFoundError, storage.checkout, 'abc') self.assertRaises(RevisionNotFoundError, storage.checkout, '4') self.assertRaises(RevisionNotFoundError, storage.checkout, 3) def test_bad_path(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) with self.assertRaises(PathNotFoundError): storage.file('no/such/path') def test_datetime(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertEqual(storage._datetime(), '2005-03-18 23:12:19') storage.checkout('0') self.assertEqual(storage._datetime(), '2005-03-18 14:58:31') def test_validate_rev_failure(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) with self.assertRaises(RevisionNotFoundError): storage._validate_rev('0') def test_subrepo(self): self.backend.load_dir('external_root', path('external_root')) self.backend.load_dir('external_test', path('external_test')) item = Item(id='external_root') storage = self.backend.acquire(item) self.assertEqual(storage.file('external_test'), { u'location': u'http://nohost/plone/workspace/external_test', # u'path': '', # this is basically not set. Correct? u'rev': u'0', u'type': u'subrepo', }) self.assertEqual(storage.file('external_test/test.txt'), { u'location': u'http://nohost/plone/workspace/external_test', u'path': 'test.txt', u'rev': u'0', u'type': u'subrepo', }) self.assertEqual(storage.pathinfo('external_test'), { u'location': u'http://nohost/plone/workspace/external_test', u'rev': u'0', u'type': u'subrepo', }) def test_branches(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertEqual(storage.branches(), ( ('default', '4'), ('develop', '1'), )) def test_tags(self): item = Item(id='dummy_a') storage = self.backend.acquire(item) self.assertEqual(storage.tags(), ( ('initial', '0'), ('release', '3'), ))