On 12/18/23 15:26, Peter Krempa wrote:
On Mon, Dec 18, 2023 at 15:17:01 +0100, Michal Prívozník wrote:
> On 12/18/23 12:02, Peter Krempa wrote:
>> We don't want to ever run an actuall command in qemuxml2argvtest poison
>> the helper functions we have for running commands.
>>
>> Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
>> ---
>> src/util/vircommand.h | 4 ++--
>> tests/qemuxml2argvmock.c | 19 +++++++++++++++++++
>> 2 files changed, 21 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/util/vircommand.h b/src/util/vircommand.h
>> index 9bcdce35b9..566ac15947 100644
>> --- a/src/util/vircommand.h
>> +++ b/src/util/vircommand.h
>> @@ -39,7 +39,7 @@ typedef struct _virCommand virCommand;
>> * call any function that is not async-signal-safe. */
>> typedef int (*virExecHook)(void *data);
>>
>> -pid_t virFork(void) G_GNUC_WARN_UNUSED_RESULT;
>> +pid_t virFork(void) G_GNUC_WARN_UNUSED_RESULT G_NO_INLINE;
>>
>> virCommand *virCommandNew(const char *binary) ATTRIBUTE_NONNULL(1);
>>
>> @@ -184,7 +184,7 @@ int virCommandGetArgList(virCommand *cmd, char ***args);
>> int virCommandExec(virCommand *cmd, gid_t *groups, int ngroups)
G_GNUC_WARN_UNUSED_RESULT;
>>
>> int virCommandRun(virCommand *cmd,
>> - int *exitstatus) G_GNUC_WARN_UNUSED_RESULT;
>> + int *exitstatus) G_GNUC_WARN_UNUSED_RESULT G_NO_INLINE;
>>
>> int virCommandRunAsync(virCommand *cmd,
>> pid_t *pid) G_GNUC_WARN_UNUSED_RESULT;
>> diff --git a/tests/qemuxml2argvmock.c b/tests/qemuxml2argvmock.c
>> index 2deccd79c4..0ee8fbba79 100644
>> --- a/tests/qemuxml2argvmock.c
>> +++ b/tests/qemuxml2argvmock.c
>> @@ -276,3 +276,22 @@ qemuExtVhostUserGPUPrepareDomain(virQEMUDriver *driver
G_GNUC_UNUSED,
>> {
>> return 0;
>> }
>> +
>> +
>> +int
>> +virCommandRun(virCommand *cmd,
>> + int *exitstatus G_GNUC_UNUSED)
>> +{
>> + const char *path = virCommandGetBinaryPath(cmd);
>> +
>> + fprintf(stderr, "\nattempted virCommandRun() (path=%s) from test
context\n", NULLSTR(path));
>> + return -1;
>> +}
>> +
>> +
>> +pid_t
>> +virFork(void)
>> +{
>> + fprintf(stderr, "\nattempted virFork() in test context\n");
>> + return -1;
>> +}
>
> Any reason to mock both? Or is it just to provide nicer error message?
Reasonable error message is reported already by virCommandRun. I just
wanted to make sure that the test doesn't try to even fork for any other
reason, thus I've picked our other helper to prevent that too (IIRC
plain fork() is forbidden by syntax-check).
Yeah, we have a syntax-check to enforce virFork(), so mocking just
virFork() should be fine. In the end, virCommandRun() does call
virFork(). I don't mind and don't want to bikeshed. Feel free to push
your patch as is. I was just curious.
Michal