aboutsummaryrefslogtreecommitdiffstats
path: root/isocheck.pl
diff options
context:
space:
mode:
Diffstat (limited to 'isocheck.pl')
-rw-r--r--isocheck.pl88
1 files changed, 88 insertions, 0 deletions
diff --git a/isocheck.pl b/isocheck.pl
new file mode 100644
index 0000000..446b5ad
--- /dev/null
+++ b/isocheck.pl
@@ -0,0 +1,88 @@
+#!/usr/bin/perl -w
+#
+# This file is part of the Mageia project
+# Copyright (C) 2011 Damien Lallement <dams@mageia.org>
+# (C) 2011 Romain d'Alverny <rda@mageia.org>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this library; see the file COPYING.LIB. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+#
+
+use 5.010;
+use MDK::Common;
+use TAP::Harness;
+use TAP::Parser::Aggregator;
+use Isocheck;
+
+my ($image_path) = @ARGV;
+
+if (!defined $image_path) {
+ print "Usage: ./test_iso.pl [ISO file]\nTry `./test_iso.pl --help' for more information.\n";
+ exit;
+}
+
+my $harness = TAP::Harness->new({
+ formatter_class => 'TAP::Formatter::Console',
+ merge => 1,
+ verbosity => 1,
+ normalize => 1,
+ color => 1,
+ test_args => [
+ $image_path,
+ "Testing"
+ ]
+});
+
+my $ts0 = time();
+
+print "# Date\t\t: ", `date --rfc-3339='ns' -u`;
+print "# Testing\t: $image_path\n";
+print "# Host\t\t: ", `uname -n`;
+
+my $aggregator = TAP::Parser::Aggregator->new;
+$aggregator->start;
+$harness->aggregate_tests($aggregator, glob('image_tests/*.t'));
+
+my $name = basename($image_path);
+my %info = Isocheck::parse_image_file_name($name);
+my @testfiles;
+
+if ($info{variant} =~ /^LiveCD/) {
+ @testfiles = glob('image_tests/live_iso/*.t');
+} else {
+ @testfiles = glob('image_tests/install_iso/*.t');
+}
+
+if (@testfiles) {
+ print "# Mounting ISO in /media/iso_check\n";
+ -r "/media/iso_check" or mkdir('/media/iso_check');
+ system "mount -r " . if_(!-b $image_path, "-o loop ") . "$image_path /media/iso_check/";
+
+ $harness->aggregate_tests($aggregator, @testfiles);
+
+ print "# Umounting ISO\n";
+ system('umount -l', '/media/iso_check');
+ rmdir('/media/iso_check');
+}
+
+$aggregator->stop;
+$harness->summary($aggregator);
+
+my $tdiff = time() - $ts0;
+print "# Tested $name in $tdiff seconds.\n";
+
+print $aggregator->all_passed, "\n", $aggregator->get_status, "\n";
+
+exit($aggregator->all_passed ? 0 : 1);