You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ki...@apache.org on 2023/03/31 21:38:02 UTC

[commons-imaging] branch master updated (99e34e49 -> 933584e7)

This is an automated email from the ASF dual-hosted git repository.

kinow pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-imaging.git


    from 99e34e49 Bump animal-sniffer-maven-plugin from 1.22 to 1.23
     new 24ffd332 [IMAGING-345] perform tests in memory instead of disk making them faster
     new 1dc7bf3a [IMAGING-345] changelog
     new 933584e7 Merge branch 'pr-271'

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/changes/changes.xml                            |  3 ++
 .../imaging/formats/bmp/BmpRoundtripTest.java      |  6 ---
 .../imaging/formats/icns/IcnsRoundTripTest.java    |  8 +---
 .../imaging/formats/jpeg/exif/ExifBaseTest.java    | 10 +++++
 .../imaging/formats/jpeg/exif/ExifRewriteTest.java | 23 +++--------
 .../imaging/formats/jpeg/iptc/IptcAddTest.java     | 14 +++----
 .../imaging/formats/jpeg/iptc/IptcUpdateTest.java  | 48 +++++++++-------------
 .../formats/jpeg/xmp/JpegXmpRewriteTest.java       | 32 +++++++--------
 .../commons/imaging/formats/png/PngTextTest.java   |  5 ---
 .../formats/png/PngWriteForceTrueColorText.java    | 12 +++---
 .../imaging/formats/png/PngWritePredictorTest.java | 25 ++++-------
 .../imaging/formats/png/PngWriteReadTest.java      |  9 ----
 .../imaging/formats/tiff/TiffRoundtripTest.java    | 10 ++---
 .../commons/imaging/formats/xmp/XmpUpdateTest.java |  1 -
 .../commons/imaging/roundtrip/FormatInfo.java      | 12 ++++++
 .../roundtrip/NullParametersRoundtripTest.java     | 22 ++++++----
 .../commons/imaging/roundtrip/RoundtripBase.java   | 24 +++++------
 17 files changed, 117 insertions(+), 147 deletions(-)


[commons-imaging] 03/03: Merge branch 'pr-271'

Posted by ki...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kinow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-imaging.git

commit 933584e7ee31949c83f10feda46eab8978165072
Merge: 99e34e49 1dc7bf3a
Author: Bruno P. Kinoshita <ki...@users.noreply.github.com>
AuthorDate: Fri Mar 31 23:37:38 2023 +0200

    Merge branch 'pr-271'
    
    This closes #271

 src/changes/changes.xml                            |  3 ++
 .../imaging/formats/bmp/BmpRoundtripTest.java      |  6 ---
 .../imaging/formats/icns/IcnsRoundTripTest.java    |  8 +---
 .../imaging/formats/jpeg/exif/ExifBaseTest.java    | 10 +++++
 .../imaging/formats/jpeg/exif/ExifRewriteTest.java | 23 +++--------
 .../imaging/formats/jpeg/iptc/IptcAddTest.java     | 14 +++----
 .../imaging/formats/jpeg/iptc/IptcUpdateTest.java  | 48 +++++++++-------------
 .../formats/jpeg/xmp/JpegXmpRewriteTest.java       | 32 +++++++--------
 .../commons/imaging/formats/png/PngTextTest.java   |  5 ---
 .../formats/png/PngWriteForceTrueColorText.java    | 12 +++---
 .../imaging/formats/png/PngWritePredictorTest.java | 25 ++++-------
 .../imaging/formats/png/PngWriteReadTest.java      |  9 ----
 .../imaging/formats/tiff/TiffRoundtripTest.java    | 10 ++---
 .../commons/imaging/formats/xmp/XmpUpdateTest.java |  1 -
 .../commons/imaging/roundtrip/FormatInfo.java      | 12 ++++++
 .../roundtrip/NullParametersRoundtripTest.java     | 22 ++++++----
 .../commons/imaging/roundtrip/RoundtripBase.java   | 24 +++++------
 17 files changed, 117 insertions(+), 147 deletions(-)


[commons-imaging] 02/03: [IMAGING-345] changelog

Posted by ki...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kinow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-imaging.git

commit 1dc7bf3a8adf13c28334cc2fb69da2179baa3fac
Author: Bruno P. Kinoshita <ki...@users.noreply.github.com>
AuthorDate: Fri Mar 31 23:37:26 2023 +0200

    [IMAGING-345] changelog
---
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b0f93859..7ac2cac8 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -91,6 +91,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action issue="IMAGING-347" dev="kinow" type="update" due-to="snumlautoken">
         Refactor BasicCParser::unescapeString().
       </action>
+      <action issue="IMAGING-345" dev="kinow" type="update" due-to="Matthieu Casanova">
+        Make unit tests work in-memory instead of writing hundred of tmp files.
+      </action>
     </release>
     <release version="1.0-alpha3" date="2022-05-13" description="Third 1.0 alpha release">
       <action issue="IMAGING-330" dev="kinow" type="fix" due-to="Gary Lucas">


[commons-imaging] 01/03: [IMAGING-345] perform tests in memory instead of disk making them faster

Posted by ki...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kinow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-imaging.git

commit 24ffd33275ce58252b30ecc24d0c78c3edce090e
Author: Matthieu Casanova <kp...@users.sourceforge.net>
AuthorDate: Mon Jan 16 22:34:01 2023 +0100

    [IMAGING-345] perform tests in memory instead of disk making them faster
---
 .../imaging/formats/bmp/BmpRoundtripTest.java      |  6 ---
 .../imaging/formats/icns/IcnsRoundTripTest.java    |  8 +---
 .../imaging/formats/jpeg/exif/ExifBaseTest.java    | 10 +++++
 .../imaging/formats/jpeg/exif/ExifRewriteTest.java | 23 +++--------
 .../imaging/formats/jpeg/iptc/IptcAddTest.java     | 14 +++----
 .../imaging/formats/jpeg/iptc/IptcUpdateTest.java  | 48 +++++++++-------------
 .../formats/jpeg/xmp/JpegXmpRewriteTest.java       | 32 +++++++--------
 .../commons/imaging/formats/png/PngTextTest.java   |  5 ---
 .../formats/png/PngWriteForceTrueColorText.java    | 12 +++---
 .../imaging/formats/png/PngWritePredictorTest.java | 25 ++++-------
 .../imaging/formats/png/PngWriteReadTest.java      |  9 ----
 .../imaging/formats/tiff/TiffRoundtripTest.java    | 10 ++---
 .../commons/imaging/formats/xmp/XmpUpdateTest.java |  1 -
 .../commons/imaging/roundtrip/FormatInfo.java      | 12 ++++++
 .../roundtrip/NullParametersRoundtripTest.java     | 22 ++++++----
 .../commons/imaging/roundtrip/RoundtripBase.java   | 24 +++++------
 16 files changed, 114 insertions(+), 147 deletions(-)

diff --git a/src/test/java/org/apache/commons/imaging/formats/bmp/BmpRoundtripTest.java b/src/test/java/org/apache/commons/imaging/formats/bmp/BmpRoundtripTest.java
index 83bb04e5..df9f688c 100644
--- a/src/test/java/org/apache/commons/imaging/formats/bmp/BmpRoundtripTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/bmp/BmpRoundtripTest.java
@@ -22,13 +22,10 @@ import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.ImageWriteException;
 import org.apache.commons.imaging.Imaging;
 import org.apache.commons.imaging.internal.Debug;
-import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.Test;
 
 import java.awt.image.BufferedImage;
-import java.io.File;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.util.Random;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -140,9 +137,6 @@ public class BmpRoundtripTest extends BmpBaseTest {
 
         final byte[] bytes = Imaging.writeImageToBytes(srcImage, ImageFormats.BMP);
 
-        final File tempFile = Files.createTempFile("temp", ".bmp").toFile();
-        FileUtils.writeByteArrayToFile(tempFile, bytes);
-
         final BufferedImage dstImage = Imaging.getBufferedImage(bytes);
 
         assertNotNull(dstImage);
diff --git a/src/test/java/org/apache/commons/imaging/formats/icns/IcnsRoundTripTest.java b/src/test/java/org/apache/commons/imaging/formats/icns/IcnsRoundTripTest.java
index 901918fb..21cb6f1f 100644
--- a/src/test/java/org/apache/commons/imaging/formats/icns/IcnsRoundTripTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/icns/IcnsRoundTripTest.java
@@ -22,16 +22,14 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.IOException;
-import java.nio.file.Files;
 
 import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.Imaging;
 import org.apache.commons.imaging.common.BinaryOutputStream;
 import org.apache.commons.imaging.internal.Debug;
-import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.Test;
 
 public class IcnsRoundTripTest extends IcnsBaseTest {
@@ -408,9 +406,7 @@ public class IcnsRoundTripTest extends IcnsBaseTest {
     private void writeAndReadImageData(final String description, final byte[] rawData,
             final int foreground, final int background) throws IOException,
             ImageReadException {
-        final File exportFile = Files.createTempFile(description, ".icns").toFile();
-        FileUtils.writeByteArrayToFile(exportFile, rawData);
-        final BufferedImage dstImage = Imaging.getBufferedImage(exportFile);
+        final BufferedImage dstImage = Imaging.getBufferedImage(new ByteArrayInputStream(rawData), "description.icns");
 
         assertNotNull(dstImage);
         assertEquals(dstImage.getWidth(), IMAGE[0].length);
diff --git a/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/ExifBaseTest.java b/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/ExifBaseTest.java
index f4c9a055..e13a7ea5 100644
--- a/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/ExifBaseTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/ExifBaseTest.java
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.ImagingTest;
 import org.apache.commons.imaging.common.bytesource.ByteSource;
+import org.apache.commons.imaging.common.bytesource.ByteSourceArray;
 import org.apache.commons.imaging.common.bytesource.ByteSourceFile;
 import org.apache.commons.imaging.formats.jpeg.JpegImageParser;
 
@@ -42,6 +43,15 @@ public abstract class ExifBaseTest extends ImagingTest {
         }
     }
 
+    protected static boolean hasExifData(final String fileName, final byte[] bytes) {
+        try {
+            final ByteSource byteSource = new ByteSourceArray(fileName, bytes);
+            return new JpegImageParser().hasExifSegment(byteSource);
+        } catch (final Exception e) {
+            return false;
+        }
+    }
+
     private static final ImageFilter HAS_EXIF_IMAGE_FILTER = ExifBaseTest::hasExifData;
 
     private static final ImageFilter JPEG_IMAGE_FILTER = file -> file.getName().toLowerCase().endsWith(".jpg");
diff --git a/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriteTest.java b/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriteTest.java
index 673d744c..9f0a08a9 100644
--- a/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriteTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/jpeg/exif/ExifRewriteTest.java
@@ -23,11 +23,11 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -49,7 +49,6 @@ import org.apache.commons.imaging.formats.tiff.TiffImageMetadata;
 import org.apache.commons.imaging.formats.tiff.fieldtypes.FieldType;
 import org.apache.commons.imaging.formats.tiff.write.TiffOutputSet;
 import org.apache.commons.imaging.internal.Debug;
-import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -84,14 +83,11 @@ public class ExifRewriteTest extends ExifBaseTest {
                 final ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 new ExifRewriter().removeExifMetadata(byteSource, baos);
                 final byte[] bytes = baos.toByteArray();
-                final File tempFile = Files.createTempFile("test", ".jpg").toFile();
-                Debug.debug("tempFile", tempFile);
-                FileUtils.writeByteArrayToFile(tempFile, bytes);
 
                 Debug.debug("Output Segments:");
                 new JpegUtils().dumpJFIF(new ByteSourceArray(bytes));
 
-                assertFalse(hasExifData(tempFile));
+                assertFalse(hasExifData("test.jpg", bytes));
             }
         }
     }
@@ -123,15 +119,12 @@ public class ExifRewriteTest extends ExifBaseTest {
                 final ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 new ExifRewriter().removeExifMetadata(byteSource, baos);
                 final byte[] bytes = baos.toByteArray();
-                final File tempFile = Files.createTempFile("removed", ".jpg").toFile();
-                Debug.debug("tempFile", tempFile);
-                FileUtils.writeByteArrayToFile(tempFile, bytes);
 
                 Debug.debug("Output Segments:");
                 stripped = new ByteSourceArray(bytes);
                 new JpegUtils().dumpJFIF(stripped);
 
-                assertFalse(hasExifData(tempFile));
+                assertFalse(hasExifData("removed.jpg", bytes));
             }
 
             {
@@ -144,16 +137,13 @@ public class ExifRewriteTest extends ExifBaseTest {
                         outputSet);
 
                 final byte[] bytes = baos.toByteArray();
-                final File tempFile = Files.createTempFile("inserted" + "_", ".jpg").toFile();
-                Debug.debug("tempFile", tempFile);
-                FileUtils.writeByteArrayToFile(tempFile, bytes);
 
                 Debug.debug("Output Segments:");
                 new JpegUtils().dumpJFIF(new ByteSourceArray(bytes));
 
                 // assertTrue(!hasExifData(tempFile));
 
-                final JpegImageMetadata newMetadata = (JpegImageMetadata) Imaging.getMetadata(tempFile);
+                final JpegImageMetadata newMetadata = (JpegImageMetadata) Imaging.getMetadata(new ByteArrayInputStream(bytes), "inserted.jpg");
                 assertNotNull(newMetadata);
                 final TiffImageMetadata newExifMetadata = newMetadata.getExif();
                 assertNotNull(newExifMetadata);
@@ -211,16 +201,13 @@ public class ExifRewriteTest extends ExifBaseTest {
                 final ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 rewriter.rewrite(byteSource, baos, outputSet);
                 final byte[] bytes = baos.toByteArray();
-                final File tempFile = Files.createTempFile(name + "_", ".jpg").toFile();
-                Debug.debug("tempFile", tempFile);
-                FileUtils.writeByteArrayToFile(tempFile, bytes);
 
                 Debug.debug("Output Segments:");
                 new JpegUtils().dumpJFIF(new ByteSourceArray(bytes));
 
                 // assertTrue(!hasExifData(tempFile));
 
-                final JpegImageMetadata newMetadata = (JpegImageMetadata) Imaging.getMetadata(tempFile);
+                final JpegImageMetadata newMetadata = (JpegImageMetadata) Imaging.getMetadata(new ByteArrayInputStream(bytes), name + ".jpg");
                 assertNotNull(newMetadata);
                 final TiffImageMetadata newExifMetadata = newMetadata.getExif();
                 assertNotNull(newExifMetadata);
diff --git a/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java b/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java
index 32d9f604..dc901c37 100644
--- a/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java
@@ -20,16 +20,14 @@ package org.apache.commons.imaging.formats.jpeg.iptc;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Stream;
 
 import org.apache.commons.imaging.common.bytesource.ByteSource;
+import org.apache.commons.imaging.common.bytesource.ByteSourceArray;
 import org.apache.commons.imaging.common.bytesource.ByteSourceFile;
 import org.apache.commons.imaging.formats.jpeg.JpegImageParser;
 import org.apache.commons.imaging.formats.jpeg.JpegImagingParameters;
@@ -76,13 +74,13 @@ public class IptcAddTest extends IptcBaseTest {
 
         final PhotoshopApp13Data newData = new PhotoshopApp13Data(newRecords, newBlocks);
 
-        final File updated = Files.createTempFile(imageFile.getName() + ".iptc.add.", ".jpg").toFile();
-        try (FileOutputStream fos = new FileOutputStream(updated);
-                OutputStream os = new BufferedOutputStream(fos)) {
+        byte[] bytes;
+        try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
             new JpegIptcRewriter().writeIPTC(byteSource, os, newData);
+            bytes = os.toByteArray();
         }
 
-        final ByteSource updateByteSource = new ByteSourceFile(updated);
+        final ByteSource updateByteSource = new ByteSourceArray("test.jpg", bytes);
         final JpegPhotoshopMetadata outMetadata = new JpegImageParser().getPhotoshopMetadata(
                 updateByteSource, params);
 
diff --git a/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java b/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java
index 4545f687..c67f60d2 100644
--- a/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java
@@ -21,12 +21,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Stream;
@@ -34,6 +31,7 @@ import java.util.stream.Stream;
 import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.ImageWriteException;
 import org.apache.commons.imaging.common.bytesource.ByteSource;
+import org.apache.commons.imaging.common.bytesource.ByteSourceArray;
 import org.apache.commons.imaging.common.bytesource.ByteSourceFile;
 import org.apache.commons.imaging.formats.jpeg.JpegImageParser;
 import org.apache.commons.imaging.formats.jpeg.JpegImagingParameters;
@@ -61,23 +59,21 @@ public class IptcUpdateTest extends IptcBaseTest {
                 byteSource, params);
         assertNotNull(metadata);
 
-        final File noIptcFile = removeIptc(byteSource, imageFile);
+        final byte[] noIptcFile = removeIptc(byteSource, imageFile);
 
         final JpegPhotoshopMetadata outMetadata = new JpegImageParser().getPhotoshopMetadata(
-                new ByteSourceFile(noIptcFile), params);
+                new ByteSourceArray("test.jpg", noIptcFile), params);
 
         // FIXME should either be null or empty
         assertTrue(outMetadata == null
                 || outMetadata.getItems().isEmpty());
     }
 
-    public File removeIptc(final ByteSource byteSource, final File imageFile) throws Exception {
-        final File noIptcFile = Files.createTempFile(imageFile.getName() + ".iptc.remove.", ".jpg").toFile();
-
-        try (OutputStream os = new BufferedOutputStream(new FileOutputStream(noIptcFile))) {
+    public byte[] removeIptc(final ByteSource byteSource, final File imageFile) throws Exception {
+        try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
             new JpegIptcRewriter().removeIPTC(byteSource, os);
+            return os.toByteArray();
         }
-        return noIptcFile;
     }
 
     @ParameterizedTest
@@ -91,7 +87,7 @@ public class IptcUpdateTest extends IptcBaseTest {
                 byteSource, params);
         assertNotNull(metadata);
 
-        final File noIptcFile = removeIptc(byteSource, imageFile);
+        final byte[] noIptcFile = removeIptc(byteSource, imageFile);
 
         final List<IptcBlock> newBlocks = new ArrayList<>();
         final List<IptcRecord> newRecords = new ArrayList<>();
@@ -103,15 +99,14 @@ public class IptcUpdateTest extends IptcBaseTest {
         final PhotoshopApp13Data newData = new PhotoshopApp13Data(newRecords,
                 newBlocks);
 
-        final File updated = Files.createTempFile(imageFile.getName()
-                + ".iptc.insert.", ".jpg").toFile();
-        try (FileOutputStream fos = new FileOutputStream(updated);
-                OutputStream os = new BufferedOutputStream(fos)) {
-            new JpegIptcRewriter().writeIPTC(new ByteSourceFile(
+        byte[] updated;
+        try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+            new JpegIptcRewriter().writeIPTC(new ByteSourceArray("test.jpg",
                     noIptcFile), os, newData);
+            updated = os.toByteArray();
         }
 
-        final ByteSource updateByteSource = new ByteSourceFile(updated);
+        final ByteSource updateByteSource = new ByteSourceArray("test.jpg", updated);
         final JpegPhotoshopMetadata outMetadata = new JpegImageParser().getPhotoshopMetadata(
                 updateByteSource, params);
 
@@ -139,9 +134,9 @@ public class IptcUpdateTest extends IptcBaseTest {
         final PhotoshopApp13Data newData = new PhotoshopApp13Data(newRecords,
                 newBlocks);
 
-        final File updated = writeIptc(byteSource, newData, imageFile);
+        final byte[] updated = writeIptc(byteSource, newData, imageFile);
 
-        final ByteSource updateByteSource = new ByteSourceFile(updated);
+        final ByteSource updateByteSource = new ByteSourceArray("test.jpg", updated);
         final JpegPhotoshopMetadata outMetadata = new JpegImageParser().getPhotoshopMetadata(
                 updateByteSource, params);
 
@@ -149,14 +144,11 @@ public class IptcUpdateTest extends IptcBaseTest {
         assertEquals(2, outMetadata.getItems().size());
     }
 
-    public File writeIptc(final ByteSource byteSource, final PhotoshopApp13Data newData, final File imageFile) throws IOException, ImageReadException, ImageWriteException {
-        final File updated = Files.createTempFile(imageFile.getName()
-                + ".iptc.update.", ".jpg").toFile();
-        try (FileOutputStream fos = new FileOutputStream(updated);
-                OutputStream os = new BufferedOutputStream(fos)) {
+    public byte[] writeIptc(final ByteSource byteSource, final PhotoshopApp13Data newData, final File imageFile) throws IOException, ImageReadException, ImageWriteException {
+        try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
             new JpegIptcRewriter().writeIPTC(byteSource, os, newData);
+            return os.toByteArray();
         }
-        return updated;
     }
 
     @ParameterizedTest
@@ -184,9 +176,9 @@ public class IptcUpdateTest extends IptcBaseTest {
 
         final PhotoshopApp13Data newData = new PhotoshopApp13Data(newRecords, newBlocks);
 
-        final File updated = writeIptc(byteSource, newData, imageFile);
+        final byte[] updated = writeIptc(byteSource, newData, imageFile);
 
-        final ByteSource updateByteSource = new ByteSourceFile(updated);
+        final ByteSource updateByteSource = new ByteSourceArray("test.jpg", updated);
         final JpegPhotoshopMetadata outMetadata = new JpegImageParser().getPhotoshopMetadata(updateByteSource, params);
 
         assertNotNull(outMetadata);
diff --git a/src/test/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriteTest.java b/src/test/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriteTest.java
index 9fd4a349..7726a2f2 100644
--- a/src/test/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriteTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/jpeg/xmp/JpegXmpRewriteTest.java
@@ -20,14 +20,12 @@ package org.apache.commons.imaging.formats.jpeg.xmp;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.nio.file.Files;
 import java.util.stream.Stream;
 
 import org.apache.commons.imaging.common.bytesource.ByteSource;
+import org.apache.commons.imaging.common.bytesource.ByteSourceArray;
 import org.apache.commons.imaging.common.bytesource.ByteSourceFile;
 import org.apache.commons.imaging.formats.jpeg.JpegImageParser;
 import org.apache.commons.imaging.formats.jpeg.JpegImagingParameters;
@@ -49,20 +47,20 @@ public class JpegXmpRewriteTest extends JpegXmpBaseTest {
         final String xmpXml = new JpegImageParser().getXmpXml(byteSource, params);
         assertNotNull(xmpXml);
 
-        final File noXmpFile = Files.createTempFile(imageFile.getName() + ".", ".jpg").toFile();
+        byte[] noXmpFile;
         {
             // test remove
 
-            try (FileOutputStream fos = new FileOutputStream(noXmpFile);
-                    OutputStream os = new BufferedOutputStream(fos)) {
+            try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
                 new JpegXmpRewriter().removeXmpXml(byteSource, os);
+                noXmpFile = os.toByteArray();
             }
 
             // Debug.debug("Source Segments:");
             // new JpegUtils().dumpJFIF(new ByteSourceFile(noXmpFile));
 
             final String outXmp = new JpegImageParser().getXmpXml(
-                    new ByteSourceFile(noXmpFile), params);
+                    new ByteSourceArray("test.jpg", noXmpFile), params);
             Assertions.assertNull(outXmp);
         }
 
@@ -70,17 +68,17 @@ public class JpegXmpRewriteTest extends JpegXmpBaseTest {
             // test update
 
             final String newXmpXml = "test";
-            final File updated = Files.createTempFile(imageFile.getName() + ".", ".jpg").toFile();
-            try (FileOutputStream fos = new FileOutputStream(updated);
-                    OutputStream os = new BufferedOutputStream(fos)) {
+            byte[] updated;
+            try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
                 new JpegXmpRewriter().updateXmpXml(byteSource, os, newXmpXml);
+                updated = os.toByteArray();
             }
 
             // Debug.debug("Source Segments:");
             // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
 
             final String outXmp = new JpegImageParser().getXmpXml(
-                    new ByteSourceFile(updated), params);
+                    new ByteSourceArray("test.jpg", updated), params);
             assertNotNull(outXmp);
             assertEquals(outXmp, newXmpXml);
         }
@@ -89,18 +87,18 @@ public class JpegXmpRewriteTest extends JpegXmpBaseTest {
             // test insert
 
             final String newXmpXml = "test";
-            final File updated = Files.createTempFile(imageFile.getName() + ".", ".jpg").toFile();
-            try (FileOutputStream fos = new FileOutputStream(updated);
-                    OutputStream os = new BufferedOutputStream(fos)) {
-                new JpegXmpRewriter().updateXmpXml(new ByteSourceFile(
+            final byte[] updated;
+            try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+                new JpegXmpRewriter().updateXmpXml(new ByteSourceArray("test.jpg",
                         noXmpFile), os, newXmpXml);
+                updated = os.toByteArray();
             }
 
             // Debug.debug("Source Segments:");
             // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
 
             final String outXmp = new JpegImageParser().getXmpXml(
-                    new ByteSourceFile(updated), params);
+                    new ByteSourceArray("test.jpg", updated), params);
             assertNotNull(outXmp);
             assertEquals(outXmp, newXmpXml);
         }
diff --git a/src/test/java/org/apache/commons/imaging/formats/png/PngTextTest.java b/src/test/java/org/apache/commons/imaging/formats/png/PngTextTest.java
index f1108b06..f49f97b4 100644
--- a/src/test/java/org/apache/commons/imaging/formats/png/PngTextTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/png/PngTextTest.java
@@ -24,8 +24,6 @@ import org.junit.jupiter.api.Test;
 import java.awt.Color;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -74,9 +72,6 @@ public class PngTextTest extends PngBaseTest {
             bytes = baos.toByteArray();
         }
 
-        final File tempFile = Files.createTempFile("temp", ".png").toFile();
-        FileUtils.writeByteArrayToFile(tempFile, bytes);
-
         final PngImageInfo imageInfo = (PngImageInfo) Imaging.getImageInfo(bytes);
         assertNotNull(imageInfo);
 
diff --git a/src/test/java/org/apache/commons/imaging/formats/png/PngWriteForceTrueColorText.java b/src/test/java/org/apache/commons/imaging/formats/png/PngWriteForceTrueColorText.java
index 9876513c..98846930 100644
--- a/src/test/java/org/apache/commons/imaging/formats/png/PngWriteForceTrueColorText.java
+++ b/src/test/java/org/apache/commons/imaging/formats/png/PngWriteForceTrueColorText.java
@@ -21,9 +21,8 @@ import org.apache.commons.imaging.internal.Debug;
 import org.junit.jupiter.api.Test;
 
 import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
-import java.nio.file.Files;
 import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -50,13 +49,14 @@ public class PngWriteForceTrueColorText extends PngBaseTest {
                 final BufferedImage image = pngImageParser.getBufferedImage(imageFile, new PngImagingParameters());
                 assertNotNull(image);
 
-                final File outFile = Files.createTempFile(imageFile.getName() + ".", ".png").toFile();
                 // Debug.debug("outFile", outFile);
 
                 final PngImagingParameters params = new PngImagingParameters();
-                params.setForceTrueColor(Boolean.TRUE);
-                try (FileOutputStream fos = new FileOutputStream(outFile)) {
-                    pngImageParser.writeImage(image, fos, params);
+                byte[] outFile;
+                try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+                    params.setForceTrueColor(Boolean.TRUE);
+                    pngImageParser.writeImage(image, os, params);
+                    outFile = os.toByteArray();
                 }
 
                 final BufferedImage image2 = pngImageParser.getBufferedImage(outFile, new PngImagingParameters());
diff --git a/src/test/java/org/apache/commons/imaging/formats/png/PngWritePredictorTest.java b/src/test/java/org/apache/commons/imaging/formats/png/PngWritePredictorTest.java
index 5f0a8629..0fdd9973 100644
--- a/src/test/java/org/apache/commons/imaging/formats/png/PngWritePredictorTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/png/PngWritePredictorTest.java
@@ -20,11 +20,9 @@
 package org.apache.commons.imaging.formats.png;
 
 import java.awt.image.BufferedImage;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.nio.file.Files;
 
 import javax.imageio.ImageIO;
 import org.apache.commons.imaging.ImageWriteException;
@@ -85,26 +83,21 @@ public class PngWritePredictorTest {
     BufferedImage bImage = new BufferedImage(256, 256, BufferedImage.TYPE_INT_RGB);
     bImage.setRGB(0, 0, 256, 256, argb, 0, 256);
 
-    File tempFile = null;
+    byte[] tempFile = null;
 
-    try {
-      tempFile = Files.createTempFile("PngWritePredictorRGB", ".png").toFile();
-    } catch (final IOException ioex) {
-      fail("Failed to create temporary file, " + ioex.getMessage());
-    }
     final PngImagingParameters params = new PngImagingParameters();
     params.setPredictorEnabled(true);
     final PngImageParser parser = new PngImageParser();
-    try ( FileOutputStream fos = new FileOutputStream(tempFile);  BufferedOutputStream bos = new BufferedOutputStream(fos)) {
+    try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
       parser.writeImage(bImage, bos, params);
-      bos.flush();
+      tempFile = bos.toByteArray();
     } catch (IOException | ImageWriteException ex) {
       fail("Failed writing RGB with exception " + ex.getMessage());
     }
 
     try {
       final int[] brgb = new int[256 * 256];
-      bImage = ImageIO.read(tempFile);
+      bImage = ImageIO.read(new ByteArrayInputStream(tempFile));
       bImage.getRGB(0, 0, 256, 256, brgb, 0, 256);
       assertArrayEquals(argb, brgb, "Round trip for RGB failed");
     } catch (final IOException ex) {
@@ -117,15 +110,15 @@ public class PngWritePredictorTest {
     }
     bImage = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB);
     bImage.setRGB(0, 0, 256, 256, argb, 0, 256);
-    try ( FileOutputStream fos = new FileOutputStream(tempFile);  BufferedOutputStream bos = new BufferedOutputStream(fos)) {
+    try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
       parser.writeImage(bImage, bos, params);
-      bos.flush();
+      tempFile = bos.toByteArray();
     } catch (IOException | ImageWriteException ex) {
       fail("Failed writing ARGB with exception " + ex.getMessage());
     }
     try {
       final int[] brgb = new int[256 * 256];
-      bImage = ImageIO.read(tempFile);
+      bImage = ImageIO.read(new ByteArrayInputStream(tempFile));
       bImage.getRGB(0, 0, 256, 256, brgb, 0, 256);
       assertArrayEquals(argb, brgb, "Round trip for ARGB failed");
     } catch (final IOException ex) {
diff --git a/src/test/java/org/apache/commons/imaging/formats/png/PngWriteReadTest.java b/src/test/java/org/apache/commons/imaging/formats/png/PngWriteReadTest.java
index 6ccede69..3e6825cc 100644
--- a/src/test/java/org/apache/commons/imaging/formats/png/PngWriteReadTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/png/PngWriteReadTest.java
@@ -24,14 +24,11 @@ import org.apache.commons.imaging.Imaging;
 import org.apache.commons.imaging.ImagingTest;
 import org.apache.commons.imaging.common.GenericImageMetadata;
 import org.apache.commons.imaging.common.ImageMetadata;
-import org.apache.commons.io.FileUtils;
 import org.junit.jupiter.api.Test;
 
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Random;
@@ -183,9 +180,6 @@ public class PngWriteReadTest extends ImagingTest {
 
         final byte[] bytes = Imaging.writeImageToBytes(srcImage, ImageFormats.PNG);
 
-        final File tempFile = Files.createTempFile("temp", ".png").toFile();
-        FileUtils.writeByteArrayToFile(tempFile, bytes);
-
         final BufferedImage dstImage = Imaging.getBufferedImage(bytes);
 
         assertNotNull(dstImage);
@@ -213,9 +207,6 @@ public class PngWriteReadTest extends ImagingTest {
             bytes = os.toByteArray();
         }
 
-        final File tempFile = Files.createTempFile("temp", ".png").toFile();
-        FileUtils.writeByteArrayToFile(tempFile, bytes);
-
         final BufferedImage dstImage = Imaging.getBufferedImage(bytes);
 
         assertNotNull(dstImage);
diff --git a/src/test/java/org/apache/commons/imaging/formats/tiff/TiffRoundtripTest.java b/src/test/java/org/apache/commons/imaging/formats/tiff/TiffRoundtripTest.java
index c33a2db1..e0f53b7c 100644
--- a/src/test/java/org/apache/commons/imaging/formats/tiff/TiffRoundtripTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/tiff/TiffRoundtripTest.java
@@ -25,9 +25,8 @@ import org.apache.commons.imaging.internal.Debug;
 import org.junit.jupiter.api.Test;
 
 import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileOutputStream;
-import java.nio.file.Files;
 import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -58,11 +57,12 @@ public class TiffRoundtripTest extends TiffBaseTest {
             };
             final TiffImageParser tiffImageParser = new TiffImageParser();
             for (final int compression : compressions) {
-                final File tempFile = Files.createTempFile(imageFile.getName() + "-" + compression + ".", ".tif").toFile();
+                final byte[] tempFile;
                 final TiffImagingParameters params = new TiffImagingParameters();
                 params.setCompression(compression);
-                try (FileOutputStream fos = new FileOutputStream(tempFile)) {
-                    tiffImageParser.writeImage(image, fos, params);
+                try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
+                    tiffImageParser.writeImage(image, bos, params);
+                    tempFile = bos.toByteArray();
                 }
                 final BufferedImage image2 = Imaging.getBufferedImage(tempFile);
                 assertNotNull(image2);
diff --git a/src/test/java/org/apache/commons/imaging/formats/xmp/XmpUpdateTest.java b/src/test/java/org/apache/commons/imaging/formats/xmp/XmpUpdateTest.java
index 8bee7faa..64900abc 100644
--- a/src/test/java/org/apache/commons/imaging/formats/xmp/XmpUpdateTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/xmp/XmpUpdateTest.java
@@ -29,7 +29,6 @@ import org.apache.commons.imaging.ImageFormat;
 import org.apache.commons.imaging.ImageFormats;
 import org.apache.commons.imaging.ImageParser;
 import org.apache.commons.imaging.Imaging;
-import org.apache.commons.imaging.ImagingParameters;
 import org.apache.commons.imaging.ImagingTest;
 import org.apache.commons.imaging.common.XmpImagingParameters;
 import org.apache.commons.imaging.internal.Debug;
diff --git a/src/test/java/org/apache/commons/imaging/roundtrip/FormatInfo.java b/src/test/java/org/apache/commons/imaging/roundtrip/FormatInfo.java
index e663974b..3e42114d 100644
--- a/src/test/java/org/apache/commons/imaging/roundtrip/FormatInfo.java
+++ b/src/test/java/org/apache/commons/imaging/roundtrip/FormatInfo.java
@@ -130,4 +130,16 @@ class FormatInfo {
         this.identicalSecondWrite = identicalSecondWrite;
         this.preservesResolution = preservesResolution;
     }
+
+    @Override
+    public String toString() {
+        return "FormatInfo{" +
+            "format=" + format +
+            ", canRead=" + canRead +
+            ", canWrite=" + canWrite +
+            ", colorSupport=" + colorSupport +
+            ", identicalSecondWrite=" + identicalSecondWrite +
+            ", preservesResolution=" + preservesResolution +
+            '}';
+    }
 }
diff --git a/src/test/java/org/apache/commons/imaging/roundtrip/NullParametersRoundtripTest.java b/src/test/java/org/apache/commons/imaging/roundtrip/NullParametersRoundtripTest.java
index fc44b2cb..6415a010 100644
--- a/src/test/java/org/apache/commons/imaging/roundtrip/NullParametersRoundtripTest.java
+++ b/src/test/java/org/apache/commons/imaging/roundtrip/NullParametersRoundtripTest.java
@@ -22,8 +22,8 @@ import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
 
 import java.awt.image.BufferedImage;
-import java.io.File;
-import java.nio.file.Files;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.util.stream.Stream;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -38,13 +38,17 @@ public class NullParametersRoundtripTest extends RoundtripBase {
     @MethodSource("data")
     public void testNullParametersRoundtrip(final FormatInfo formatInfo) throws Exception {
         final BufferedImage testImage = TestImages.createFullColorImage(1, 1);
-        final File temp1 = Files.createTempFile("nullParameters.", "." + formatInfo.format.getDefaultExtension()).toFile();
-        Imaging.writeImage(testImage, temp1, formatInfo.format);
-        Imaging.getImageInfo(temp1);
-        Imaging.getImageSize(temp1);
-        Imaging.getMetadata(temp1);
-        Imaging.getICCProfile(temp1);
-        final BufferedImage imageRead = Imaging.getBufferedImage(temp1);
+        final byte[] temp1;
+        try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
+            Imaging.writeImage(testImage, byteArrayOutputStream, formatInfo.format);
+            temp1 = byteArrayOutputStream.toByteArray();
+        }
+        final String filename = "nullParameters." + formatInfo.format.getDefaultExtension();
+        Imaging.getImageInfo(new ByteArrayInputStream(temp1), filename);
+        Imaging.getImageSize(new ByteArrayInputStream(temp1), filename);
+        Imaging.getMetadata(new ByteArrayInputStream(temp1), filename);
+        Imaging.getICCProfile(new ByteArrayInputStream(temp1), filename);
+        final BufferedImage imageRead = Imaging.getBufferedImage(new ByteArrayInputStream(temp1), filename);
 
         assertNotNull(imageRead);
     }
diff --git a/src/test/java/org/apache/commons/imaging/roundtrip/RoundtripBase.java b/src/test/java/org/apache/commons/imaging/roundtrip/RoundtripBase.java
index 12a8b5d7..c46cc698 100644
--- a/src/test/java/org/apache/commons/imaging/roundtrip/RoundtripBase.java
+++ b/src/test/java/org/apache/commons/imaging/roundtrip/RoundtripBase.java
@@ -21,17 +21,15 @@ import org.apache.commons.imaging.ImageReadException;
 import org.apache.commons.imaging.ImageWriteException;
 import org.apache.commons.imaging.ImagingParameters;
 import org.apache.commons.imaging.common.RgbBufferedImageFactory;
-import org.apache.commons.imaging.internal.Debug;
 import org.apache.commons.imaging.internal.ImageParserFactory;
 import org.junit.jupiter.params.provider.Arguments;
 
 import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.util.stream.Stream;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class RoundtripBase {
@@ -39,15 +37,14 @@ public class RoundtripBase {
     protected void roundtrip(final FormatInfo formatInfo, final BufferedImage testImage,
                              final String tempPrefix, final boolean imageExact) throws IOException,
             ImageReadException, ImageWriteException {
-        final File temp1 = Files.createTempFile(tempPrefix + ".", "."
-                + formatInfo.format.getDefaultExtension()).toFile();
-        Debug.debug("tempFile: " + temp1.getName());
 
         final ImageParser imageParser = ImageParserFactory.getImageParser(formatInfo.format);
 
         final ImagingParameters params = ImageParserFactory.getImageParser(formatInfo.format).getDefaultParameters();
-        try (FileOutputStream fos = new FileOutputStream(temp1)) {
-            imageParser.writeImage(testImage, fos, params);
+        byte[] temp1;
+        try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
+            imageParser.writeImage(testImage, bos, params);
+            temp1 = bos.toByteArray();
         }
 
         final ImagingParameters readParams = ImageParserFactory.getImageParser(formatInfo.format).getDefaultParameters();
@@ -62,12 +59,13 @@ public class RoundtripBase {
         }
 
         if (formatInfo.identicalSecondWrite) {
-            final File temp2 = Files.createTempFile(tempPrefix + ".", "." + formatInfo.format.getDefaultExtension()).toFile();
-            try (FileOutputStream fos = new FileOutputStream(temp2)) {
-                imageParser.writeImage(image2, fos, params);
+            byte[] temp2;
+            try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
+                imageParser.writeImage(image2, bos, params);
+                temp2 = bos.toByteArray();
             }
 
-            ImageAsserts.assertEquals(temp1, temp2);
+            assertArrayEquals(temp1, temp2);
         }
     }