From: Thomas Huth <thuth@redhat.com>
To: Stefan Hajnoczi <stefanha@redhat.com>, qemu-devel@nongnu.org
Cc: "Bin Meng" <bin.meng@windriver.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [PULL 37/37] docs/devel: testing: Document writing portable test cases
Date: Wed, 28 Sep 2022 09:18:43 +0200 [thread overview]
Message-ID: <20220928071843.1468323-38-thuth@redhat.com> (raw)
In-Reply-To: <20220928071843.1468323-1-thuth@redhat.com>
From: Bin Meng <bin.meng@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.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>
---
docs/devel/testing.rst | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
index aea5b42356..fbb98faabe 100644
--- a/docs/devel/testing.rst
+++ b/docs/devel/testing.rst
@@ -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
~~~~~~~~~~~~~~~~~
--
2.31.1
next prev parent reply other threads:[~2022-09-28 9:42 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-28 7:18 [PULL 00/37] qtests fixes Thomas Huth
2022-09-28 7:18 ` [PULL 01/37] tests/qtest: i440fx-test: Rewrite create_blob_file() to be portable Thomas Huth
2022-09-28 7:18 ` [PULL 02/37] tests/qtest: ahci-test: Avoid using hardcoded /tmp Thomas Huth
2022-09-28 7:18 ` [PULL 03/37] tests/qtest: aspeed_smc-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 04/37] tests/qtest: boot-serial-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 05/37] tests/qtest: cxl-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 06/37] tests/qtest: fdc-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 07/37] tests/qtest: generic_fuzz: " Thomas Huth
2022-09-28 7:18 ` [PULL 08/37] tests/qtest: virtio_blk_fuzz: " Thomas Huth
2022-09-28 7:18 ` [PULL 09/37] tests/qtest: ide-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 10/37] tests/qtest: vhost-user-blk-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 11/37] tests/qtest: virtio-blk-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 12/37] tests/qtest: virtio-scsi-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 13/37] tests/qtest: libqtest: " Thomas Huth
2022-09-28 7:18 ` [PULL 14/37] tests/unit: test-image-locking: " Thomas Huth
2022-09-28 7:18 ` [PULL 15/37] tests/unit: test-qga: " Thomas Huth
2022-09-28 7:18 ` [PULL 16/37] tests: vhost-user-bridge: " Thomas Huth
2022-09-28 7:18 ` [PULL 17/37] tests/qtest: Skip running virtio-net-test cases that require socketpair() for win32 Thomas Huth
2022-09-28 7:18 ` [PULL 18/37] tests/qtest: Build test-filter-{mirror, redirector} cases for posix only Thomas Huth
2022-09-28 7:18 ` [PULL 19/37] tests/qtest: qmp-test: Skip running test_qmp_oob for win32 Thomas Huth
2022-09-28 7:18 ` [PULL 20/37] tests/qtest: libqtest: Adapt global_qtest declaration " Thomas Huth
2022-09-28 7:18 ` [PULL 21/37] tests/qtest: libqtest: Exclude the *_fds APIs " Thomas Huth
2022-09-28 7:18 ` [PULL 22/37] tests/qtest: {ahci, ide}-test: Use relative path for temporary files " Thomas Huth
2022-09-28 7:18 ` [PULL 23/37] tests/qtest: bios-tables-test: Adapt the case " Thomas Huth
2022-09-28 7:18 ` [PULL 24/37] tests/qtest: migration-test: Disable IO redirection " Thomas Huth
2022-09-28 7:18 ` [PULL 25/37] tests/qtest: ide-test: Open file in binary mode Thomas Huth
2022-09-28 7:18 ` [PULL 26/37] tests/qtest: virtio-net-failover: Disable migration tests for win32 Thomas Huth
2022-09-28 7:18 ` [PULL 27/37] tests/qtest: microbit-test: Fix socket access " Thomas Huth
2022-09-28 7:18 ` [PULL 28/37] tests/qtest: libqtest: Replace the call to close a socket with closesocket() Thomas Huth
2022-09-28 7:18 ` [PULL 29/37] tests/qtest: migration-test: Skip running some TLS cases for win32 Thomas Huth
2022-09-28 7:18 ` [PULL 30/37] .gitlab-ci.d/windows.yml: Display meson test logs Thomas Huth
2022-09-28 7:18 ` [PULL 31/37] tests/x86: Move common code to function in device-plug-test Thomas Huth
2022-09-28 7:18 ` [PULL 32/37] tests/qtest: hd-geo-test: Avoid using hardcoded /tmp Thomas Huth
2022-09-28 7:18 ` [PULL 33/37] tests/qtest: pflash-cfi02-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 34/37] tests/qtest: qmp-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 35/37] tests/qtest: vhost-user-test: " Thomas Huth
2022-09-28 7:18 ` [PULL 36/37] tests/qtest: boot-serial-test: Close the serial file before starting QEMU Thomas Huth
2022-09-28 7:18 ` Thomas Huth [this message]
2022-09-29 14:49 ` [PULL 00/37] qtests fixes Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220928071843.1468323-38-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=bin.meng@windriver.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.