On Wednesday, 2017-06-07 11:28:28 +1000, Peter Hutterer wrote:
> This makes it possible to run multiple test suite simultaneously on the same
> host without messing up the other runs (provided that all instances use
> the same udev/hwdb files). Previously, removing the udev rules/hwdb at the end
> of a test run would cause test case failures in other runs that hadn't
> completed yet.
> 
> Signed-off-by: Peter Hutterer <[email protected]>
> ---
>  test/litest.c | 25 ++++++++++++++++---------
>  1 file changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/test/litest.c b/test/litest.c
> index ef474455..8991ed54 100644
> --- a/test/litest.c
> +++ b/test/litest.c
> @@ -55,13 +55,13 @@
>  #define UDEV_RULE_PREFIX "99-litest-"
>  #define UDEV_HWDB_D "/etc/udev/hwdb.d"
>  #define UDEV_MODEL_QUIRKS_RULE_FILE UDEV_RULES_D \
> -     "/91-litest-model-quirks-REMOVEME.rules"
> +     "/91-litest-model-quirks-REMOVEME-XXXXXX.rules"
>  #define UDEV_MODEL_QUIRKS_HWDB_FILE UDEV_HWDB_D \
> -     "/91-litest-model-quirks-REMOVEME.hwdb"
> +     "/91-litest-model-quirks-REMOVEME-XXXXXX.hwdb"
>  #define UDEV_TEST_DEVICE_RULE_FILE UDEV_RULES_D \
> -     "/91-litest-test-device-REMOVEME.rules"
> +     "/91-litest-test-device-REMOVEME-XXXXXXX.rules"
>  #define UDEV_DEVICE_GROUPS_FILE UDEV_RULES_D \
> -     "/80-libinput-device-groups-litest.rules"
> +     "/80-libinput-device-groups-litest-XXXXXX.rules"
>  
>  static int jobs = 8;
>  static int in_debugger = -1;
> @@ -1125,17 +1125,20 @@ litest_copy_file(const char *dest, const char *src, 
> const char *header)
>  {
>       int in, out, length;
>       struct created_file *file;
> +     long int suffixlen;

My man says `int suffixlen` (without `long`), but it doesn't really
matter. Everything else looks good to me:
Reviewed-by: Eric Engestrom <[email protected]>

>  
>       file = zalloc(sizeof(*file));
>       litest_assert(file);
>       file->path = strdup(dest);
>       litest_assert(file->path);
>  
> -     out = open(dest, O_CREAT|O_WRONLY, 0644);
> +     suffixlen = file->path + strlen(file->path)  - rindex(file->path, '.');
> +     out = mkstemps(file->path, suffixlen);
>       if (out == -1)
>               litest_abort_msg("Failed to write to file %s (%s)\n",
> -                              dest,
> +                              file->path,
>                                strerror(errno));
> +     litest_assert_int_ne(chmod(file->path, 0644), -1);
>  
>       if (header) {
>               length = strlen(header);
> @@ -1228,6 +1231,7 @@ static char *
>  litest_init_device_udev_rules(struct litest_test_device *dev)
>  {
>       int rc;
> +     int fd;
>       FILE *f;
>       char *path = NULL;
>  
> @@ -1235,7 +1239,7 @@ litest_init_device_udev_rules(struct litest_test_device 
> *dev)
>               return NULL;
>  
>       rc = xasprintf(&path,
> -                   "%s/%s%s.rules",
> +                   "%s/%s%s-XXXXXX.rules",
>                     UDEV_RULES_D,
>                     UDEV_RULE_PREFIX,
>                     dev->shortname);
> @@ -1243,8 +1247,11 @@ litest_init_device_udev_rules(struct 
> litest_test_device *dev)
>                            (int)(
>                                  strlen(UDEV_RULES_D) +
>                                  strlen(UDEV_RULE_PREFIX) +
> -                                strlen(dev->shortname) + 7));
> -     f = fopen(path, "w");
> +                                strlen(dev->shortname) + 14));
> +
> +     fd = mkstemps(path, 6);
> +     litest_assert_int_ne(fd, -1);
> +     f = fdopen(fd, "w");
>       litest_assert_notnull(f);
>       litest_assert_int_ge(fputs(dev->udev_rule, f), 0);
>       fclose(f);
> -- 
> 2.13.0
> 
> _______________________________________________
> wayland-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel
_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to