Files
@ b67173bae3ff
Branch filter:
Location: kallithea/rhodecode/tests/vcs/base.py - annotation
b67173bae3ff
3.6 KiB
text/x-python
changeset comments: attempt to highlight the linked comment
This makes it slightly less confusing to follow a notification link to a page
with a lot of comments.
It is ugly, it seems like it doesn't work reliably, and the fixed top menu makes
target navigation unusable in general...
This makes it slightly less confusing to follow a notification link to a page
with a lot of comments.
It is ugly, it seems like it doesn't work reliably, and the fixed top menu makes
target navigation unusable in general...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 d2a528b60e50 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 402a96fcfa22 | """
Module providing backend independent mixin class. It requires that
InMemoryChangeset class is working properly at backend class.
"""
import os
from rhodecode.lib import vcs
import time
import shutil
import datetime
from rhodecode.lib.vcs.utils.compat import unittest
from conf import SCM_TESTS, get_new_dir
from rhodecode.lib.vcs.nodes import FileNode
class BackendTestMixin(object):
"""
This is a backend independent test case class which should be created
with ``type`` method.
It is required to set following attributes at subclass:
- ``backend_alias``: alias of used backend (see ``vcs.BACKENDS``)
- ``repo_path``: path to the repository which would be created for set of
tests
- ``recreate_repo_per_test``: If set to ``False``, repo would NOT be created
before every single test. Defaults to ``True``.
"""
recreate_repo_per_test = True
@classmethod
def get_backend(cls):
return vcs.get_backend(cls.backend_alias)
@classmethod
def _get_commits(cls):
commits = [
{
'message': u'Initial commit',
'author': u'Joe Doe <joe.doe@example.com>',
'date': datetime.datetime(2010, 1, 1, 20),
'added': [
FileNode('foobar', content='Foobar'),
FileNode('foobar2', content='Foobar II'),
FileNode('foo/bar/baz', content='baz here!'),
],
},
{
'message': u'Changes...',
'author': u'Jane Doe <jane.doe@example.com>',
'date': datetime.datetime(2010, 1, 1, 21),
'added': [
FileNode('some/new.txt', content='news...'),
],
'changed': [
FileNode('foobar', 'Foobar I'),
],
'removed': [],
},
]
return commits
@classmethod
def setUpClass(cls):
Backend = cls.get_backend()
cls.backend_class = Backend
cls.repo_path = get_new_dir(str(time.time()))
cls.repo = Backend(cls.repo_path, create=True)
cls.imc = cls.repo.in_memory_changeset
for commit in cls._get_commits():
for node in commit.get('added', []):
cls.imc.add(FileNode(node.path, content=node.content))
for node in commit.get('changed', []):
cls.imc.change(FileNode(node.path, content=node.content))
for node in commit.get('removed', []):
cls.imc.remove(FileNode(node.path))
cls.tip = cls.imc.commit(message=unicode(commit['message']),
author=unicode(commit['author']),
date=commit['date'])
@classmethod
def tearDownClass(cls):
if not getattr(cls, 'recreate_repo_per_test', False) and \
'VCS_REMOVE_TEST_DIRS' in os.environ:
shutil.rmtree(cls.repo_path)
def setUp(self):
if getattr(self, 'recreate_repo_per_test', False):
self.__class__.setUpClass()
def tearDown(self):
if getattr(self, 'recreate_repo_per_test', False) and \
'VCS_REMOVE_TEST_DIRS' in os.environ:
shutil.rmtree(self.repo_path)
# For each backend create test case class
for alias in SCM_TESTS:
attrs = {
'backend_alias': alias,
}
cls_name = ''.join(('%s base backend test' % alias).title().split())
bases = (BackendTestMixin, unittest.TestCase)
globals()[cls_name] = type(cls_name, bases, attrs)
if __name__ == '__main__':
unittest.main()
|