summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2017-06-02 16:59:09 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2017-06-09 07:48:55 +1000
commit57d4d7d3b4b2558418f9eb7bd8c88c807f907a72 (patch)
treec22df790f2c567145234ef65c2f96acfdf2a0ecc
parenta369b2c2082d144056f2cb7aeb0b9afea98499e7 (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>
-rw-r--r--test/litest.c25
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);