summaryrefslogtreecommitdiff
path: root/test/udevstart-test.pl
diff options
context:
space:
mode:
Diffstat (limited to 'test/udevstart-test.pl')
-rw-r--r--test/udevstart-test.pl58
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);
+