* src/gramps_main.py (undo): Dont emit "database-changed"

* src/plugins/plugins/TestcaseGenerator.py: Added option to generate a new transaction for every change on the database. Useful for UNDO and signal testing.


svn: r4361
This commit is contained in:
Martin Hawlisch 2005-04-14 13:18:20 +00:00
parent 680c20e65e
commit c359826710
3 changed files with 48 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2005-04-14 Martin Hawlisch <Martin.Hawlisch@gmx.de>
* src/gramps_main.py (undo): Dont emit "database-changed"
* src/plugins/plugins/TestcaseGenerator.py: Added option to generate
a new transaction for every change on the database. Useful for UNDO
and signal testing.
2005-04-13 Don Allingham <don@gramps-project.org>
* src/EditSource.py: allow double click on reference to bring up the referece
editor

View File

@ -515,7 +515,6 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
if self.active_person:
p = self.db.get_person_from_handle(self.active_person.get_handle())
self.change_active_person(p)
self.emit('database-changed',(self.db,))
self.undo_active = False
def exit_and_undo(self,*args):

View File

@ -84,6 +84,10 @@ class TestcaseGenerator:
self.check_persons.set_active(True)
self.top.vbox.pack_start(self.check_persons,0,0,5)
self.check_trans = gtk.CheckButton( _("Don't block transactions"))
self.check_trans.set_active(False)
self.top.vbox.pack_start(self.check_trans,0,0,5)
self.entry_count = gtk.Entry()
self.entry_count.set_text("2000")
self.top.vbox.pack_start(self.entry_count,0,0,5)
@ -96,14 +100,15 @@ class TestcaseGenerator:
response = self.top.run()
bugs = self.check_bugs.get_active()
persons = self.check_persons.get_active()
multiple_trans = self.check_trans.get_active()
person_count = int(self.entry_count.get_text())
self.top.destroy()
if response == gtk.RESPONSE_OK:
self.run_generator(bugs,persons,person_count)
self.run_generator(bugs,persons,person_count,multiple_trans)
def run_generator( self, generate_bugs = 1, generate_families = 1, generate_max_persons = 2000):
def run_generator( self, generate_bugs = 1, generate_families = 1, generate_max_persons = 2000, multiple_transactions=False):
title = "%s - GRAMPS" % _("Generate testcases")
self.top = gtk.Window()
self.top.set_title(title)
@ -123,9 +128,13 @@ class TestcaseGenerator:
self.max_person_count = generate_max_persons
self.multiple_transactions = multiple_transactions
self.transaction_count = 0;
self.trans = self.db.transaction_begin()
self.trans.set_batch(True)
self.db.disable_signals()
if not self.multiple_transactions:
self.trans.set_batch(True)
self.db.disable_signals()
if generate_bugs:
self.generate_broken_relations()
@ -146,8 +155,9 @@ class TestcaseGenerator:
break
self.db.transaction_commit(self.trans,_("Testcase generator"))
self.db.enable_signals()
self.db.request_rebuild()
if not self.multiple_transactions:
self.db.enable_signals()
self.db.request_rebuild()
self.top.destroy()
@ -166,6 +176,7 @@ class TestcaseGenerator:
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that misses the link to the father
person1_h = self.generate_person(RelLib.Person.MALE,"Broken2",None)
@ -181,6 +192,7 @@ class TestcaseGenerator:
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that misses the link to the mother
person1_h = self.generate_person(RelLib.Person.MALE,"Broken3",None)
@ -196,6 +208,7 @@ class TestcaseGenerator:
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that links to father and mother, but father does not link back
person1_h = self.generate_person(RelLib.Person.MALE,"Broken4",None)
@ -211,6 +224,7 @@ class TestcaseGenerator:
#person2 = self.db.get_person_from_handle(person2_h)
#person2.add_family_handle(fam_h)
#self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create two married people of same sex.
person1_h = self.generate_person(RelLib.Person.MALE,"Broken5",None)
@ -226,6 +240,7 @@ class TestcaseGenerator:
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that contains an invalid handle to for the father
#person1_h = self.generate_person(RelLib.Person.MALE,"Broken6",None)
@ -241,6 +256,7 @@ class TestcaseGenerator:
person2 = self.db.get_person_from_handle(person2_h)
person2.add_family_handle(fam_h)
self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Create a family, that contains an invalid handle to for the mother
person1_h = self.generate_person(RelLib.Person.MALE,"Broken7",None)
@ -256,6 +272,7 @@ class TestcaseGenerator:
#person2 = self.db.get_person_from_handle(person2_h)
#person2.add_family_handle(fam_h)
#self.db.commit_person(person2,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a family where the child does not link back to the family
@ -277,6 +294,7 @@ class TestcaseGenerator:
#child = self.db.get_person_from_handle(child_h)
#person2.add_parent_family_handle(fam_h)
#self.db.commit_person(child,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a family where the child is not linked, but the child links to the family
person1_h = self.generate_person(RelLib.Person.MALE,"Broken9",None)
@ -297,6 +315,7 @@ class TestcaseGenerator:
child = self.db.get_person_from_handle(child_h)
child.add_parent_family_handle(fam_h,RelLib.Person.CHILD_REL_BIRTH,RelLib.Person.CHILD_REL_BIRTH)
self.db.commit_person(child,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with an event having a witness reference to a nonexisting person
person_h = self.generate_person(None,"Broken10",None)
@ -311,24 +330,28 @@ class TestcaseGenerator:
person = self.db.get_person_from_handle(person_h)
person.add_event_handle(event_h)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person having a non existing birth event handle set
person_h = self.generate_person(None,"Broken11",None)
person = self.db.get_person_from_handle(person_h)
person.set_birth_handle("InvalidHandle4")
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person having a non existing death event handle set
person_h = self.generate_person(None,"Broken12",None)
person = self.db.get_person_from_handle(person_h)
person.set_death_handle("InvalidHandle5")
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person having a non existing event handle set
person_h = self.generate_person(None,"Broken13",None)
person = self.db.get_person_from_handle(person_h)
person.add_event_handle("InvalidHandle6")
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with a birth event having an empty type
person_h = self.generate_person(None,"Broken14",None)
@ -338,6 +361,7 @@ class TestcaseGenerator:
person = self.db.get_person_from_handle(person_h)
person.set_birth_handle(event_h)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with a death event having an empty type
person_h = self.generate_person(None,"Broken15",None)
@ -347,6 +371,7 @@ class TestcaseGenerator:
person = self.db.get_person_from_handle(person_h)
person.set_death_handle(event_h)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
# Creates a person with an event having an empty type
person_h = self.generate_person(None,"Broken16",None)
@ -356,6 +381,7 @@ class TestcaseGenerator:
person = self.db.get_person_from_handle(person_h)
person.add_event_handle(event_h)
self.db.commit_person(person,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
@ -365,6 +391,7 @@ class TestcaseGenerator:
while gtk.events_pending():
gtk.main_iteration()
self.commit_transaction() # COMMIT TRANSACTION STEP
np = RelLib.Person()
@ -405,6 +432,8 @@ class TestcaseGenerator:
self.person_count = self.person_count+1
self.commit_transaction() # COMMIT TRANSACTION STEP
return( self.db.add_person(np,self.trans))
def generate_family(self,person1_h):
@ -445,6 +474,7 @@ class TestcaseGenerator:
self.db.commit_person(child,self.trans)
if randint(0,3) > 0:
self.persons_todo.append(child_h)
self.commit_transaction() # COMMIT TRANSACTION STEP
def generate_parents(self,child_h):
child = self.db.get_person_from_handle(child_h)
@ -461,7 +491,6 @@ class TestcaseGenerator:
if randint(0,2) > 1:
self.parents_todo.append(person2_h)
fam = RelLib.Family()
fam.set_father_handle(person1_h)
fam.set_mother_handle(person2_h)
@ -478,7 +507,13 @@ class TestcaseGenerator:
child.add_parent_family_handle(fam_h,RelLib.Person.CHILD_REL_BIRTH,RelLib.Person.CHILD_REL_BIRTH)
self.db.commit_person(child,self.trans)
self.commit_transaction() # COMMIT TRANSACTION STEP
def commit_transaction(self):
if self.multiple_transactions:
self.db.transaction_commit(self.trans,_("Testcase generator step %d") % self.transaction_count)
self.transaction_count += 1
self.trans = self.db.transaction_begin()
#-------------------------------------------------------------------------