mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-24 07:13:33 +03:00 
			
		
		
		
	Third updated patch - this version also includes copyright notice in added Perl script.
This patch implements a check for such modules at runtime. If modules are not found or unable to load, the test is skipped with 
the following message:
            
            [ skipped ]  Test needs Perl modules DBI and DBD::mysql
            
Checks are done via a helper Perl script which looks for the module in a runtime environment that is as similar to that of the 
mysqlhotcopy script as possible (thus not intended for Windows environments at this time).
The helper script tells mysql-test about the result by writing information to a temporary file that is later read by mysql-test.
See comments in added files (have_dbi_dbd-mysql.inc and checkDBI_DBD-mysql.pl) for details.
The patch also removes the mysqlhotcopy tests from the list of disabled tests.
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl
 | |
| 
 | |
| # Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
 | |
| #
 | |
| # This program is free software; you can redistribute it and/or
 | |
| # modify it under the terms of the GNU Library General Public
 | |
| # License as published by the Free Software Foundation; version 2
 | |
| # of the License.
 | |
| #
 | |
| # This program 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
 | |
| # Library General Public License for more details.
 | |
| #
 | |
| # You should have received a copy of the GNU General Public License
 | |
| # along with this program; if not, write to the Free Software
 | |
| # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 | |
| 
 | |
| 
 | |
| ################################################################################
 | |
| #
 | |
| # This perl script checks for availability of the Perl modules DBI and
 | |
| # DBD::mysql using the "current" perl interpreter.
 | |
| #
 | |
| # Useful for test environment checking before testing executable perl scripts
 | |
| # in the MySQL Server distribution.
 | |
| #
 | |
| # NOTE: The "shebang" on the first line of this script should always point to
 | |
| #       /usr/bin/perl, so that we can use this script to check whether or not we
 | |
| #       support running perl scripts with such a shebang without specifying the
 | |
| #       perl interpreter on the command line. Such a script is mysqlhotcopy.
 | |
| #
 | |
| #       When run as "checkDBI_DBD-mysql.pl" the shebang line will be evaluated
 | |
| #       and used. When run as "perl checkDBI_DBD-mysql.pl" the shebang line is
 | |
| #       not used.
 | |
| #
 | |
| # NOTE: This script will create a temporary file in MTR's tmp dir.
 | |
| #       If modules are found, a mysql-test statement which sets a special
 | |
| #       variable is written to this file. If one of the modules is not found
 | |
| #       (or cannot be loaded), the file will remain empty.
 | |
| #       A test (or include file) which sources that file can then easily do
 | |
| #       an if-check on the special variable to determine success or failure.
 | |
| #
 | |
| #       Example:
 | |
| #
 | |
| #         --let $perlChecker= $MYSQLTEST_VARDIR/std_data/checkDBI_DBD-mysql.pl
 | |
| #         --let $resultFile= $MYSQL_TMP_DIR/dbidbd-mysql.txt
 | |
| #         --chmod 0755 $perlChecker
 | |
| #         --exec $perlChecker
 | |
| #         --source $resultFile
 | |
| #         if (!$dbidbd) {
 | |
| #             --skip Test needs Perl modules DBI and DBD::mysql
 | |
| #         } 
 | |
| #
 | |
| #       The calling script is also responsible for cleaning up after use:
 | |
| #
 | |
| #         --remove_file $resultFile
 | |
| #
 | |
| # Windows notes: 
 | |
| #   - shebangs may work differently - call this script with "perl " in front.
 | |
| #
 | |
| # See mysql-test/include/have_dbi_dbd-mysql.inc for example use of this script.
 | |
| # This script should be executable for the user running MTR.
 | |
| #
 | |
| ################################################################################
 | |
| 
 | |
| BEGIN {
 | |
|     # By using eval inside BEGIN we can suppress warnings and continue after.
 | |
|     # We need to catch "Can't locate" as well as "Can't load" errors.
 | |
|     eval{
 | |
|         $FOUND_DBI=0;
 | |
|         $FOUND_DBD_MYSQL=0;
 | |
| 
 | |
|         # Check for DBI module:
 | |
|         $FOUND_DBI=1 if require DBI;
 | |
| 
 | |
|         # Check for DBD::mysql module
 | |
|         $FOUND_DBD_MYSQL=1 if require DBD::mysql;
 | |
|     };
 | |
| };
 | |
| 
 | |
| # Open a file to be used for transfer of result back to mysql-test.
 | |
| # The file must be created whether we write to it or not, otherwise mysql-test 
 | |
| # will complain if trying to source it. 
 | |
| # An empty file indicates failure to load modules.
 | |
| open(FILE, ">", $ENV{'MYSQL_TMP_DIR'}.'/dbidbd-mysql.txt');
 | |
| 
 | |
| if ($FOUND_DBI && $FOUND_DBD_MYSQL) {
 | |
|     # write a mysql-test command setting a variable to indicate success
 | |
|     print(FILE 'let $dbidbd= FOUND_DBI_DBD-MYSQL;'."\n");
 | |
| }
 | |
| 
 | |
| # close the file.
 | |
| close(FILE);
 | |
| 
 | |
| 1;
 | |
| 
 |