diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2017-06-02 16:59:09 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2017-06-09 07:48:55 +1000 |
commit | 57d4d7d3b4b2558418f9eb7bd8c88c807f907a72 (patch) | |
tree | c22df790f2c567145234ef65c2f96acfdf2a0ecc /test | |
parent | a369b2c2082d144056f2cb7aeb0b9afea98499e7 (diff) |
test: use unique names for all the test suite names
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 <peter.hutterer@who-t.net>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/litest.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/test/litest.c b/test/litest.c index 69f87aa..4ab681e 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; @@ -1124,17 +1124,20 @@ litest_copy_file(const char *dest, const char *src, const char *header) { int in, out, length; struct created_file *file; + int suffixlen; 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); @@ -1227,6 +1230,7 @@ static char * litest_init_device_udev_rules(struct litest_test_device *dev) { int rc; + int fd; FILE *f; char *path = NULL; @@ -1234,7 +1238,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); @@ -1242,8 +1246,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); |