mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-21 21:25:25 +00:00
virschematest: Don't skip all "directory" tests
Due to a bug in the optimization to avoid testing symlinked tests multiple times all tests were skipped. In commitf997fcca71
I made an attempt to optimize the tests by avoiding testing symlinks. This optimization was buggy as I've passed the 'd_name' field of 'struct dirent' which is just the filename to 'g_lstat()'. 'g_lstat()' obviously always failed with ENOENT. As the logic checked only for successful return of 'g_lstat()' the optimizatio was a dud. Now in4d8ebbfee8
the 'g_lstat()' call was replaced by 'virFileIsLink()' checking all non-zero values. This meant that if 'virFileIsLink()' failed the test was skipped. Now since a bad argument was passed this failed always and thus was always skipped making 'virschematest' useless. Fix it by passing the full path of the test and also explicitly check for '1' return value instead of any non-zero. Fixes:f997fcca71
Fixes:4d8ebbfee8
Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
99dadf9e08
commit
f850c2a569
@ -124,8 +124,6 @@ testSchemaDir(const char *schema,
|
||||
continue;
|
||||
if (ent->d_name[0] == '.')
|
||||
continue;
|
||||
if (virFileIsLink(ent->d_name))
|
||||
continue;
|
||||
if (filter &&
|
||||
!g_regex_match(filter, ent->d_name, 0, NULL))
|
||||
continue;
|
||||
@ -134,11 +132,14 @@ testSchemaDir(const char *schema,
|
||||
g_strv_contains(entry->skip, ent->d_name))
|
||||
continue;
|
||||
|
||||
xml_path = g_strdup_printf("%s/%s", dir_path, ent->d_name);
|
||||
|
||||
if (virFileIsLink(xml_path) == 1)
|
||||
continue;
|
||||
|
||||
if (entry->exceptions)
|
||||
exception = g_strv_contains(entry->exceptions, ent->d_name);
|
||||
|
||||
xml_path = g_strdup_printf("%s/%s", dir_path, ent->d_name);
|
||||
|
||||
if (testSchemaFile(schema, validator, xml_path, exception) < 0)
|
||||
ret = -1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user