On Wed, Jan 22, 2014 at 5:38 PM, Saint Germain <[email protected]> wrote:
> On Wed, 22 Jan 2014 17:29:41 -0800, Ryan Ollos > <[email protected]> wrote : > > > On Wed, Jan 22, 2014 at 5:22 PM, Saint Germain <[email protected]> > > wrote: > > > > > > > > > > > On Wed, 22 Jan 2014 16:45:19 -0800, Ryan Ollos > > > <[email protected]> wrote : > > > > > > > On Wed, Jan 22, 2014 at 4:27 PM, Saint Germain > > > > <[email protected]> wrote: > > > > > > > > > On Mon, 20 Jan 2014 00:10:55 -0500, Olemis Lang > > > > > <[email protected]> wrote : > > > > > > > > > > > > > > > > > > > Currently on trunk I got a lot of similar mistakes when > > > > > > > running the test on bloodhound_search like this one: > > > > > > > > > > > > > > > > > ====================================================================== > > > > > > > ERROR: test_admin_granted_in_product_should_not_have_access > > > > > > > (bhsearch.tests.security.MultiProductSecurityTestCase) > > > > > > > > > > ---------------------------------------------------------------------- > > > > > > > Traceback (most recent call last): > > > > > > [...] > > > > > > > OperationalError: duplicate column name: product > > > > > > > > > > > > > > Does that ring a bell to someone ? > > > > > > > > > > > > > > > > > > > It looks ok to me , see http://pastebin.com/kxvua4TU > > > > > > > > > > > > > > > > Hello ! > > > > > > > > > > I found the problem. > > > > > > > > > > In tests/env.py we have: > > > > > from sqlite3 import OperationalError > > > > > > > > > > And in trac/trac/db/sqlite_backend.py we have: > > > > > try: > > > > > import pysqlite2.dbapi2 as sqlite > > > > > have_pysqlite = 2 > > > > > except ImportError: > > > > > try: > > > > > import sqlite3 as sqlite > > > > > have_pysqlite = 2 > > > > > except ImportError: > > > > > have_pysqlite = 0 > > > > > > > > > > As I have both sqlite3 and python-pysqlite2 installed, I got a > > > > > mismatch when an exception is raised: > > > > > sqlite3.OperationalError != pysqlite2.dbapi2.OperationalError > > > > > > > > > > And the tests cannot run. > > > > > > > > > > If I deinstall python-pysqlite2, then the tests can run. > > > > > > > > > > Do you think it is necessary to fix this ? > > > > > In test files we can reproduce the same logic as in the > > > > > sqlite_backend to correctly import sqlite. > > > > > > > > > > Best regards, > > > > > > > > > > > > > > Trac provides an API for working with database exceptions. I > > > > believe the following patch would be the proper way to handle it. > > > > Would you kindly test it in your environment? > > > > > > > > diff --git a/bloodhound_multiproduct/tests/env.py > > > > b/bloodhound_multiproduct/tests/env.py > > > > index 30910e4..98cd1bc 100644 > > > > --- a/bloodhound_multiproduct/tests/env.py > > > > +++ b/bloodhound_multiproduct/tests/env.py > > > > @@ -23,7 +23,6 @@ from inspect import stack > > > > import os.path > > > > import shutil > > > > import tempfile > > > > -from sqlite3 import OperationalError > > > > from tests import unittest > > > > from types import MethodType > > > > > > > > @@ -230,7 +229,7 @@ class MultiproductTestCase(unittest.TestCase): > > > > mpsystem = MultiProductSystem(env) > > > > try: > > > > mpsystem.upgrade_environment(env.db_transaction) > > > > - except OperationalError: > > > > + except env.db_exc.OperationalError: > > > > # Database is upgraded, but database version was > > > > deleted. # Complete the upgrade by inserting default product. > > > > mpsystem._insert_default_product(env.db_transaction) > > > > > > Hello ! > > > > > > Thanks for the patch. I had to propagate the change in order to run > > > all the tests. > > > > > > > Looks good, thanks for testing. Do you have commit access now? If so, > > I think you should feel free to go ahead and commit the change. > > Unfortunately not, I haven't sent the paperwork to get the commit > access. > I _will_ do it tomorrow. > > Thanks > I committed the change in 1560582. Thanks for finishing up the patch!
