diff --git a/mysql-test/include/check-testcase.test b/mysql-test/include/check-testcase.test index 5bdbf6cd072..b5d77ba8244 100644 --- a/mysql-test/include/check-testcase.test +++ b/mysql-test/include/check-testcase.test @@ -1,34 +1,47 @@ + # # This test is executed twice for each test case if mysql-test-run is passed -# the flag --check-testcase. -# Before every testcase it's run with mysqltest in record mode and will -# thus produce an output file -# that can be compared to output from after the tescase. -# In that way it's possible to check that a testcase does not have +# the flag --check-testcase. Before every testcase it is run with mysqltest +# in record mode and will thus produce an output file that can be compared +# to output from after the tescase. +# In that way its possible to check that a testcase does not have # any unwanted side affects. # -# -# Dump all global variables -# -show global variables; +# Dump all global variables except those +# that are supposed to change +show global variables where Variable_name != 'timestamp'; -# -# Dump all databases -# +# Dump all databases, there should be none +# except mysql, test and information_schema show databases; -# -# Dump the "test" database, all it's tables and their data -# ---exec $MYSQL_DUMP --skip-comments --skip-lock-tables test +# The test database should not contain any tables +show tables from test; -# -# Dump the "mysql" database and it's tables -# Select data separately to add "order by" -# ---exec $MYSQL_DUMP --skip-comments --skip-lock-tables --no-data mysql +# Dump the "mysql" database and its tables use mysql; +show tables; +show create table columns_priv; +show create table db; +show create table func; +show create table help_category; +show create table help_keyword; +show create table help_relation; +show create table help_relation; +show create table host; +show create table proc; +show create table procs_priv; +show create table tables_priv; +show create table time_zone; +show create table time_zone_leap_second; +show create table time_zone_name; +show create table time_zone_transition; +show create table time_zone_transition_type; +show create table user; + +# Select data from system tables to make sure they have been properly +# restored after test select * from columns_priv; select * from db order by host, db, user; select * from func; diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index b5c122caefc..f47cd9bdc7c 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -149,7 +149,7 @@ my $opt_mtr_build_thread= $ENV{'MTR_BUILD_THREAD'} || "auto"; my $opt_record; my $opt_report_features; -my $opt_check_testcases; +our $opt_check_testcases; my $opt_mark_progress; my $opt_sleep; @@ -2123,6 +2123,7 @@ sub do_before_run_mysqltest($) sub run_check_testcase_all($$) { my ($tinfo, $mode)= @_; + my $result; foreach my $mysqld ( mysqlds() ) { @@ -2132,9 +2133,11 @@ sub run_check_testcase_all($$) { # Check failed, mark the test case with that info $tinfo->{'check_testcase_failed'}= 1; + $result= 1; } } } + return $result; } @@ -2323,7 +2326,12 @@ sub run_testcase ($) { if ( $opt_check_testcases ) { - run_check_testcase_all($tinfo, "after"); + if (run_check_testcase_all($tinfo, "after")) + { + # Stop all servers that are known to be running + stop_all_servers(); + mtr_report("Resuming tests...\n"); + } } } elsif ( $res == 62 ) @@ -2602,7 +2610,8 @@ sub mysqld_arguments ($$$) { } # Check if "extra_opt" contains skip-log-bin - my $skip_binlog= grep(/^(--|--loose-)skip-log-bin/, @$extra_opt, @opt_extra_mysqld_opt); + my $skip_binlog= grep(/^(--|--loose-)skip-log-bin/, + @$extra_opt, @opt_extra_mysqld_opt); if ( $opt_debug ) {