We should be able to run the tests in t without the database. But if some module loads Auth.pm via C4/Serials or Koha/Virtualshelf directly or indirectly, this will trigger execution of Auth's BEGIN block. This block contains three calls for systempreferences (one from Auth_with_cas). Note that loading Biblio.pm also starts a chain going to Auth.pm. This report changes two use C4::Auth statements into requires. This will prevent or postpone execution of this code. Note also that this will resolve a few failing tests like (Matcher.t and Prices.t) where the schema mock actually was too late and the database was accessed instead of defined fixtures. Along the way we fix a few minor issues in t where database access should be eliminated.
Created attachment 62290 [details] [review] Bug 18445: Replace two use C4::Auth statements Both Serials.pm and Virtualshelf.pm only need haspermission in a specific sub. Since loading the module at compile-time triggers early execution of the BEGIN block, this results in database access in the tests that are assumed to be database independent. At the same time we are resolving test failures in Matcher.t and Prices.t because the schema mock is too late. Test plan: [1] Do not yet apply this patch. Backup your database. [2] Drop the database and create a new empty one. [3] Run the tests in t. Look at Matcher.t and Prices.t too. You will see quite some occurrences of: DBD::mysql::st execute failed: Table 'koha_master.systempreferences' doesn't exist [for Statement "SELECT `me`.`variable`, `me`.`value`, `me`.`options`, `me`.`explanation`, `me`.`type` FROM `systempreferences` `me` WHERE ( `me`.`variable` = ? )" with ParamValues: 0='casauthentication'] at /usr/share/perl5/DBIx/Class/Storage/DBI.pm line 1832. [4] Apply this patch. [5] Run the tests in t again. Check the results of Matcher.t and Prices.t. [6] Restore your database. [7] Run t/db_dependent/Serials_2.t to trigger the change in Serials. [8] Run t/db_dependent/Virtualshelves.t to test Koha/Virtualshelf. Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Created attachment 62292 [details] [review] Bug 18445: Fix Log.t by mocking HoldsLog The HoldsLog preference was added later on (bug 14642). It should be mocked too in this test. Test plan: Run t/Log.t (with an empty Koha database). Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Created attachment 62293 [details] [review] Bug 18445: Resolve a warning in SMS.t by mocking config Resolves the warning: "Use of uninitialized value in subroutine entry at C4/SMS.pm line 98" when sms_send_config does not exist in your koha-conf.xml. Test plan: Run SMS.t without and with this patch. Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Created attachment 62299 [details] [review] Bug 18445: Remove Test::DBIx::Class from XSLT.t Removing the tests around get_xslt_sysprefs from XSLT.t. It makes no sense to test sysprefs values in a test that should be database agnostic. Will add t/db_dependent/XSLT.t to rescue the ideas behind these lines. Test plan: Run t/XSLT.t Run t/db_dependent/XSLT.t Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Marcel, did you see bug 18226 and related? I don't think we should replace the use with require to make the tests pass.
(In reply to Jonathan Druart from comment #5) > Marcel, did you see bug 18226 and related? > I don't think we should replace the use with require to make the tests pass. Ah, no not yet. Will be looking.
Returning here later