On Fri, 2010-03-26 at 12:41 +1300, Michael Hudson wrote:
> On 25/03/10 01:22, nore...@launchpad.net wrote:
> [snip]
> 3) (this is the novel and exciting bit) For reasons that are not 
> entirely clear[1] it causes running 
> test_dir_construction_and_trivial_running from 
> canonical.launchpad.testing.tests.test_pages.TestMakeStoryTest to kill 
> the test suite run:
> 
> Running canonical.testing.layers.PageTestLayer tests:
> [snip horrors]
>   File "/home/mwh/canonical/checkouts/trunk/lib/canonical/testing/layers.py", 
> line 728, in testTearDown
>     DatabaseLayer.connect().close()
>   File 
> "/home/mwh/canonical/checkouts/trunk/lib/canonical/testing/profiled.py", line 
> 29, in profiled_func
>     return func(cls, *args, **kw)
>   File "/home/mwh/canonical/checkouts/trunk/lib/canonical/testing/layers.py", 
> line 804, in connect
>     return LaunchpadTestSetup().connect()
>   File "/home/mwh/canonical/checkouts/trunk/lib/canonical/ftests/pgsql.py", 
> line 270, in connect
>     self._connectionString(self.dbname, self.dbuser)
>   File "/home/mwh/canonical/checkouts/trunk/lib/canonical/ftests/pgsql.py", 
> line 123, in fake_connect
>     return ConnectionWrapper(_org_connect(*args, **kw))
> psycopg2.OperationalError: FATAL:  database "launchpad_ftest" does not exist

This is because test_dir_construction_and_trivial_running creates and
runs a nested test suite. The completion of the last test in the
sub-suite triggers a DatabaseLayer.testTearDown(). The test containing
the suite then ends, triggering another DL.tTD(). DL.tTD() previously
did nothing in either case, because the tests in the sub-suite were
no-ops which did not commit, so the DB was never marked as dirty, and
PgTestSetup optimised away the DB destruction.

But the Launchpad.login changes this -- it will probably commit at least
once, to register the usage of the OAuth nonce. A simple
browser.open('https://launchpad.dev') in one of the tests also triggers
the crash, since it commits to the session DB and a couple of other
places for not-very-good reasons.



_______________________________________________
Mailing list: https://launchpad.net/~launchpad-dev
Post to     : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to