diff options
Diffstat (limited to 'test/udevstart-test.pl')
-rw-r--r-- | test/udevstart-test.pl | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/test/udevstart-test.pl b/test/udevstart-test.pl new file mode 100644 index 0000000000..b6f85bb38c --- /dev/null +++ b/test/udevstart-test.pl @@ -0,0 +1,58 @@ +#!/usr/bin/perl + +# udevstart-test +# +# runs udevstart in a temporary directory with our test sysfs-tree +# and counts the created nodes to compare it with the expected numbers. +# +# Kay Sievers <kay.sievers@vrfy.org>, 2005 +# + +use warnings; +use strict; + +my $PWD = $ENV{PWD}; +my $sysfs = "sys/"; +my $udev_bin = "../udev"; +my $udev_root = "udev-root/"; # !!! directory will be removed !!! +my $udev_db = ".udevdb"; +my $main_conf = "udev-test.conf"; +my $conf_tmp = "udev-test.rules"; + +# set env +$ENV{UDEV_TEST} = "yes"; +$ENV{SYSFS_PATH} = $sysfs; +$ENV{UDEV_CONFIG_FILE} = $main_conf; +$ENV{UDEV_NO_DEVD} = "yes"; +$ENV{UDEV_NO_HOTPLUGD} = "yes"; + +# due to mknod restrictions +if (!($<==0)) { + print "Must have root permissions to run properly.\n"; + exit; +} + +# prepare +system("rm -rf $udev_root"); +mkdir($udev_root) || die "unable to create udev_root: $udev_root\n"; + +# create initial config file +open CONF, ">$main_conf" || die "unable to create config file: $main_conf"; +print CONF "udev_root=\"$udev_root\"\n"; +print CONF "udev_db=\"$udev_db\"\n"; +print CONF "udev_rules=\"$conf_tmp\"\n"; +close CONF; + +system("$udev_bin udevstart"); +my $block = int( `find $udev_root -type b -print | wc -l`); +my $char = int( `find $udev_root -type c -print | wc -l`); + +print "block devices: $block/10\n"; +print "char devices: $char/91\n"; + +# cleanup +system("rm -rf $udev_db"); +system("rm -rf $udev_root"); +unlink($conf_tmp); +unlink($main_conf); + |