docs/devel: testing: Document writing portable test cases
Update the best practices of how to write portable test cases that can be built and run successfully on both Linux and Windows hosts. Signed-off-by: Bin Meng <bin.meng@windriver.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20220927110632.1973965-55-bmeng.cn@gmail.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
65a2eff0f5
commit
0b49bc1b71
@ -81,6 +81,36 @@ QTest cases can be executed with
|
||||
|
||||
make check-qtest
|
||||
|
||||
Writing portable test cases
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Both unit tests and qtests can run on POSIX hosts as well as Windows hosts.
|
||||
Care must be taken when writing portable test cases that can be built and run
|
||||
successfully on various hosts. The following list shows some best practices:
|
||||
|
||||
* Use portable APIs from glib whenever necessary, e.g.: g_setenv(),
|
||||
g_mkdtemp(), g_mkdir().
|
||||
* Avoid using hardcoded /tmp for temporary file directory.
|
||||
Use g_get_tmp_dir() instead.
|
||||
* Bear in mind that Windows has different special string representation for
|
||||
stdin/stdout/stderr and null devices. For example if your test case uses
|
||||
"/dev/fd/2" and "/dev/null" on Linux, remember to use "2" and "nul" on
|
||||
Windows instead. Also IO redirection does not work on Windows, so avoid
|
||||
using "2>nul" whenever necessary.
|
||||
* If your test cases uses the blkdebug feature, use relative path to pass
|
||||
the config and image file paths in the command line as Windows absolute
|
||||
path contains the delimiter ":" which will confuse the blkdebug parser.
|
||||
* Use double quotes in your extra QEMU commmand line in your test cases
|
||||
instead of single quotes, as Windows does not drop single quotes when
|
||||
passing the command line to QEMU.
|
||||
* Windows opens a file in text mode by default, while a POSIX compliant
|
||||
implementation treats text files and binary files the same. So if your
|
||||
test cases opens a file to write some data and later wants to compare the
|
||||
written data with the original one, be sure to pass the letter 'b' as
|
||||
part of the mode string to fopen(), or O_BINARY flag for the open() call.
|
||||
* If a certain test case can only run on POSIX or Linux hosts, use a proper
|
||||
#ifdef in the codes. If the whole test suite cannot run on Windows, disable
|
||||
the build in the meson.build file.
|
||||
|
||||
QAPI schema tests
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user