Introduce a qtest_init version that does not go through the QMP handshake, but does pass the test binary environment variables forward. This is needed so we can run a simpler instance of QEMU with -machine, but not much else.
The existing qtest_init_without_qmp_handshake() is not enough because this time we want to pass along the special QTEST_QEMU_BINARY_SRC|DST environment variables. Signed-off-by: Fabiano Rosas <faro...@suse.de> --- tests/qtest/libqtest.c | 14 +++++++++----- tests/qtest/libqtest.h | 13 +++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index d8f80d335e..911e45e189 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -513,11 +513,6 @@ static QTestState *qtest_init_internal(const char *qemu_bin, kill(s->qemu_pid, SIGSTOP); } #endif - - /* ask endianness of the target */ - - s->big_endian = qtest_query_target_endianness(s); - return s; } @@ -526,11 +521,20 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args) return qtest_init_internal(qtest_qemu_binary(NULL), extra_args); } +QTestState *qtest_init_with_env_no_handshake(const char *var, + const char *extra_args) +{ + return qtest_init_internal(qtest_qemu_binary(var), extra_args); +} + QTestState *qtest_init_with_env(const char *var, const char *extra_args) { QTestState *s = qtest_init_internal(qtest_qemu_binary(var), extra_args); QDict *greeting; + /* ask endianness of the target */ + s->big_endian = qtest_query_target_endianness(s); + /* Read the QMP greeting and then do the handshake */ greeting = qtest_qmp_receive(s); qobject_unref(greeting); diff --git a/tests/qtest/libqtest.h b/tests/qtest/libqtest.h index 6e3d3525bf..5e5554b5ad 100644 --- a/tests/qtest/libqtest.h +++ b/tests/qtest/libqtest.h @@ -68,6 +68,19 @@ QTestState *qtest_init(const char *extra_args); */ QTestState *qtest_init_with_env(const char *var, const char *extra_args); +/** + * qtest_init_with_env_no_handshake: + * @var: Environment variable from where to take the QEMU binary + * @extra_args: Other arguments to pass to QEMU. CAUTION: these + * arguments are subject to word splitting and shell evaluation. + * + * Like qtest_init_with_env(), but skip the qmp handshake. + * + * Returns: #QTestState instance. + */ +QTestState *qtest_init_with_env_no_handshake(const char *var, + const char *extra_args); + /** * qtest_init_without_qmp_handshake: * @extra_args: other arguments to pass to QEMU. CAUTION: these -- 2.35.3