Test case file names may use alphanumeric characters
(A-Z, a-z, 0-9
), underscore
('_'
) or dash ('-'
), but
should not start with underscore or dash. Other special
characters may work but this is not guaranteed so they should be
avoided.
Test names have traditionally used lower case only, and we recommend continuing this for tests added to the common repository, though upper case letters are also supported.
Test cases are located in the mysql-test/t
directory. Test case file names consist of the test name with a
.test
suffix. For example, a test named
foo
should be written in the file
mysql-test/t/foo.test
.
In addition to this directory, tests are organized in test
suites, located in subdirectories under the
suite
directory. For example, a test named
bar
under the replication suite
rpl
may be stored in the file
mysql-test/suite/rpl/t/bar.test
.
In practice, the file would likely be called
rpl_bar.test
as tests in a suite usually
also have the suite name as a prefix. This is just a convention
from the time when suites were not supported, and not a
requirement for test naming.
One test case file can be a collection of individual tests that belong together. If one of the tests fails, the entire test case fails. Although it may be tempting to write each small test into a single file, that will be too inefficient and makes test runs unbearably slow. So make the test case files not too big, not too small.
Each test case (that is, each test file) must be self contained
and independent of other test cases. Do not create or populate a
table in one test case and depend on the table in a later test
case. If you have some common initialization that needs to be
done for multiple test cases, create an include file. That is,
create a file containing the initialization code in the
mysq-test/include
directory, and then put a
source
command in each test case that
requires the code. For example, if several test cases need to
have a given table created and filled with data, put the
statements to do that in a file named
mysql-test/include/create_my_table.inc
. The
.inc
is a convention, not a requirement.
Then put the following command in each test case file that needs
the initialization code:
--source include/create_my_table.inc
The file name in the source
command is
relative to the mysql-test
directory.
Remember to drop the table at the end of each test that creates
it.