From a74928c0c68ba187532536d7c4886a5765f240d9 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 17 Nov 2014 22:25:09 -0500 Subject: [PATCH] [PASSED QA] Bug 13274: t/00-load.t shouldn't depend on the DB To reproduce: - Stop your MySQL server: $ sudo service mysql stop - Run $ prove t/00-load.t => FAIL: some tests fail because of mysql stopped To test (MySQL still stopped) - Apply the patch - Run $ prove t/00-load.t => SUCCESS: tests pass because the ycan be loaded regardless of the absence of the DB server - Sign off :-D NOTE: Even seems to grab more than expected, which is good. 349 tests in master vs 364 in this branch = 16, but removed block is only 13 (lines 20-32). Also ran koha-qa test tool. :) Signed-off-by: Mark Tompsett Signed-off-by: Katrin Fischer Works as described, tests passing now without database available. --- t/00-load.t | 54 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/t/00-load.t b/t/00-load.t index 392e607..88830b3 100644 --- a/t/00-load.t +++ b/t/00-load.t @@ -1,11 +1,43 @@ -# This script is called by the pre-commit git hook to test modules compile +#!/usr/bin/perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; -use strict; -use warnings; use Test::More; use File::Spec; use File::Find; +use Test::MockModule; +use DBD::Mock; + +=head1 DESCRIPTION + +00-load.t: This script is called by the pre-commit git hook to test modules compile +=cut + +# Mock the DB connexion and C4::Context +my $context = new Test::MockModule('C4::Context'); +$context->mock( '_new_dbh', sub { + my $dbh = DBI->connect( 'DBI:Mock:', '', '' ) + || die "Cannot create handle: $DBI::errstr\n"; + return $dbh; +}); + +# Loop through the C4:: modules my $lib = File::Spec->rel2abs('C4'); find({ bydepth => 1, @@ -17,23 +49,11 @@ find({ $m =~ s{/}{::}g; return if $m =~ /Auth_with_ldap/; # Dont test this, it will fail on use return if $m =~ /SIP/; # SIP modules will not load clean - return if $m =~ /C4::VirtualShelves$/; # Requires a DB - return if $m =~ /C4::Auth$/; # DB - return if $m =~ /C4::ILSDI::Services/; # DB - return if $m =~ /C4::Tags$/; # DB - return if $m =~ /C4::Service/; # DB - return if $m =~ /C4::Auth_with_cas/; # DB - return if $m =~ /C4::BackgroundJob/; # DB - return if $m =~ /C4::UploadedFile/; # DB - return if $m =~ /C4::Reports::Guided/; # DB - return if $m =~ /C4::VirtualShelves::Page/; # DB - return if $m =~ /C4::Members::Statistics/; # DB - return if $m =~ /C4::Serials/; # needs context - return if $m =~ /C4::Search::History/; # needs context use_ok($m) || BAIL_OUT("***** PROBLEMS LOADING FILE '$m'"); }, }, $lib); +# Loop through the Koha:: modules $lib = File::Spec->rel2abs('Koha'); find( { @@ -53,3 +73,5 @@ find( done_testing(); + +1; -- 1.9.1