diff options
author | Romain d'Alverny <rda@mageia.org> | 2011-12-05 22:55:33 +0000 |
---|---|---|
committer | Romain d'Alverny <rda@mageia.org> | 2011-12-05 22:55:33 +0000 |
commit | 586a59e00d00f2b1347f015911545b722f2d1f8b (patch) | |
tree | 0410ef511a253d5f94298c7f130527a4672c230f /t/003_is_hybrid.t | |
parent | 9412e3c3beb6d547f0932d4e1c19a9dfb0cd4378 (diff) | |
download | isocheck-586a59e00d00f2b1347f015911545b722f2d1f8b.tar isocheck-586a59e00d00f2b1347f015911545b722f2d1f8b.tar.gz isocheck-586a59e00d00f2b1347f015911545b722f2d1f8b.tar.bz2 isocheck-586a59e00d00f2b1347f015911545b722f2d1f8b.tar.xz isocheck-586a59e00d00f2b1347f015911545b722f2d1f8b.zip |
First import, test suite attempt for built ISOs
Code heavily taken from previous dams work,
reorganized in a test suite to better separate test cases.
Does basic things already (in t/).
Needs more fixes (esp. in t_install_iso/).
Diffstat (limited to 't/003_is_hybrid.t')
-rw-r--r-- | t/003_is_hybrid.t | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/t/003_is_hybrid.t b/t/003_is_hybrid.t new file mode 100644 index 0000000..37ccbcd --- /dev/null +++ b/t/003_is_hybrid.t @@ -0,0 +1,82 @@ +# +# +# +use Test::Most; + +bail_on_fail; + +my ($image_path) = @ARGV; + +ok (is_hybrid($image_path, 0), "Is hybrid"); + +# Verification if the Iso is hybrid +sub is_hybrid { + my ($img, $full) = @_; + + open(my $iso, $img); + my $hybrid = hybrid1($iso); + $hybrid &= hybrid2($iso); + $hybrid &= hybrid3($iso); + if ($full) { + # system "dd if=$img of=/dev/my-pendrive bs=8"; + } + close($iso); + + return $hybrid; +} + + +# Check the first 512 bytes of the iso +sub hybrid1 { + my ($iso) = @_; + my $buffer; + my $hybrid; + + foreach (0 .. 512) { + read($iso, $buffer, 1); + if ($buffer ne '\x00') { + $hybrid = 1; + } + } + + return $hybrid; +} + +#Check the 0x1fe & 0x1ff bytes of the iso +sub hybrid2 { + my ($iso) = @_; + my $hybrid; + my $buffer; + my $byte = "\x55"; + + seek($iso, 0x1fe, 0); + read($iso, $buffer, 1); + if ($buffer eq $byte) { + read($iso, $buffer, 1); + $byte = "\xaa"; + if ($buffer eq $byte) { + $hybrid = 1; + } + } + + return $hybrid; +} + +# check from the 0x200 to the 0x8000 bytes +sub hybrid3 { + my ($iso) = @_; + my $hybrid = 1; + my $buffer; + + seek($iso, 0x200, 0); + foreach (0x200 .. 0x8000) { + read($iso, $buffer, 1); + if ($buffer eq '\x00') { + $hybrid = 0; + } + } + + return $hybrid; +} + +done_testing(); |