# # # 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 for more information.'; } # 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=MB $image_path`; my @size_name = split(/\t/, $du); my $size = $size_name[0]; # Correct sizes: CD == 700MB & DVD == 4,700.373MB my %max_sizes = ( "CD" => "700MB", "DVD" => "4700MB" ); 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();