--- old/test/javax/imageio/plugins/shared/CanWriteSequence.java 2017-07-10 15:51:16.372556000 +0530 +++ new/test/javax/imageio/plugins/shared/CanWriteSequence.java 2017-07-10 15:51:16.012376000 +0530 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ import java.io.File; import java.io.FileOutputStream; import java.util.Iterator; +import java.nio.file.Files; import javax.imageio.ImageIO; import javax.imageio.ImageWriter; @@ -34,8 +35,12 @@ /** * @test - * @bug 4958064 - * @author Sergey Bylokhov + * @bug 4958064 8183349 + * @summary Test verifies that when we try to forcefully run + * prepareWriteSequence() where it is not supported + * will ImageIO throws an UnsupportedOperationException + * or not. + * @run main/manual CanWriteSequence */ public final class CanWriteSequence { @@ -54,8 +59,12 @@ } private static void test(final ImageWriter writer) throws Exception { - final File file = File.createTempFile("temp", ".img"); - file.deleteOnExit(); + String sep = System.getProperty("file.separator"); + String dir = System.getProperty("test.src", "."); + String filePath = dir+sep; + File directory = new File(filePath); + final File file = File.createTempFile("temp", ".img", directory); + directory.delete(); final FileOutputStream fos = new FileOutputStream(file); final ImageOutputStream ios = ImageIO.createImageOutputStream(fos); writer.setOutput(ios); @@ -66,6 +75,7 @@ } else { try { writer.prepareWriteSequence(data); + Files.delete(file.toPath()); throw new RuntimeException( "UnsupportedOperationException was not thrown"); } catch (final UnsupportedOperationException ignored) { @@ -73,6 +83,8 @@ } } writer.dispose(); - ios.close(); + fos.close(); + Files.delete(file.toPath()); } } + --- old/test/javax/imageio/plugins/shared/WriteAfterAbort.java 2017-07-10 15:51:17.220980000 +0530 +++ new/test/javax/imageio/plugins/shared/WriteAfterAbort.java 2017-07-10 15:51:16.872806000 +0530 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; +import java.nio.file.Files; import javax.imageio.ImageIO; import javax.imageio.ImageWriter; @@ -41,9 +42,9 @@ /** * @test - * @bug 4952954 + * @bug 4952954 8183349 * @summary abortFlag must be cleared for every ImageWriter.write operation - * @author Sergey Bylokhov + * @run main/manual WriteAfterAbort */ public final class WriteAfterAbort implements IIOWriteProgressListener { @@ -54,6 +55,15 @@ private volatile boolean isStartedCalled; private static final int WIDTH = 100; private static final int HEIGHT = 100; + private static ImageWriter writer; + private static FileOutputStream fos; + private static File file; + + private void deleteTestFile() throws IOException { + writer.dispose(); + fos.close(); + Files.delete(file.toPath()); + } private void test(final ImageWriter writer) throws IOException { // Image initialization @@ -65,9 +75,13 @@ g.dispose(); // File initialization - final File file = File.createTempFile("temp", ".img"); - file.deleteOnExit(); - final FileOutputStream fos = new SkipWriteOnAbortOutputStream(file); + String sep = System.getProperty("file.separator"); + String dir = System.getProperty("test.src", "."); + String filePath = dir+sep; + File directory = new File(filePath); + file = File.createTempFile("temp", ".img", directory); + directory.delete(); + fos = new SkipWriteOnAbortOutputStream(file); final ImageOutputStream ios = ImageIO.createImageOutputStream(fos); writer.setOutput(ios); writer.addIIOWriteProgressListener(this); @@ -75,15 +89,19 @@ // This write will be aborted, and file will not be touched writer.write(imageWrite); if (!isStartedCalled) { + deleteTestFile(); throw new RuntimeException("Started should be called"); } if (!isProgressCalled) { + deleteTestFile(); throw new RuntimeException("Progress should be called"); } if (!isAbortCalled) { + deleteTestFile(); throw new RuntimeException("Abort should be called"); } if (isCompleteCalled) { + deleteTestFile(); throw new RuntimeException("Complete should not be called"); } // Flush aborted data @@ -99,22 +117,26 @@ writer.write(imageWrite); if (!isStartedCalled) { + deleteTestFile(); throw new RuntimeException("Started should be called"); } if (!isProgressCalled) { + deleteTestFile(); throw new RuntimeException("Progress should be called"); } if (isAbortCalled) { + deleteTestFile(); throw new RuntimeException("Abort should not be called"); } if (!isCompleteCalled) { + deleteTestFile(); throw new RuntimeException("Complete should be called"); } - writer.dispose(); - ios.close(); + ios.close(); // Validates content of the file. final BufferedImage imageRead = ImageIO.read(file); + deleteTestFile(); for (int x = 0; x < WIDTH; ++x) { for (int y = 0; y < HEIGHT; ++y) { if (imageRead.getRGB(x, y) != imageWrite.getRGB(x, y)) { @@ -133,11 +155,12 @@ int numFailures = 0; while (iter.hasNext()) { final WriteAfterAbort writeAfterAbort = new WriteAfterAbort(); - final ImageWriter writer = iter.next().createWriterInstance(); + writer = iter.next().createWriterInstance(); System.out.println("ImageWriter = " + writer); try { writeAfterAbort.test(writer); } catch (Exception e) { + writeAfterAbort.deleteTestFile(); System.err.println("Test failed for \"" + writer.getOriginatingProvider().getFormatNames()[0] + "\" format.");