test/udev-test.pl: test correctness of symlink targets

Test if symlinks are created correctly by comparing the symlink
targets to the devnode path. This implies (for the symlink) that
major/minor numbers and permissions are correct, as we have tested
that on the devnode already.
This commit is contained in:
Martin Wilck
2020-11-02 11:43:14 +01:00
committed by Michal Sekletár
parent f0dccf01a7
commit 997683c8f1
+18 -5
View File
@@ -22,6 +22,7 @@ use POSIX qw(WIFEXITED WEXITSTATUS);
use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR IPC_CREAT);
use IPC::Semaphore;
use Time::HiRes qw(usleep);
use Cwd qw(getcwd abs_path);
my $udev_bin = "./test-udev";
my $valgrind = 0;
@@ -2243,14 +2244,26 @@ sub check_add {
my $devnode = check_devnode($device);
print "device \'$device->{devpath}\' expecting node/link \'$device->{exp_name}\'\n";
return if (!defined($device->{exp_name}));
if ((-e "$udev_dev/$device->{exp_name}") ||
(-l "$udev_dev/$device->{exp_name}")) {
print "add $device->{devpath}: ok\n";
my @st = lstat("$udev_dev/$device->{exp_name}");
if (-l _) {
my $cwd = getcwd();
my $dir = "$udev_dev/$device->{exp_name}";
$dir =~ s!/[^/]*$!!;
my $tgt = readlink("$udev_dev/$device->{exp_name}");
$tgt = abs_path("$dir/$tgt");
$tgt =~ s!^$cwd/!!;
if ($tgt ne $devnode) {
print "symlink $device->{exp_name}: error, found -> $tgt\n";
$error++;
system("tree", "$udev_dev");
} else {
print "symlink $device->{exp_name}: ok\n";
}
} else {
print "add $device->{devpath}: error";
print "symlink $device->{exp_name}: error";
if ($device->{exp_add_error}) {
print " as expected\n";
} else {