]> git.draconx.ca Git - liblbx.git/commitdiff
tests: Add test for truncated archives.
authorNick Bowler <nbowler@draconx.ca>
Fri, 31 Jan 2014 05:01:40 +0000 (00:01 -0500)
committerNick Bowler <nbowler@draconx.ca>
Fri, 31 Jan 2014 05:41:02 +0000 (00:41 -0500)
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.

Makefile.am
tests/broken-archives.tap [new file with mode: 0644]
tests/testdata/arch-trunc.lbx [new file with mode: 0644]

index cd7d3737ffeccfbdac16f0fbb5dfecfce2db98ae..5d40a7515824190af14ba5aebed671413e2c502f 100644 (file)
@@ -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 (file)
index 0000000..3997ca3
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+
+. "$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 (file)
index 0000000..8307f43
Binary files /dev/null and b/tests/testdata/arch-trunc.lbx differ