diff options
Diffstat (limited to 'image_tests/001_check_file.t')
-rw-r--r-- | image_tests/001_check_file.t | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/image_tests/001_check_file.t b/image_tests/001_check_file.t new file mode 100644 index 0000000..26e331a --- /dev/null +++ b/image_tests/001_check_file.t @@ -0,0 +1,118 @@ +# 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 Test::Most; +use File::Basename; +use Isocheck; + +my ($image_path) = @ARGV; + +my $name = basename($image_path); +my %info; + +bail_on_fail; + +%info = Isocheck::parse_image_file_name($name); +if (scalar %info) { + pass 'ISO has valid filename.'; + while (my ($k, $v) = each %info) { + note uc($k), "=$v\n" if defined $v; + } +} else { + fail 'ISO has valid filename.'; + diag 'See https://wiki.mageia.org/en/Product_naming for more information.'; +} + +# 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}})); + +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.'); + + +# check ISO header info +# Check (see http://wiki.mandriva.com/en/Product_id) +my $isoinfo = `isoinfo -d -i $image_path`; +my %isoValues = ( + "System id", "LINUX", + "Volume id", "$info{name} $info{version} $info{release}", # TODO not defined for sure yet + "Volume set id", "$info{name} $info{version} $info{release} $info{variant} $info{arch} $info{medium}", # TODO $info{'build'} ? + "Publisher id", "Mageia.Org", + "Data preparer id", "", # ? + "Copyright File id", "http://www.mageia.org/2/license/", + "Abstract File id", "http://www.mageia.org/2/" +); + +my $testval; +while (my ($k, $v) = each(%isoValues)) { + $testval = `printf "%s\n" "$isoinfo" | grep -i "$k:" |tr -d '\n'`; + + # not testing right now, all expected values are not sure yet. + # is $testval, "$k: $v", "$k is correct. Found $testval."; + note "Found: $testval - expecting: $k: $v"; +} + + +# 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(); |