changeset 345:6091ebc82dfc 0.5.x

Ported [359] to 0.5.x.
author cmlenz
date Wed, 12 Apr 2006 14:38:38 +0000
parents 94d5ede55b82
children 2b5d886a248e
files bitten/model.py bitten/tests/model.py
diffstat 2 files changed, 37 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/model.py
+++ b/bitten/model.py
@@ -714,10 +714,11 @@
                        "VALUES (%s,%s,%s,%s)", (self.build, self.step,
                        self.generator, self.orderno))
         id = db.get_last_id(cursor, 'bitten_log')
-        cursor.executemany("INSERT INTO bitten_log_message "
-                           "(log,line,level,message) VALUES (%s,%s,%s,%s)",
-                           [(id, idx, message[0], message[1]) for idx, message
-                            in enumerate(self.messages)])
+        if self.messages:
+            cursor.executemany("INSERT INTO bitten_log_message "
+                               "(log,line,level,message) VALUES (%s,%s,%s,%s)",
+                               [(id, idx, message[0], message[1]) for idx, message
+                                in enumerate(self.messages)])
 
         if handle_ta:
             db.commit()
@@ -844,7 +845,7 @@
                        "(build,step,category,generator) VALUES (%s,%s,%s,%s)",
                        (self.build, self.step, self.category, self.generator))
         id = db.get_last_id(cursor, 'bitten_report')
-        for idx, item in enumerate(self.items):
+        for idx, item in enumerate([item for item in self.items if item]):
             cursor.executemany("INSERT INTO bitten_report_item "
                                "(report,item,name,value) VALUES (%s,%s,%s,%s)",
                                [(id, idx, key, value) for key, value
--- a/bitten/tests/model.py
+++ b/bitten/tests/model.py
@@ -453,6 +453,21 @@
         self.assertEqual((BuildLog.INFO, 'running tests'), cursor.fetchone())
         self.assertEqual((BuildLog.ERROR, 'tests failed'), cursor.fetchone())
 
+    def test_insert_empty(self):
+        log = BuildLog(self.env, build=1, step='test', generator='distutils')
+        log.messages = []
+        log.insert()
+        self.assertNotEqual(None, log.id)
+
+        db = self.env.get_db_cnx()
+        cursor = db.cursor()
+        cursor.execute("SELECT build,step,generator FROM bitten_log "
+                       "WHERE id=%s", (log.id,))
+        self.assertEqual((1, 'test', 'distutils'), cursor.fetchone())
+        cursor.execute("SELECT COUNT(*) FROM bitten_log_message "
+                       "WHERE log=%s", (log.id,))
+        self.assertEqual(0, cursor.fetchone()[0])
+
     def test_insert_no_build_or_step(self):
         log = BuildLog(self.env, step='test')
         self.assertRaises(AssertionError, log.insert) # No build
@@ -605,6 +620,22 @@
                         generator='unittest')
         self.assertRaises(AssertionError, report.insert)
 
+    def test_insert_empty_items(self):
+        report = Report(self.env, build=1, step='test', category='test',
+                        generator='unittest')
+        report.items = [{}, {}]
+        report.insert()
+
+        db = self.env.get_db_cnx()
+        cursor = db.cursor()
+        cursor.execute("SELECT build,step,category,generator "
+                       "FROM bitten_report WHERE id=%s", (report.id,))
+        self.assertEqual((1, 'test', 'test', 'unittest'),
+                         cursor.fetchone())
+        cursor.execute("SELECT COUNT(*) FROM bitten_report_item "
+                       "WHERE report=%s", (report.id,))
+        self.assertEqual(0, cursor.fetchone()[0])
+
     def test_fetch(self):
         db = self.env.get_db_cnx()
         cursor = db.cursor()
Copyright (C) 2012-2017 Edgewall Software