summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2006-10-19 23:13:32 +0200
committerunknown <msvensson@neptunus.(none)>2006-10-19 23:13:32 +0200
commit61e3438fe26e1e3a67441a6408b6488d4a8940c5 (patch)
tree7e03c5e4481949a42106234cb400a056020dd63e
parentac7b0a7b3b202d7dc2306934d408ef3374b2cb2d (diff)
parentfc9cf7f45de3360bed94b3d30b7638b7395b8bf9 (diff)
downloadmariadb-git-61e3438fe26e1e3a67441a6408b6488d4a8940c5.tar.gz
Merge bk-internal:/home/bk/mysql-4.1-maint
into neptunus.(none):/home/msvensson/mysql/mysql-4.1-maint
-rw-r--r--client/mysqltest.c13
-rw-r--r--mysql-test/lib/mtr_cases.pl12
-rw-r--r--mysql-test/lib/mtr_misc.pl14
-rwxr-xr-xmysql-test/mysql-test-run.pl66
-rw-r--r--mysql-test/r/mysqltest.result2
-rw-r--r--mysql-test/t/mysqltest.test14
6 files changed, 79 insertions, 42 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index efb5f1915f4..5bc132a874f 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -264,7 +264,7 @@ enum enum_commands {
Q_IF,
Q_DISABLE_PARSING, Q_ENABLE_PARSING,
Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST,
- Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE,
+ Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT,
Q_UNKNOWN, /* Unknown command. */
Q_COMMENT, /* Comments, ignored. */
@@ -345,6 +345,8 @@ const char *command_names[]=
"copy_file",
"perl",
"die",
+ /* Don't execute any more commands, compare result */
+ "exit",
0
};
@@ -5429,7 +5431,7 @@ void mark_progress(struct st_command* command __attribute__((unused)),
int main(int argc, char **argv)
{
struct st_command *command;
- my_bool q_send_flag= 0;
+ my_bool q_send_flag= 0, abort_flag= 0;
uint command_executed= 0, last_command_executed= 0;
char save_file[FN_REFLEN];
MY_STAT res_info;
@@ -5549,7 +5551,7 @@ int main(int argc, char **argv)
open_file(opt_include);
}
- while (!read_command(&command))
+ while (!read_command(&command) && !abort_flag)
{
int current_line_inc = 1, processed = 0;
if (command->type == Q_UNKNOWN || command->type == Q_COMMENT_WITH_COMMAND)
@@ -5777,8 +5779,13 @@ int main(int argc, char **argv)
die("Parsing is already enabled");
break;
case Q_DIE:
+ /* Abort test with error code and error message */
die("%s", command->first_argument);
break;
+ case Q_EXIT:
+ /* Stop processing any more commands */
+ abort_flag= 1;
+ break;
case Q_RESULT:
die("result, deprecated command");
diff --git a/mysql-test/lib/mtr_cases.pl b/mysql-test/lib/mtr_cases.pl
index 88c51728fb2..7a01c66305b 100644
--- a/mysql-test/lib/mtr_cases.pl
+++ b/mysql-test/lib/mtr_cases.pl
@@ -263,9 +263,6 @@ sub collect_one_test_case($$$$$$$) {
return;
}
- # ----------------------------------------------------------------------
- # Skip some tests but include in list, just mark them to skip
- # ----------------------------------------------------------------------
my $tinfo= {};
$tinfo->{'name'}= $tname;
@@ -273,6 +270,10 @@ sub collect_one_test_case($$$$$$$) {
$tinfo->{'component_id'} = $component_id;
push(@$cases, $tinfo);
+ # ----------------------------------------------------------------------
+ # Skip some tests but include in list, just mark them to skip
+ # ----------------------------------------------------------------------
+
if ( $::opt_skip_test and defined mtr_match_prefix($tname,$::opt_skip_test) )
{
$tinfo->{'skip'}= 1;
@@ -356,8 +357,9 @@ sub collect_one_test_case($$$$$$$) {
$value= mtr_match_prefix($opt, "--default-time-zone=");
if ( defined $value )
{
- $tinfo->{'timezone'}= "";
- # Fallthrough, add this option
+ # Set timezone for this test case to something different
+ $tinfo->{'timezone'}= "GMT-8";
+ # Fallthrough, add the --default-time-zone option
}
# The --restart option forces a restart even if no special
diff --git a/mysql-test/lib/mtr_misc.pl b/mysql-test/lib/mtr_misc.pl
index dd9d24ebc8e..5ac89aee62c 100644
--- a/mysql-test/lib/mtr_misc.pl
+++ b/mysql-test/lib/mtr_misc.pl
@@ -14,6 +14,7 @@ sub mtr_path_exists(@);
sub mtr_script_exists(@);
sub mtr_file_exists(@);
sub mtr_exe_exists(@);
+sub mtr_exe_maybe_exists(@);
sub mtr_copy_dir($$);
sub mtr_same_opts($$);
sub mtr_cmp_opts($$);
@@ -110,8 +111,9 @@ sub mtr_file_exists (@) {
return "";
}
-sub mtr_exe_exists (@) {
+sub mtr_exe_maybe_exists (@) {
my @path= @_;
+
map {$_.= ".exe"} @path if $::glob_win32;
foreach my $path ( @path )
{
@@ -124,6 +126,16 @@ sub mtr_exe_exists (@) {
return $path if -x $path;
}
}
+ return "";
+}
+
+sub mtr_exe_exists (@) {
+ my @path= @_;
+ if (my $path= mtr_exe_maybe_exists(@path))
+ {
+ return $path;
+ }
+ # Could not find exe, show error
if ( @path == 1 )
{
mtr_error("Could not find $path[0]");
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index daa5b8aca96..286bb8a11c5 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -1313,9 +1313,8 @@ sub executable_setup () {
}
# Look for language files and charsetsdir, use same share
- my $path_share= mtr_path_exists("$glob_basedir/share",
+ my $path_share= mtr_path_exists("$glob_basedir/share/mysql",
"$glob_basedir/sql/share",
- "$glob_basedir/share/mysql",
"$glob_basedir/share");
$path_language= mtr_path_exists("$path_share/english");
@@ -1373,31 +1372,31 @@ sub executable_setup () {
{
# Look for ndb tols and binaries
my $ndb_path= mtr_path_exists("$glob_basedir/ndb",
- "$glob_basedir/storage/ndb");
+ "$glob_basedir/storage/ndb",
+ "$glob_basedir/bin");
$path_ndb_tools_dir= mtr_path_exists("$ndb_path/tools",
- "$glob_basedir/bin");
+ "$ndb_path");
$exe_ndb_mgm=
mtr_exe_exists("$ndb_path/src/mgmclient/ndb_mgm",
- "$glob_basedir/bin/ndb_mgm");
+ "$ndb_path/ndb_mgm");
$exe_ndb_mgmd=
mtr_exe_exists("$ndb_path/src/mgmsrv/ndb_mgmd",
- "$glob_basedir/bin/ndb_mgmd");
+ "$ndb_path/ndb_mgmd");
$exe_ndb_waiter=
mtr_exe_exists("$ndb_path/tools/ndb_waiter",
- "$glob_basedir/bin/ndb_waiter");
+ "$ndb_path/ndb_waiter");
$exe_ndbd=
mtr_exe_exists("$ndb_path/src/kernel/ndbd",
- "$glob_basedir/bin/ndbd");
+ "$ndb_path/ndbd");
- if ( $mysql_version_id >= 50000 )
- {
- $path_ndb_examples_dir=
- mtr_path_exists("$ndb_path/ndbapi-examples",
- "$ndb_path/examples");
- $exe_ndb_example=
- mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
- }
+ # May not exist
+ $path_ndb_examples_dir=
+ mtr_file_exists("$ndb_path/ndbapi-examples",
+ "$ndb_path/examples");
+ # May not exist
+ $exe_ndb_example=
+ mtr_file_exists("$path_ndb_examples_dir/ndbapi_simple/ndbapi_simple");
}
# Look for the udf_example library
@@ -1420,27 +1419,20 @@ sub executable_setup () {
}
- if ( $glob_win32 and $mysql_version_id < 50000 )
+ # Look for mysql_client_test executable which may _not_ exist in
+ # some versions, test using it should be skipped
+ if ( $glob_use_embedded_server )
{
- # Skip looking for exe_mysql_client_test as its not built by default
- # in 4.1 for windows.
- $exe_mysql_client_test= "unavailable";
+ $exe_mysql_client_test=
+ mtr_exe_maybe_exists("$glob_basedir/libmysqld/examples/mysql_client_test_embedded");
}
else
{
- # Look for mysql_client_test executable
- if ( $glob_use_embedded_server )
- {
- $exe_mysql_client_test=
- mtr_exe_exists("$glob_basedir/libmysqld/examples/mysql_client_test_embedded");
- }
- else
- {
- $exe_mysql_client_test=
- mtr_exe_exists("$glob_basedir/tests/mysql_client_test",
- "$glob_basedir/tests/release/mysql_client_test",
- "$glob_basedir/tests/debug/mysql_client_test");
- }
+ $exe_mysql_client_test=
+ mtr_exe_maybe_exists("$glob_basedir/tests/mysql_client_test",
+ "$glob_basedir/tests/release/mysql_client_test",
+ "$glob_basedir/tests/debug/mysql_client_test",
+ "$glob_basedir/bin");
}
}
@@ -2045,6 +2037,14 @@ sub check_ndbcluster_support ($) {
$opt_skip_ndbcluster_slave= 1;
return;
}
+ elsif ( -e "$glob_basedir/bin" && ! -f "$glob_basedir/bin/ndbd")
+ {
+ # Binary dist with a mysqld that supports ndb, but no ndbd found
+ mtr_report("Skipping ndbcluster, can't fint binaries");
+ $opt_skip_ndbcluster= 1;
+ $opt_skip_ndbcluster_slave= 1;
+ return;
+ }
$glob_ndbcluster_supported= 1;
mtr_report("Using ndbcluster when necessary, mysqld supports it");
diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result
index ed7267fb71d..a63863977b0 100644
--- a/mysql-test/r/mysqltest.result
+++ b/mysql-test/r/mysqltest.result
@@ -518,4 +518,6 @@ hello
mysqltest: At line 1: Max delimiter length(16) exceeded
hello
hello
+mysqltest: At line 1: test of die
+Some output
End of tests
diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test
index d98375ca746..3c20b38722f 100644
--- a/mysql-test/t/mysqltest.test
+++ b/mysql-test/t/mysqltest.test
@@ -1548,5 +1548,19 @@ perl;
print "hello\n";
EOF
+# ----------------------------------------------------------------------------
+# test for die
+# ----------------------------------------------------------------------------
+
+--error 1
+--exec echo "die test of die;" | $MYSQL_TEST 2>&1
+
+
+# ----------------------------------------------------------------------------
+# test for exit
+# ----------------------------------------------------------------------------
+
+--exec echo "echo Some output; exit; echo Not this;" | $MYSQL_TEST 2>&1
+
--echo End of tests