summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2006-03-06 13:45:53 +0100
committerunknown <msvensson@neptunus.(none)>2006-03-06 13:45:53 +0100
commitd82eebcb750ace2c07b31b23afc59c49f5472cc9 (patch)
treeccb5962b9468a488aded8b326ee4997f1bf33f47
parent89378fe8f6d7e0a689cd917833dc7db04f85aca7 (diff)
parent9281bdd47cfaa183dcd52e07b2d07754cf71d64e (diff)
downloadmariadb-git-d82eebcb750ace2c07b31b23afc59c49f5472cc9.tar.gz
Merge bk-internal:/home/bk/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/mysql-5.0
-rw-r--r--client/mysqltest.c50
-rw-r--r--mysql-test/lib/mtr_misc.pl11
-rwxr-xr-xmysql-test/mysql-test-run.pl3
-rw-r--r--mysql-test/t/mysqldump.test4
4 files changed, 53 insertions, 15 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index a0c75511dc9..5836a109b6e 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -1120,8 +1120,6 @@ static void do_exec(struct st_query *query)
("error: %d, status: %d", error, status));
for (i= 0; i < query->expected_errors; i++)
{
- DBUG_PRINT("info",
- ("error: %d, status: %d", error, status));
DBUG_PRINT("info", ("expected error: %d",
query->expected_errno[i].code.errnum));
if ((query->expected_errno[i].type == ERR_ERRNO) &&
@@ -1354,6 +1352,35 @@ int do_modify_var(struct st_query *query, const char *name,
/*
+ Wrapper for 'system' function
+
+ NOTE
+ If mysqltest is executed from cygwin shell, the command will be
+ executed in the "windows command interpreter" cmd.exe and we prepend "sh"
+ to make it be executed by cygwins "bash". Thus commands like "rm",
+ "mkdir" as well as shellscripts can executed by "system" in Windows.
+
+*/
+
+int my_system(DYNAMIC_STRING* ds_cmd)
+{
+#ifdef __WIN__
+ /* Dump the command into a sh script file and execute with "sh" */
+ int err;
+ char tmp_sh_name[64], tmp_sh_cmd[70];
+ my_snprintf(tmp_sh_name, sizeof(tmp_sh_name), "tmp_%d.sh", getpid());
+ my_snprintf(tmp_sh_cmd, sizeof(tmp_sh_cmd), "sh %s", tmp_sh_name);
+ str_to_file(tmp_sh_name, ds_cmd->str, ds_cmd->length);
+ err= system(tmp_sh_cmd);
+ my_delete(tmp_sh_name, MYF(0));
+ return err;
+#else
+ return system(ds_cmd->str);
+#endif
+}
+
+
+/*
SYNOPSIS
do_system
@@ -1365,14 +1392,12 @@ int do_modify_var(struct st_query *query, const char *name,
Eval the query to expand any $variables in the command.
Execute the command with the "system" command.
- NOTE
- If mysqltest is executed from cygwin shell, the command will be
- executed in cygwin shell. Thus commands like "rm" etc can be used.
- */
+*/
-int do_system(struct st_query *command)
+void do_system(struct st_query *command)
{
DYNAMIC_STRING ds_cmd;
+ DBUG_ENTER("do_system");
if (strlen(command->first_argument) == 0)
die("Missing arguments to system, nothing to do!");
@@ -1384,7 +1409,7 @@ int do_system(struct st_query *command)
DBUG_PRINT("info", ("running system command '%s' as '%s'",
command->first_argument, ds_cmd.str));
- if (system(ds_cmd.str))
+ if (my_system(&ds_cmd))
{
if (command->abort_on_error)
die("system command '%s' failed", command->first_argument);
@@ -1396,7 +1421,7 @@ int do_system(struct st_query *command)
}
command->last_argument= command->end;
- return 0;
+ DBUG_VOID_RETURN;
}
@@ -1647,6 +1672,7 @@ int do_sleep(struct st_query *query, my_bool real_sleep)
char *p= query->first_argument;
char *sleep_start, *sleep_end= query->end;
double sleep_val;
+ const char *cmd = (real_sleep ? "real_sleep" : "sleep");
while (my_isspace(charset_info, *p))
p++;
@@ -2405,7 +2431,7 @@ int do_done(struct st_query *q)
*/
-int do_block(enum block_cmd cmd, struct st_query* q)
+void do_block(enum block_cmd cmd, struct st_query* q)
{
char *p= q->first_argument;
const char *expr_start, *expr_end;
@@ -2429,7 +2455,7 @@ int do_block(enum block_cmd cmd, struct st_query* q)
cur_block++;
cur_block->cmd= cmd;
cur_block->ok= FALSE;
- return 0;
+ DBUG_VOID_RETURN;
}
/* Parse and evaluate test expression */
@@ -3135,7 +3161,7 @@ static void init_win_path_patterns()
static void free_win_path_patterns()
{
- int i= 0;
+ uint i= 0;
for (i=0 ; i < patterns.elements ; i++)
{
const char** pattern= dynamic_element(&patterns, i, const char**);
diff --git a/mysql-test/lib/mtr_misc.pl b/mysql-test/lib/mtr_misc.pl
index a76f1b2d7b1..1f7ebdde457 100644
--- a/mysql-test/lib/mtr_misc.pl
+++ b/mysql-test/lib/mtr_misc.pl
@@ -96,7 +96,16 @@ sub mtr_exe_exists (@) {
map {$_.= ".exe"} @path if $::glob_win32;
foreach my $path ( @path )
{
- return $path if -x $path;
+ if ( -x $path )
+ {
+ if ( $::glob_cygwin_perl )
+ {
+ $path= `cygpath -w $path`;
+ # Chop off the \n that cygpath adds
+ $path=~ s/\n//;
+ }
+ return $path;
+ }
}
if ( @path == 1 )
{
diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index 905a2b2af37..ce2dfc8f67e 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -668,6 +668,9 @@ sub command_line_setup () {
$opt_vardir= "$glob_mysql_test_dir/var";
}
$opt_vardir_trace= $opt_vardir;
+ # Chop off any "c:", DBUG likes a unix path ex: c:/src/... => /src/...
+ $opt_vardir_trace=~ s/^\w://;
+
# We make the path absolute, as the server will do a chdir() before usage
unless ( $opt_vardir =~ m,^/, or
($glob_win32 and $opt_vardir =~ m,^[a-z]:/,i) )
diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test
index 9008eff6642..b5e05579023 100644
--- a/mysql-test/t/mysqldump.test
+++ b/mysql-test/t/mysqldump.test
@@ -830,8 +830,8 @@ DROP TABLE t1, t2;
# Bugs #9136, #12917: problems with --defaults-extra-file option
#
---system echo "[mysqltest1]" > $MYSQLTEST_VARDIR/tmp/tmp.cnf
---system echo "port=1234" >> $MYSQLTEST_VARDIR/tmp/tmp.cnf
+--system echo '[mysqltest1]' > $MYSQLTEST_VARDIR/tmp/tmp.cnf
+--system echo 'port=1234' >> $MYSQLTEST_VARDIR/tmp/tmp.cnf
--exec $MYSQL_MY_PRINT_DEFAULTS -c $MYSQLTEST_VARDIR/tmp/tmp.cnf mysqltest1
--exec $MYSQL_MY_PRINT_DEFAULTS -e $MYSQLTEST_VARDIR/tmp/tmp.cnf mysqltest1 mysqltest1
--system rm $MYSQLTEST_VARDIR/tmp/tmp.cnf