qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] test-logging: don't hard-code paths in /tmp


From: Sascha Silbe
Subject: Re: [Qemu-devel] [PATCH] test-logging: don't hard-code paths in /tmp
Date: Mon, 15 Aug 2016 20:24:12 +0200
User-agent: Notmuch/0.22.1~rc0 (http://notmuchmail.org) Emacs/24.3.1 (x86_64-pc-linux-gnu)

Dear Peter,

Peter Maydell <address@hidden> writes:

> On 15 July 2016 at 17:24, Sascha Silbe <address@hidden> wrote:
[...]
>> Instead of hard-coding the paths, create a temporary directory using
>> g_dir_make_tmp() and clean it up afterwards.
>>
>> Fixes: f6880b7f ("qemu-log: support simple pid substitution for logs")
>> Signed-off-by: Sascha Silbe <address@hidden>
>
> Thanks for this patch -- I just noticed that the test was leaving
> temporary files not cleaned up, which brought me to this patch
> by searching the mail archives...

I have totally forgotten about it. Would probably have remembered the
next time "make check" failed on a shared machine. ;)


[tests/test-logging.c:test_parse_path()]
>> +    gchar *plain_path = g_build_filename(tmp_path, "qemu.log", NULL);
>> +    gchar *pid_infix_path = g_build_filename(tmp_path, "qemu-%d.log", NULL);
>> +    gchar *pid_suffix_path = g_build_filename(tmp_path, "qemu.log.%d", 
>> NULL);
>> +    gchar *double_pid_path = g_build_filename(tmp_path, "qemu-%d%d.log", 
>> NULL);
[...]
> This could usefully be refactored to have a helper function that does
> the g_build_filename/qemu_set_log_filename/g_free.

I wasn't sure about it but it actually ended up being a bit nicer than
what I had before.


>> +static void rmtree(gchar const *root)
[...]
> I don't really like spawning rm here for this. We know we
> don't have any subdirectories here so we can just
>    gdir = g_dir_open(root, 0, NULL);
>    for (;;) {
>        const char *f = g_dir_read_name(gdir);
>        if (!f) {
>            break;
>        }
>        g_remove(f);
>    }
>    g_dir_close(gdir);
>    g_rmdir(root);
>
> (add error handling to taste).

I don't really like the rm spawning solution either. But the above plus
error handling was a bit much for a single test for my taste.

Is there some place I could stick something like the above so it could
at least be reused by other tests in the future? (Even though I very
much hate the idea of implementing yet another rmtree()).


[...]
>>  int main(int argc, char **argv)
>>  {
>> +    gchar *tmp_path = g_dir_make_tmp("qemu-test-logging.XXXXXX", NULL);
>
> Unfortunately g_dir_make_tmp() only came in in glib 2.30, and we have
> to be able to build with glib 2.22.

Bummer. The old interfaces were really awkward. Is there somewhere I
could put a compatibility wrapper, implementing g_dir_make_tmp() using
the old interfaces?


Thanks for the review!

Sascha
-- 
Softwareentwicklung Sascha Silbe, Niederhofenstraße 5/1, 71229 Leonberg
https://se-silbe.de/
USt-IdNr. DE281696641




reply via email to

[Prev in Thread] Current Thread [Next in Thread]