Author: tilman
Date: Sat Nov 15 18:32:35 2025
New Revision: 1929773

Log:
PDFBOX-5660: close input, as suggested by Valery Bokov; closes #336

Modified:
   
pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/afm/AFMParserTest.java

Modified: 
pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/afm/AFMParserTest.java
==============================================================================
--- 
pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/afm/AFMParserTest.java
 Sat Nov 15 16:23:48 2025        (r1929772)
+++ 
pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/afm/AFMParserTest.java
 Sat Nov 15 18:32:35 2025        (r1929773)
@@ -27,6 +27,7 @@ import static org.junit.jupiter.api.Asse
 import java.io.ByteArrayInputStream;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Optional;
@@ -59,129 +60,147 @@ class AFMParserTest
     @Test
     void testEndFontMetrics() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new 
FileInputStream("src/test/resources/afm/NoEndFontMetrics.afm"));
-        try
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/NoEndFontMetrics.afm"))
         {
-            parser.parse();
-            fail("The AFMParser should have thrown an IOException because of a 
missing "
-                    + AFMParser.END_FONT_METRICS);
-        }
-        catch (IOException e)
-        {
-            assertTrue(e.getMessage().contains("Unknown AFM key"));
+            AFMParser parser = new AFMParser(is);
+            try
+            {
+                parser.parse();
+                fail("The AFMParser should have thrown an IOException because 
of a missing "
+                        + AFMParser.END_FONT_METRICS);
+            }
+            catch (IOException e)
+            {
+                assertTrue(e.getMessage().contains("Unknown AFM key"));
+            }
         }
     }
 
     @Test
     void testMalformedFloat() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new 
FileInputStream("src/test/resources/afm/MalformedFloat.afm"));
-        try
-        {
-            parser.parse();
-            fail("The AFMParser should have thrown an IOException because of a 
malformed float value");
-        }
-        catch (IOException e)
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/MalformedFloat.afm"))
         {
-            assertTrue(e.getCause() instanceof NumberFormatException);
-            assertTrue(e.getMessage().contains("4,1ab"));
+            AFMParser parser = new AFMParser(is);
+            try
+            {
+                parser.parse();
+                fail("The AFMParser should have thrown an IOException because 
of a malformed float value");
+            }
+            catch (IOException e)
+            {
+                assertTrue(e.getCause() instanceof NumberFormatException);
+                assertTrue(e.getMessage().contains("4,1ab"));
+            }
         }
     }
 
     @Test
     void testMalformedInteger() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new 
FileInputStream("src/test/resources/afm/MalformedInteger.afm"));
-        try
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/MalformedInteger.afm"))
         {
-            parser.parse();
-            fail("The AFMParser should have thrown an IOException because of a 
malformed int value");
-        }
-        catch (IOException e)
-        {
-            assertTrue(e.getCause() instanceof NumberFormatException);
-            assertTrue(e.getMessage().contains("3.4"));
+            try
+            {
+                AFMParser parser = new AFMParser(is);
+                parser.parse();
+                fail("The AFMParser should have thrown an IOException because 
of a malformed int value");
+            }
+            catch (IOException e)
+            {
+                assertTrue(e.getCause() instanceof NumberFormatException);
+                assertTrue(e.getMessage().contains("3.4"));
+            }
         }
     }
 
     @Test
     void testHelveticaFontMetrics() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new FileInputStream("src/test/resources/afm/Helvetica.afm"));
-        checkHelveticaFontMetrics(parser.parse());
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+        {
+            AFMParser parser = new AFMParser(is);
+            checkHelveticaFontMetrics(parser.parse());
+        }
     }
 
     @Test
     void testHelveticaCharMetrics() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new FileInputStream("src/test/resources/afm/Helvetica.afm"));
-        FontMetrics fontMetrics = parser.parse();
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+        {
+            AFMParser parser = new AFMParser(is);
+            FontMetrics fontMetrics = parser.parse();
 
-        // char metrics
-        checkHelveticaCharMetrics(fontMetrics.getCharMetrics());
+            // char metrics
+            checkHelveticaCharMetrics(fontMetrics.getCharMetrics());
+        }
     }
 
     @Test
     void testHelveticaKernPairs() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new FileInputStream("src/test/resources/afm/Helvetica.afm"));
-        FontMetrics fontMetrics = parser.parse();
-
-        // KernPairs
-        List<KernPair> kernPairs = fontMetrics.getKernPairs();
-        assertEquals(2705, kernPairs.size());
-        // check "KPX A Ucircumflex -50"
-        checkKernPair(kernPairs, "A", "Ucircumflex", -50, 0);
-        // check "KPX W agrave -40"
-        checkKernPair(kernPairs, "W", "agrave", -40, 0);
-        // KernPairs0
-        assertTrue(fontMetrics.getKernPairs0().isEmpty());
-        // KernPairs1
-        assertTrue(fontMetrics.getKernPairs1().isEmpty());
-        // composite data
-        assertTrue(fontMetrics.getComposites().isEmpty());
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+        {
+            AFMParser parser = new AFMParser(is);
+            FontMetrics fontMetrics = parser.parse();
+
+            // KernPairs
+            List<KernPair> kernPairs = fontMetrics.getKernPairs();
+            assertEquals(2705, kernPairs.size());
+            // check "KPX A Ucircumflex -50"
+            checkKernPair(kernPairs, "A", "Ucircumflex", -50, 0);
+            // check "KPX W agrave -40"
+            checkKernPair(kernPairs, "W", "agrave", -40, 0);
+            // KernPairs0
+            assertTrue(fontMetrics.getKernPairs0().isEmpty());
+            // KernPairs1
+            assertTrue(fontMetrics.getKernPairs1().isEmpty());
+            // composite data
+            assertTrue(fontMetrics.getComposites().isEmpty());
+        }
     }
 
     @Test
     void testHelveticaFontMetricsReducedDataset() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new FileInputStream("src/test/resources/afm/Helvetica.afm"));
-        checkHelveticaFontMetrics(parser.parse(true));
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+        {
+            AFMParser parser = new AFMParser(is);
+            checkHelveticaFontMetrics(parser.parse(true));
+        }
     }
 
     @Test
     void testHelveticaCharMetricsReducedDataset() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new FileInputStream("src/test/resources/afm/Helvetica.afm"));
-        FontMetrics fontMetrics = parser.parse(true);
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+        {
+            AFMParser parser = new AFMParser(is);
+            FontMetrics fontMetrics = parser.parse(true);
 
-        // char metrics
-        checkHelveticaCharMetrics(fontMetrics.getCharMetrics());
+            // char metrics
+            checkHelveticaCharMetrics(fontMetrics.getCharMetrics());
+        }
     }
 
     @Test
     void testHelveticaKernPairsReducedDataset() throws IOException
     {
-        AFMParser parser = new AFMParser(
-                new FileInputStream("src/test/resources/afm/Helvetica.afm"));
-        FontMetrics fontMetrics = parser.parse(true);
-
-        // KernPairs, empty due to reducedDataset == true
-        assertTrue(fontMetrics.getKernPairs().isEmpty());
-        // KernPairs0
-        assertTrue(fontMetrics.getKernPairs0().isEmpty());
-        // KernPairs1
-        assertTrue(fontMetrics.getKernPairs1().isEmpty());
-        // composite data
-        assertTrue(fontMetrics.getComposites().isEmpty());
+        try (InputStream is = new 
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+        {
+            AFMParser parser = new AFMParser(is);//
+            FontMetrics fontMetrics = parser.parse(true);
+
+            // KernPairs, empty due to reducedDataset == true
+            assertTrue(fontMetrics.getKernPairs().isEmpty());
+            // KernPairs0
+            assertTrue(fontMetrics.getKernPairs0().isEmpty());
+            // KernPairs1
+            assertTrue(fontMetrics.getKernPairs1().isEmpty());
+            // composite data
+            assertTrue(fontMetrics.getComposites().isEmpty());
+        }
     }
 
     private void checkHelveticaCharMetrics(List<CharMetric> charMetrics)

Reply via email to