RFR: 8304014: Convert test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java to testNG
Eirik Bjorsnos
duke at openjdk.org
Wed Mar 29 09:32:37 UTC 2023
On Mon, 27 Feb 2023 20:47:42 GMT, Lance Andersen <lancea at openjdk.org> wrote:
>> CorruptedZipFiles could benefit from some spring cleaning and a conversion to testNG:
>>
>> - The actual tests are moved into their own `@Test` methods, given more meaningful names and a Javadoc comment explaining the constraint being verified
>> - The setup code is moved to a `@Before` method, slightly modernized and rewritten to take advantage of `assertEquals`
>> - `checkZipExceptionImpl` is updated to take advantage of `expectThrows`
>> - A bunch of constants copied over from `ZipFile` can be deleted since JDK-6225935 has long been fixed
>
> test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java line 53:
>
>> 51: // Copy of the template for modification in tests
>> 52: private byte[] bad;
>> 53: // Some well-known locations in the golden ZIP
>
> Would be a good opportunity to provide better naming
I went for "template" and "copy" here.
> test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java line 58:
>
>> 56: @BeforeTest
>> 57: public void setup() throws IOException {
>> 58: // Make a ZIP with a single entry
>
> Please change either this method name or the other `setup()` method.
>
> I would also add a Files.delete(zip) here
Renamed the `@BeforeMethod` one to `makeCopy`
> test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java line 70:
>
>> 68: good = Files.readAllBytes(zip);
>> 69: Files.delete(zip);
>> 70:
>
> I would add a `cleanup` method in addition to deleting earlier on
This one I did not fully understand. In any case, there is really no need to write the template ZIP to disk, so I opted for a ByteArrayOutputStream instead. I added a cleanup method to delete the ZIP file produced by each test.
> test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java line 71:
>
>> 69: Files.delete(zip);
>> 70:
>> 71: // Set up some well-known offsets
>
> please expand the comments
Done
> test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java line 90:
>
>> 88: */
>> 89: @BeforeMethod
>> 90: public void setUp() {
>
> As mentioned above, please rename this method or the other
Yes, renamed to `makeCopy`
> test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java line 95:
>
>> 93:
>> 94: @Test
>> 95: public void corruptedENDSIZ() {
>
> Please add a comment to this and the other tests describing the purpose of the test
I have given each `@Test` method a more meaningful name and added comments explaining the constraint or error condition being tested.
> test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java line 164:
>
>> 162: }
>> 163: static int uniquifier = 432;
>> 164:
>
> I am not sure how many people would know what a `uniquifier` is though it is an interesting phrase which I know from SQL Server. Perhaps consider renaming this variable
I'm not sure we need unique file names for this test. Opted for a single ZIP Path instead and removed this variable.
> test/jdk/java/util/zip/ZipFile/CorruptedZipFiles.java line 184:
>
>> 182: "Unexpected ZipException message: " + ex.getMessage());
>> 183:
>> 184: } catch (IOException e) {
>
> Another option is to throw the IOException and add IOException to the test method signature as we are going to fail anyways for the IOException
Changed to propagate the `IOException`
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/12563#discussion_r1119742719
PR Review Comment: https://git.openjdk.org/jdk/pull/12563#discussion_r1119743179
PR Review Comment: https://git.openjdk.org/jdk/pull/12563#discussion_r1119744775
PR Review Comment: https://git.openjdk.org/jdk/pull/12563#discussion_r1119744908
PR Review Comment: https://git.openjdk.org/jdk/pull/12563#discussion_r1119745171
PR Review Comment: https://git.openjdk.org/jdk/pull/12563#discussion_r1119746099
PR Review Comment: https://git.openjdk.org/jdk/pull/12563#discussion_r1119747423
PR Review Comment: https://git.openjdk.org/jdk/pull/12563#discussion_r1119746553
More information about the core-libs-dev
mailing list