aboutsummaryrefslogtreecommitdiffstats
path: root/t/001_check_file.t
diff options
context:
space:
mode:
Diffstat (limited to 't/001_check_file.t')
-rw-r--r--t/001_check_file.t97
1 files changed, 97 insertions, 0 deletions
diff --git a/t/001_check_file.t b/t/001_check_file.t
new file mode 100644
index 0000000..f82b149
--- /dev/null
+++ b/t/001_check_file.t
@@ -0,0 +1,97 @@
+#
+#
+#
+
+use Test::Most;
+use File::Basename;
+use Tools;
+
+my ($image_path) = @ARGV;
+
+my $name = basename($image_path);
+my %info = ();
+
+bail_on_fail;
+
+note $image_path;
+note $name;
+
+%info = Tools::parse_mageia_iso_name($name);
+if (scalar %info) {
+ pass 'ISO has valid filename.';
+ while (my ($k, $v) = each %info) {
+ note uc($k), "=$v\n";
+ }
+} else {
+ fail 'ISO has valid filename.';
+ diag 'See https://wiki.mageia.org/en/Product_naming';
+}
+
+# are files available?
+ok -r $image_path, 'ISO file is readable.'
+ or diag("$image_path: $!");
+
+# is file size correct?
+my $du = `du --apparent-size --block-size=M $image_path`;
+my @size_name = split(/\t/, $du);
+my $size = $size_name[0];
+
+# FIXME put correct sizes here
+my %max_sizes = ( "CD" => "740M", "DVD" => "4200M" );
+ok ($size le $max_sizes{$info{"medium"}},
+ sprintf("File has a working size (%s) for its medium type (%s, max %s).",
+ $size, $info{"medium"}, $max_sizes{$info{"medium"}}));
+
+#
+ok -r $image_path . '.md5', 'MD5 checksum is available.';
+ok -r $image_path . '.sha1', 'SHA1 checkum is available.';
+
+TODO: {
+ local $TODO = ".idx & .lst" if 1;
+
+ ok -r $image_path, '.idx list file is available.';
+ ok -r $image_path, '.lst list file is available.';
+}
+
+
+# verify checksums
+my $md5file = $image_path . '.md5';
+my $sha1file = $image_path . '.sha1';
+
+my @ts = split(/ /, `md5sum $image_path`);
+my $md5 = $ts[0];
+@ts = split(/ /, `cat $md5file`);
+$md5file = $ts[0];
+is ($md5, $md5file, 'MD5/.md5 checksums match.');
+
+@ts = split(/ /, `sha1sum $image_path`);
+my $sha1 = $ts[0];
+@ts = split(/ /, `cat $sha1file`);
+$sha1file = $ts[0];
+is ($sha1, $sha1file, 'SHA1/.sha1 checksums match.');
+
+
+# inspect iso definition
+my $volume_id = `isoinfo -d -i $image_path | grep "Volume id"`;
+my @info = (0, 0, 0, 0);
+my @temp = split(/ /, $volume_id);
+
+note ('TODO, test to check here!');
+
+
+# bootable?
+ok (`isoinfo -d -i $image_path | grep bootable`, 'ISO is bootable.');
+
+# TODO check burnable?
+my $burner = "/dev/sr0";
+
+# FIXME is -eject really needed?
+my $_burning = `cdrecord -dummy speed=42 dev=$burner -v -eject -data $image_path 2> is_burnable.log`;
+my $result = `cat is_burnable.log | grep overburn | wc -l | tr -d '\n'`;
+
+-r "is_burnable.log" and system "rm is_burnable.log";
+
+is ($result, 0, "ISO can be burnt.");
+
+
+done_testing();