I''m getting some very weird results when testing my system. If I run my unit tests using => ruby \test\unit\<filename.rb> each of the tests pass. If I run => rake test_units I get several failures, and they all have to deal with the same issue. For instance I''m getting => ActiveRecord::StatementInvalid: RuntimeError: ERROR C42P01 Mrelation "customers" does not exist Fnamespace.c L200 RRangeVarGetRelid: DELETE FROM customers Obviously I''ve checked and the customers table exists, and as I mentioned above, when I run => ruby test\unit\customer_test.rb all tests succeed. So I''m guessing there is something wrong with the way rake is loading up the tests and maybe not executing them correctly. I am connecting to multiple databases in my application. I''ve created a new database for my customers, licenses and products and am accessing some legacy databases for some historical data. I''m doing joins b/n the databases fine in some other tests and those are succeeding when using rake, it''s only the tests that run against my default test database which I setup specifically for the rails application. For my fixtures, I am using the standard => fixtures :customers to manage the data loading and cleansing between runs. Any help would be appreciated. Thanks. Greg -- Posted via http://www.ruby-forum.com/.
Greg Hansen
2006-Aug-09 00:00 UTC
[Rails] Re: Testing Inconsistencies - ruby works rake fails
I''ve just identified another interesting piece to the puzzle. I cleared the test folder of all files and added them back in one by one based on the database they were using. When I added the tests for my rails app classes, they all succeeded. But when I added in a class, that uses one of my legacy databases, the rails app tests would still succeed as long as the secondary database test name came after the test name of default database test. So primary_db_test.rb would succeed as long as the filename for the test of the secondary database name came alphabetically after the letter p(rimary_db_test.rb). As soon as I put a secondary db test that was alphabetically listed in front of a primary db test, rake can''t find the primary database. It''s like once rake uses the secondary database it is stuck connected to it, and can''t find the tables for the primary database tables anymore. Does it look like I''ve stumbled onto a bug or is there something I have to do to release database connections in my test? I''m having to manually create my fixtures to my secondary databases using Fixture.create( path, file, table-name ) { Connection }. And I''m doing a teardown in those classes to remove all data when executing for the tests completes. Greg Greg Hansen wrote:> I''m getting some very weird results when testing my system. If I run my > unit tests using => ruby \test\unit\<filename.rb> each of the tests > pass. If I run => rake test_units I get several failures, and they all > have to deal with the same issue. For instance I''m getting => > ActiveRecord::StatementInvalid: RuntimeError: ERROR C42P01 > Mrelation "customers" does not exist Fnamespace.c L200 > RRangeVarGetRelid: DELETE FROM customers > > Obviously I''ve checked and the customers table exists, and as I > mentioned above, when I run => ruby test\unit\customer_test.rb all tests > succeed. So I''m guessing there is something wrong with the way rake is > loading up the tests and maybe not executing them correctly. > > I am connecting to multiple databases in my application. I''ve created a > new database for my customers, licenses and products and am accessing > some legacy databases for some historical data. I''m doing joins b/n the > databases fine in some other tests and those are succeeding when using > rake, it''s only the tests that run against my default test database > which I setup specifically for the rails application. > > For my fixtures, I am using the standard => fixtures :customers to > manage the data loading and cleansing between runs. > > Any help would be appreciated. > > Thanks. > Greg-- Posted via http://www.ruby-forum.com/.
Greg Hansen
2006-Aug-09 00:00 UTC
[Rails] Re: Testing Inconsistencies - ruby works rake fails
Well, I''ve proved my theory, I renamed all of my test files, putting an "a_" in front of the default database tests, and "b_" in front of the secondary database test files and rake executed all of the tests successfully. I''m not going to venture a guess on whether this is a bug in rake or not, but hopefully when someone else is working with multiple databases and tries to test their application, they''ll be able to find this post and the work-around. Cheers. Greg Greg Hansen wrote:> I''ve just identified another interesting piece to the puzzle. I cleared > the test folder of all files and added them back in one by one based on > the database they were using. When I added the tests for my rails app > classes, they all succeeded. But when I added in a class, that uses one > of my legacy databases, the rails app tests would still succeed as long > as the secondary database test name came after the test name of default > database test. So primary_db_test.rb would succeed as long as the > filename for the test of the secondary database name came alphabetically > after the letter p(rimary_db_test.rb). As soon as I put a secondary db > test that was alphabetically listed in front of a primary db test, rake > can''t find the primary database. > > It''s like once rake uses the secondary database it is stuck connected to > it, and can''t find the tables for the primary database tables anymore. > > Does it look like I''ve stumbled onto a bug or is there something I have > to do to release database connections in my test? I''m having to > manually create my fixtures to my secondary databases using > Fixture.create( path, file, table-name ) { Connection }. And I''m doing > a teardown in those classes to remove all data when executing for the > tests completes. > > Greg > > Greg Hansen wrote: >> I''m getting some very weird results when testing my system. If I run my >> unit tests using => ruby \test\unit\<filename.rb> each of the tests >> pass. If I run => rake test_units I get several failures, and they all >> have to deal with the same issue. For instance I''m getting => >> ActiveRecord::StatementInvalid: RuntimeError: ERROR C42P01 >> Mrelation "customers" does not exist Fnamespace.c L200 >> RRangeVarGetRelid: DELETE FROM customers >> >> Obviously I''ve checked and the customers table exists, and as I >> mentioned above, when I run => ruby test\unit\customer_test.rb all tests >> succeed. So I''m guessing there is something wrong with the way rake is >> loading up the tests and maybe not executing them correctly. >> >> I am connecting to multiple databases in my application. I''ve created a >> new database for my customers, licenses and products and am accessing >> some legacy databases for some historical data. I''m doing joins b/n the >> databases fine in some other tests and those are succeeding when using >> rake, it''s only the tests that run against my default test database >> which I setup specifically for the rails application. >> >> For my fixtures, I am using the standard => fixtures :customers to >> manage the data loading and cleansing between runs. >> >> Any help would be appreciated. >> >> Thanks. >> Greg-- Posted via http://www.ruby-forum.com/.