From: Nick Bowler Date: Fri, 31 Jan 2014 05:01:40 +0000 (-0500) Subject: tests: Add test for truncated archives. X-Git-Url: http://git.draconx.ca/gitweb/liblbx.git/commitdiff_plain/8e1fbe44dde847482ecdf54f97d31a5322a2fd92 tests: Add test for truncated archives. If a real EOF is encountered while reading an archive member this will not be properly reported as a read error. So we'll never notice if extracted files are missing a chunk because the archive is truncated. Add a test which exposes this behaviour. --- diff --git a/Makefile.am b/Makefile.am index cd7d373..5d40a75 100644 --- a/Makefile.am +++ b/Makefile.am @@ -55,9 +55,9 @@ TAP_LOG_COMPILER = $(SHELL) TAP_LOG_DRIVER = AM_TAP_AWK='$(AWK)' \ $(SHELL) $(srcdir)/tests/util/tap-driver.sh -TESTS = tests/empty-image.tap tests/pam-formats.tap tests/moo2-mainmenu.tap \ - tests/moo2-logo.tap tests/moo2-starbg.tap tests/moo2-ships.tap \ - tests/moo2-monster.tap +TESTS = tests/broken-archives.tap tests/empty-image.tap tests/pam-formats.tap \ + tests/moo2-mainmenu.tap tests/moo2-logo.tap tests/moo2-starbg.tap \ + tests/moo2-ships.tap tests/moo2-monster.tap mostlyclean-local: clean-testdirs clean-testdirs: diff --git a/tests/broken-archives.tap b/tests/broken-archives.tap new file mode 100644 index 0000000..3997ca3 --- /dev/null +++ b/tests/broken-archives.tap @@ -0,0 +1,27 @@ +#!/bin/sh +# +# 2ooM: The Master of Orion II Reverse Engineering Project +# Test that EOF when unpacking an archive is an error. +# Copyright © 2014 Nick Bowler +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. "$srcdir/tests/util/test-init.sh" || exit 99 + +plan_ 1 +dx_create_testdir + +failed=false +$LBXTOOL -xf "$testdata/arch-trunc.lbx" || failed=true +command_ok_ "EOF handled in archive" -D TODO $failed diff --git a/tests/testdata/arch-trunc.lbx b/tests/testdata/arch-trunc.lbx new file mode 100644 index 0000000..8307f43 Binary files /dev/null and b/tests/testdata/arch-trunc.lbx differ