> The TestTooManyEntries test was originally added to validate that ZIP64 files > with CEN sizes exceeding what ZipFile supports are rejected with a > ZipException. The test does this by creating a large ZIP file (several > gigabytes) with many enties. Because this is resource intensive, the test is > currently tagged as manual. (See #6927) > > It would be useful to have a test which asserts the CEN size enforcement, but > without the CPU, disk, memory and run time requirements of > TestTooManyEntries. Such a fast test can run non-manual, without the > @requires and manual tags as found in TestTooManyEntries. > > This PR adds the EndOfCenValidation test which creates sparse test ZIPs where > the CEN is "inflated" such that is matches the size declared in the "End of > central directory" records. > > While thee sparse files look large, they consume very little disk space on > file systems supporting sparse files: > > > 16 -rw-r--r-- 1 2147483702 Feb 6 18:54 bad-cen-offset.zip > 16 -rw-r--r-- 1 2147483703 Feb 6 18:54 cen-size-too-large.zip > 8 -rw-r--r-- 1 132 Feb 6 18:54 invalid-zen-size.zip > ``` > > For good measure, two new test methods are added to excercise the remaining > ZipExceptions which ZipFile may throw during validation of the END record .
Eirik Bjorsnos has updated the pull request incrementally with two additional commits since the last revision: - Add consistent '@throws IOException if an error occurs' tags to all methods throwing IOException - Revert "Remove @throws as per review feedback" This reverts commit 623d37496cdfd7b1dd45fbaadda1df8b718be36d. ------------- Changes: - all: https://git.openjdk.org/jdk/pull/12231/files - new: https://git.openjdk.org/jdk/pull/12231/files/623d3749..1b253a14 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=12231&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=12231&range=01-02 Stats: 8 lines in 1 file changed: 8 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/12231.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/12231/head:pull/12231 PR: https://git.openjdk.org/jdk/pull/12231