# HG changeset patch # User cmlenz # Date 1128376823 0 # Node ID ebfe660f7cb19e9ef7dbdd8e30e9dc5fc0fc0fd6 # Parent a22ec8fce6c935890d3498504c02b0e9781c7622 More/better unit tests for `bitten.model.BuildStep`. diff --git a/bitten/model.py b/bitten/model.py --- a/bitten/model.py +++ b/bitten/model.py @@ -513,7 +513,7 @@ FAILURE = 'F' def __init__(self, env, build=None, name=None, description=None, - status=None, started=None, stopped=None, errors=None): + status=None, started=None, stopped=None): """Initialize a new build step with the specified attributes. To actually create this build step in the database, the `insert` method @@ -526,7 +526,7 @@ self.status = status self.started = started self.stopped = stopped - self.errors = errors or [] + self.errors = [] self._exists = False exists = property(fget=lambda self: self._exists) diff --git a/bitten/tests/model.py b/bitten/tests/model.py --- a/bitten/tests/model.py +++ b/bitten/tests/model.py @@ -306,6 +306,7 @@ def test_new(self): step = BuildStep(self.env) + self.assertEqual(False, step.exists) self.assertEqual(None, step.build) self.assertEqual(None, step.name) @@ -313,6 +314,7 @@ step = BuildStep(self.env, build=1, name='test', description='Foo bar', status=BuildStep.SUCCESS) step.insert() + self.assertEqual(True, step.exists) db = self.env.get_db_cnx() cursor = db.cursor() @@ -321,6 +323,23 @@ self.assertEqual((1, 'test', 'Foo bar', BuildStep.SUCCESS, 0, 0), cursor.fetchone()) + def test_insert_with_errors(self): + step = BuildStep(self.env, build=1, name='test', description='Foo bar', + status=BuildStep.SUCCESS) + step.errors += ['Foo', 'Bar'] + step.insert() + self.assertEqual(True, step.exists) + + db = self.env.get_db_cnx() + cursor = db.cursor() + cursor.execute("SELECT build,name,description,status,started,stopped " + "FROM bitten_step") + self.assertEqual((1, 'test', 'Foo bar', BuildStep.SUCCESS, 0, 0), + cursor.fetchone()) + cursor.execute("SELECT message FROM bitten_error ORDER BY orderno") + self.assertEqual(('Foo',), cursor.fetchone()) + self.assertEqual(('Bar',), cursor.fetchone()) + def test_insert_no_build_or_name(self): step = BuildStep(self.env, name='test') self.assertRaises(AssertionError, step.insert) # No build @@ -355,6 +374,23 @@ self.assertEqual(BuildStep.SUCCESS, step.status) self.assertEqual(['Foo', 'Bar'], step.errors) + def test_select(self): + db = self.env.get_db_cnx() + cursor = db.cursor() + cursor.executemany("INSERT INTO bitten_step VALUES (%s,%s,%s,%s,%s,%s)", + [(1, 'test', 'Foo bar', BuildStep.SUCCESS, 0, 0), + (1, 'dist', 'Foo baz', BuildStep.FAILURE, 0, 0)]) + + steps = list(BuildStep.select(self.env, build=1)) + self.assertEqual(1, steps[0].build) + self.assertEqual('test', steps[0].name) + self.assertEqual('Foo bar', steps[0].description) + self.assertEqual(BuildStep.SUCCESS, steps[0].status) + self.assertEqual(1, steps[1].build) + self.assertEqual('dist', steps[1].name) + self.assertEqual('Foo baz', steps[1].description) + self.assertEqual(BuildStep.FAILURE, steps[1].status) + class BuildLogTestCase(unittest.TestCase):