Hi

On Wed, Aug 24, 2022 at 2:57 PM Bin Meng <bmeng...@gmail.com> wrote:

> From: Bin Meng <bin.m...@windriver.com>
>
> 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.m...@windriver.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>


> ---
>
>  docs/devel/testing.rst | 30 ++++++++++++++++++++++++++++++
>  1 file changed, 30 insertions(+)
>
> diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
> index 3f6ebd5073..8fcabda30f 100644
> --- a/docs/devel/testing.rst
> +++ b/docs/devel/testing.rst
> @@ -115,6 +115,36 @@ check-block
>  are in the "auto" group).
>  See the "QEMU iotests" section below for more information.
>
> +Writing portable test cases
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +Both unit tests and qtests can run on a Linux host as well as a Windows
> host.
>

I believe they can work on other hosts too :)

"can run on a Windows host."


> +Care must be taken when writing portable test cases that can be built and
> run
> +successfully on both hosts. The following are some best practices:
>

"on various hosts"


> +
> +* Use portable APIs from glib whenever necessary, e.g.: g_setenv(),
> +  g_mkdtemp(), g_mkdir_with_parents().
> +* 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 delimeter ":" 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.
> +
>  QEMU iotests
>  ------------
>
> --
> 2.34.1
>
>
>

-- 
Marc-André Lureau

Reply via email to