Mercurial > bitten > bitten-test
changeset 262:2c3a1dd67c09
Unit tests for `bitten.queue.collect_changes()`.
author | cmlenz |
---|---|
date | Thu, 06 Oct 2005 12:17:49 +0000 |
parents | c9212b342c7f |
children | 688501d1d342 |
files | bitten/tests/queue.py bitten/trac_ext/templates/bitten_config.cs bitten/trac_ext/web_ui.py |
diffstat | 3 files changed, 103 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/bitten/tests/queue.py +++ b/bitten/tests/queue.py @@ -12,12 +12,110 @@ import tempfile import unittest -from trac.test import EnvironmentStub +from trac.test import EnvironmentStub, Mock from bitten.model import BuildConfig, TargetPlatform, Build, BuildStep, schema -from bitten.queue import BuildQueue +from bitten.queue import BuildQueue, collect_changes from bitten.util import archive +class CollectChangesTestCase(unittest.TestCase): + """ + Unit tests for the `bitten.queue.collect_changes` function. + """ + + def setUp(self): + self.env = EnvironmentStub() + self.env.path = tempfile.mkdtemp() + db = self.env.get_db_cnx() + cursor = db.cursor() + for table in schema: + for stmt in db.to_sql(table): + cursor.execute(stmt) + self.config = BuildConfig(self.env, name='test', path='somepath') + self.config.insert(db=db) + self.platform = TargetPlatform(self.env, config='test', name='Foo') + self.platform.insert(db=db) + db.commit() + + def tearDown(self): + shutil.rmtree(self.env.path) + + def test_stop_on_copy(self): + self.env.get_repository = lambda authname=None: Mock( + get_node=lambda path, rev=None: Mock( + get_history=lambda: [('otherpath', 123, 'copy')] + ), + normalize_path=lambda path: path + ) + + retval = list(collect_changes(self.env.get_repository(), self.config)) + self.assertEqual(0, len(retval)) + + def test_stop_on_minrev(self): + self.env.get_repository = lambda authname=None: Mock( + get_node=lambda path, rev=None: Mock( + get_entries=lambda: [Mock(), Mock()], + get_history=lambda: [('somepath', 123, 'edit'), + ('somepath', 121, 'edit'), + ('somepath', 120, 'edit')] + ), + normalize_path=lambda path: path, + rev_older_than=lambda rev1, rev2: rev1 < rev2 + ) + + self.config.min_rev = 123 + self.config.update() + + retval = list(collect_changes(self.env.get_repository(), self.config)) + self.assertEqual(1, len(retval)) + self.assertEqual(123, retval[0][1]) + + def test_skip_until_maxrev(self): + self.env.get_repository = lambda authname=None: Mock( + get_node=lambda path, rev=None: Mock( + get_entries=lambda: [Mock(), Mock()], + get_history=lambda: [('somepath', 123, 'edit'), + ('somepath', 121, 'edit'), + ('somepath', 120, 'edit')] + ), + normalize_path=lambda path: path, + rev_older_than=lambda rev1, rev2: rev1 < rev2 + ) + + self.config.max_rev=121 + self.config.update() + + retval = list(collect_changes(self.env.get_repository(), self.config)) + self.assertEqual(2, len(retval)) + self.assertEqual(121, retval[0][1]) + self.assertEqual(120, retval[1][1]) + + def test_skip_empty_dir(self): + def _mock_get_node(path, rev=None): + if rev and rev == 121: + return Mock( + get_entries=lambda: [] + ) + else: + return Mock( + get_entries=lambda: [Mock(), Mock()], + get_history=lambda: [('somepath', 123, 'edit'), + ('somepath', 121, 'edit'), + ('somepath', 120, 'edit')] + ) + + self.env.get_repository = lambda authname=None: Mock( + get_node=_mock_get_node, + normalize_path=lambda path: path, + rev_older_than=lambda rev1, rev2: rev1 < rev2 + ) + + retval = list(collect_changes(self.env.get_repository(), self.config)) + self.assertEqual(2, len(retval)) + self.assertEqual(123, retval[0][1]) + self.assertEqual(120, retval[1][1]) + + class BuildQueueTestCase(unittest.TestCase): def setUp(self): @@ -202,6 +300,7 @@ def suite(): suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(CollectChangesTestCase, 'test')) suite.addTest(unittest.makeSuite(BuildQueueTestCase, 'test')) return suite
--- a/bitten/trac_ext/templates/bitten_config.cs +++ b/bitten/trac_ext/templates/bitten_config.cs @@ -64,7 +64,7 @@ /if ?></div><strong class="status"><?cs if:build.status == 'completed' ?>Success<?cs elif:build.status == 'failed' ?>Failed<?cs - elif:build.status == 'in-progress' ?>In-progress<?cs + elif:build.status == 'in progress' ?>In-progress<?cs /if ?></strong><?cs else ?><strong><?cs var:build.platform ?></strong> <p class="nobuild">No build yet</p><?cs
--- a/bitten/trac_ext/web_ui.py +++ b/bitten/trac_ext/web_ui.py @@ -356,7 +356,7 @@ chgset = repos.get_changeset(rev) req.hdf[prefix + '.youngest_rev'] = { 'id': rev, 'href': self.env.href.changeset(rev), - 'author': escape(chgset.author), + 'author': escape(chgset.author) or 'anonymous', 'date': format_datetime(chgset.date), 'message': wiki_to_oneliner( shorten_line(chgset.message), self.env) @@ -724,7 +724,6 @@ path = posixpath.join(path, part) if not path in cache: try: - self.log.debug('Cache miss for "%s" (%s)' % (path, m.group(0))) repos.get_node(posixpath.join(config.path, path), build.rev) cache[path] = True