You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/07/19 14:30:42 UTC

[commons-net] branch master updated: Bulletproof bills

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 0f666037 Bulletproof bills
0f666037 is described below

commit 0f66603714b9f70333f470c41d2da1c5be2596a0
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jul 19 10:30:38 2023 -0400

    Bulletproof bills
---
 .../commons/net/tftp/TFTPServerPathTest.java       | 139 ++++++++++++---------
 1 file changed, 78 insertions(+), 61 deletions(-)

diff --git a/src/test/java/org/apache/commons/net/tftp/TFTPServerPathTest.java b/src/test/java/org/apache/commons/net/tftp/TFTPServerPathTest.java
index 76cce667..f3e377f2 100644
--- a/src/test/java/org/apache/commons/net/tftp/TFTPServerPathTest.java
+++ b/src/test/java/org/apache/commons/net/tftp/TFTPServerPathTest.java
@@ -26,6 +26,8 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 
 import org.apache.commons.net.tftp.TFTPServer.ServerMode;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -38,6 +40,28 @@ public class TFTPServerPathTest {
     String filePrefix = "tftp-";
     File serverDirectory = new File(System.getProperty("java.io.tmpdir"));
 
+    private File file;
+    private File out;
+
+    @AfterEach
+    public void afterEach() {
+        deleteFixture(file);
+        deleteFixture(out);
+    }
+    
+    @BeforeEach
+    public void beforeEach() throws IOException {
+        file = new File(serverDirectory, filePrefix + "source.txt");
+        file.createNewFile();
+        out = new File(serverDirectory, filePrefix + "out");
+    }
+    
+    private void deleteFixture(final File file) {
+        if (!file.delete()) {
+            file.deleteOnExit();
+        }
+    }
+    
     @Test
     public void testReadOnly() throws IOException {
         // Start a read-only server
@@ -48,32 +72,29 @@ public class TFTPServerPathTest {
                 tftp.open();
                 tftp.setSoTimeout(2000);
 
-                // make a file to work with.
-                final File file = new File(serverDirectory, filePrefix + "source.txt");
-                file.createNewFile();
+                try {
+                    // cleanup old failed runs
+                    final boolean deleted = out.delete();
+                    assertFalse(out.exists(), () -> "Couldn't clear output location, deleted=" + deleted);
 
-                // Read the file from the TFTP server.
-                final File out = new File(serverDirectory, filePrefix + "out");
+                    try (final FileOutputStream output = new FileOutputStream(out)) {
+                        tftp.receiveFile(file.getName(), TFTP.BINARY_MODE, output, "localhost", SERVER_PORT);
+                    }
 
-                // cleanup old failed runs
-                final boolean deleted = out.delete();
-                assertFalse(out.exists(), () -> "Couldn't clear output location, deleted=" + deleted);
+                    assertTrue(out.exists(), "file not created");
 
-                try (final FileOutputStream output = new FileOutputStream(out)) {
-                    tftp.receiveFile(file.getName(), TFTP.BINARY_MODE, output, "localhost", SERVER_PORT);
-                }
-
-                assertTrue(out.exists(), "file not created");
+                    out.delete();
 
-                out.delete();
-
-                try (final FileInputStream fis = new FileInputStream(file)) {
-                    tftp.sendFile(out.getName(), TFTP.BINARY_MODE, fis, "localhost", SERVER_PORT);
-                    fail("Server allowed write");
-                } catch (final IOException e) {
-                    // expected path
+                    try (final FileInputStream fis = new FileInputStream(file)) {
+                        tftp.sendFile(out.getName(), TFTP.BINARY_MODE, fis, "localhost", SERVER_PORT);
+                        fail("Server allowed write");
+                    } catch (final IOException e) {
+                        // expected path
+                    }
+                } finally {
+                    deleteFixture(file);
+                    deleteFixture(out);
                 }
-                file.delete();
             }
         }
     }
@@ -88,34 +109,30 @@ public class TFTPServerPathTest {
                 tftp.open();
                 tftp.setSoTimeout(2000);
 
-                // make a file to work with.
-                final File file = new File(serverDirectory, filePrefix + "source.txt");
-                file.createNewFile();
-
-                // Read the file from the TFTP server.
-                final File out = new File(serverDirectory, filePrefix + "out");
-
-                // cleanup old failed runs
-                final boolean deleted = out.delete();
-                assertFalse(out.exists(), () -> "Couldn't clear output location, deleted=" + deleted);
-
-                try (final FileOutputStream output = new FileOutputStream(out)) {
-                    tftp.receiveFile(file.getName(), TFTP.BINARY_MODE, output, "localhost", SERVER_PORT);
-                    fail("Server allowed read");
-                } catch (final IOException e) {
-                    // expected path
+                try {
+                    // cleanup old failed runs
+                    final boolean deleted = out.delete();
+                    assertFalse(out.exists(), () -> "Couldn't clear output location, deleted=" + deleted);
+
+                    try (final FileOutputStream output = new FileOutputStream(out)) {
+                        tftp.receiveFile(file.getName(), TFTP.BINARY_MODE, output, "localhost", SERVER_PORT);
+                        fail("Server allowed read");
+                    } catch (final IOException e) {
+                        // expected path
+                    }
+                    out.delete();
+
+                    try (final FileInputStream fis = new FileInputStream(file)) {
+                        tftp.sendFile(out.getName(), TFTP.BINARY_MODE, fis, "localhost", SERVER_PORT);
+                    }
+
+                    assertTrue(out.exists(), "file not created");
+
+                } finally {
+                    // cleanup
+                    deleteFixture(file);
+                    deleteFixture(out);
                 }
-                out.delete();
-
-                try (final FileInputStream fis = new FileInputStream(file)) {
-                    tftp.sendFile(out.getName(), TFTP.BINARY_MODE, fis, "localhost", SERVER_PORT);
-                }
-
-                assertTrue(out.exists(), "file not created");
-
-                // cleanup
-                file.delete();
-                out.delete();
             }
         }
     }
@@ -129,22 +146,22 @@ public class TFTPServerPathTest {
             try (TFTPClient tftp = new TFTPClient()) {
                 tftp.open();
 
-                final File file = new File(serverDirectory, filePrefix + "source.txt");
-                file.createNewFile();
-
-                assertFalse(new File(serverDirectory, "../foo").exists(), "test construction error");
+                try {
+                    assertFalse(new File(serverDirectory, "../foo").exists(), "test construction error");
 
-                try (final FileInputStream fis = new FileInputStream(file)) {
-                    tftp.sendFile("../foo", TFTP.BINARY_MODE, fis, "localhost", SERVER_PORT);
-                    fail("Server allowed write!");
-                } catch (final IOException e) {
-                    // expected path
-                }
+                    try (final FileInputStream fis = new FileInputStream(file)) {
+                        tftp.sendFile("../foo", TFTP.BINARY_MODE, fis, "localhost", SERVER_PORT);
+                        fail("Server allowed write!");
+                    } catch (final IOException e) {
+                        // expected path
+                    }
 
-                assertFalse(new File(serverDirectory, "../foo").exists(), "file created when it should not have been");
+                    assertFalse(new File(serverDirectory, "../foo").exists(), "file created when it should not have been");
 
-                // cleanup
-                file.delete();
+                } finally {
+                    // cleanup
+                    deleteFixture(file);
+                }
             }
         }
     }