1
from configobj import ConfigObj
10
from turbogears import testutil
14
from loggerhead.controllers import Root
20
testutil.create_request('/')
21
assert 'loggerhead branches' in cherrypy.response.body[0]
24
class BasicTests(object):
26
# setup_method and teardown_method are so i can run the tests with
27
# py.test and take advantage of the error reporting.
28
def setup_method(self, meth):
31
def teardown_method(self, meth):
35
#logging.basicConfig(level=logging.DEBUG)
37
self.old_bzrhome = None
39
def createBranch(self):
40
self.old_bzrhome = bzrlib.osutils.set_or_unset_env('BZR_HOME', '')
41
self.bzrbranch = tempfile.mkdtemp()
42
self.branch = bzrlib.bzrdir.BzrDir.create_branch_convenience(
43
self.bzrbranch, force_new_tree=True)
44
self.tree = self.branch.bzrdir.open_workingtree()
49
branch_name = 'branch'
53
def setUpLoggerhead(self):
54
ini = self.config_template%dict(branch=self.bzrbranch)
56
config = ConfigObj(ini.splitlines())
57
cherrypy.root = Root(config)
60
if self.bzrbranch is not None:
61
shutil.rmtree(self.bzrbranch)
62
bzrlib.osutils.set_or_unset_env('BZR_HOME', self.old_bzrhome)
64
class TestWithSimpleTree(BasicTests):
67
BasicTests.setUp(self)
70
f = open(os.path.join(self.bzrbranch, 'myfilename'), 'w')
71
self.filecontents = ('some\nmultiline\ndata\n'
72
'with<htmlspecialchars\n')
74
f.write(self.filecontents)
77
self.tree.add('myfilename')
78
self.fileid = self.tree.path2id('myfilename')
79
self.msg = 'a very exciting commit message <'
80
self.revid = self.tree.commit(message=self.msg)
82
self.setUpLoggerhead()
85
testutil.create_request('/')
86
link = '<a href="/project/branch">branch</a>'
87
assert link in cherrypy.response.body[0].lower()
89
def test_changes(self):
90
testutil.create_request('/project/branch/changes')
91
assert cgi.escape(self.msg) in cherrypy.response.body[0]
93
def test_changes_search(self):
94
testutil.create_request('/project/branch/changes?q=foo')
95
assert 'Sorry, no results found for your search.' in cherrypy.response.body[0]
97
def test_annotate(self):
98
testutil.create_request('/project/branch/annotate?'
99
+ 'file_id='+self.fileid)
100
for line in self.filecontents.splitlines():
101
assert cgi.escape(line) in cherrypy.response.body[0]
103
def test_inventory(self):
104
testutil.create_request('/project/branch/files')
105
assert 'myfilename' in cherrypy.response.body[0]
107
def test_revision(self):
108
testutil.create_request('/project/branch/revision/' + self.revid)
109
assert 'myfilename' in cherrypy.response.body[0]
111
class TestWithSimpleTreeAndCache(TestWithSimpleTree):
112
config_template = """
116
branch_name = 'branch'
117
folder = '%(branch)s'
118
cachepath = '%(branch)s/cache'
121
class TestEmptyBranch(BasicTests):
124
BasicTests.setUp(self)
126
self.setUpLoggerhead()
128
def test_index(self):
129
testutil.create_request('/')
130
link = '<a href="/project/branch">branch</a>'
131
assert link in cherrypy.response.body[0].lower()
133
def test_changes(self):
134
testutil.create_request('/project/branch/changes')
135
assert 'No revisions!' in cherrypy.response.body[0]
137
class TestEmptyBranchWithCache(TestEmptyBranch):
138
config_template = """
142
branch_name = 'branch'
143
folder = '%(branch)s'
144
cachepath = '%(branch)s/cache'