Loading client/mysqltest.c +38 −12 Original line number Diff line number Diff line Loading @@ -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) && Loading Loading @@ -1353,6 +1351,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 Loading @@ -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!"); Loading @@ -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); Loading @@ -1396,7 +1421,7 @@ int do_system(struct st_query *command) } command->last_argument= command->end; return 0; DBUG_VOID_RETURN; } Loading Loading @@ -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++; Loading Loading @@ -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; Loading @@ -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 */ Loading Loading @@ -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**); Loading mysql-test/lib/mtr_misc.pl +10 −1 Original line number Diff line number Diff line Loading @@ -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 ) { Loading mysql-test/mysql-test-run.pl +3 −0 Original line number Diff line number Diff line Loading @@ -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) ) Loading mysql-test/t/mysqldump.test +2 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
client/mysqltest.c +38 −12 Original line number Diff line number Diff line Loading @@ -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) && Loading Loading @@ -1353,6 +1351,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 Loading @@ -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!"); Loading @@ -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); Loading @@ -1396,7 +1421,7 @@ int do_system(struct st_query *command) } command->last_argument= command->end; return 0; DBUG_VOID_RETURN; } Loading Loading @@ -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++; Loading Loading @@ -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; Loading @@ -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 */ Loading Loading @@ -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**); Loading
mysql-test/lib/mtr_misc.pl +10 −1 Original line number Diff line number Diff line Loading @@ -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 ) { Loading
mysql-test/mysql-test-run.pl +3 −0 Original line number Diff line number Diff line Loading @@ -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) ) Loading
mysql-test/t/mysqldump.test +2 −2 Original line number Diff line number Diff line Loading @@ -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 Loading