From 3d953b0065d983dd3fdee84c2de401bdc70bc3d5 Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Wed, 21 Sep 2016 01:03:12 +0000 Subject: [PATCH] bug 60158: add failing test cases for AIOOBE on VBAMacroReader git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1761652 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/macros/TestVBAMacroReader.java | 18 +++++++++++++++++- test-data/document/60158.docm | Bin 0 -> 15617 bytes 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 test-data/document/60158.docm diff --git a/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java b/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java index 2d98a4f38d..6693a52275 100644 --- a/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java +++ b/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java @@ -262,6 +262,10 @@ public class TestVBAMacroReader { reader.close(); } + private void skipTest(Throwable e) { + assumeTrue("This test currently fails." + e.getLocalizedMessage(), false); + } + // This test is written as expected-to-fail and should be rewritten // as expected-to-pass when the bug is fixed. @Test @@ -273,11 +277,23 @@ public class TestVBAMacroReader { if (e.getMessage().matches("Module offset for '.+' was never read.")) { //e.printStackTrace(); // NPE when reading module.offset in VBAMacroReader.readMacros (approx line 258) - assumeTrue("This test currently fails. See stdout.", false); + skipTest(e); } else { // something unexpected failed throw e; } } } + + // This test is written as expected-to-fail and should be rewritten + // as expected-to-pass when the bug is fixed. + @Test + public void bug60158() throws IOException { + try { + fromFile(POIDataSamples.getDocumentInstance(), "60158.docm"); + fail("This test passes now. Please update the unit test and bug 59858."); + } catch (ArrayIndexOutOfBoundsException e) { + skipTest(e); + } + } } diff --git a/test-data/document/60158.docm b/test-data/document/60158.docm new file mode 100644 index 0000000000000000000000000000000000000000..2b7908fe3ced68a794f1dfda7153604d453296c0 GIT binary patch literal 15617 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 bZ_|jJB