From a1839255b02d283b129ca68edb4a8a90c2335155 Mon Sep 17 00:00:00 2001
From: Andrew Ferrier <andrewferrier@example.com>
Date: Mon, 12 Jan 2015 21:00:46 +0000
Subject: [PATCH] Use more elegant way of handling temporary files and
 directories.

---
 tests/test_Direct_Errors.py    |  7 +++----
 tests/test_Direct_Metadata.py  | 24 ++++++++++++------------
 tests/test_Subprocess_Basic.py | 23 ++++++++++-------------
 3 files changed, 25 insertions(+), 29 deletions(-)

diff --git a/tests/test_Direct_Errors.py b/tests/test_Direct_Errors.py
index 4e55516..f700111 100644
--- a/tests/test_Direct_Errors.py
+++ b/tests/test_Direct_Errors.py
@@ -13,10 +13,9 @@ class Direct_Errors(BaseTestClasses.Email2PDFTestCase):
 
     def test_plaincontent_fileexist(self):
         self.attachText("Hello!")
-        unused_f_handle, f_path = tempfile.mkstemp()
-        with self.assertRaisesRegex(Exception, "file.*exist"):
-            self.invokeDirectly(outputFile=f_path)
-        os.unlink(f_path)
+        with tempfile.NamedTemporaryFile() as tmpfile:
+            with self.assertRaisesRegex(Exception, "file.*exist"):
+                self.invokeDirectly(outputFile=tmpfile.name)
 
     def test_plaincontent_dirnotexist(self):
         self.attachText("Hello!")
diff --git a/tests/test_Direct_Metadata.py b/tests/test_Direct_Metadata.py
index 4beea41..dceffec 100644
--- a/tests/test_Direct_Metadata.py
+++ b/tests/test_Direct_Metadata.py
@@ -38,18 +38,18 @@ class Direct_Metadata(Email2PDFTestCase):
     def test_plaincontent_metadata_differentmount(self):
         self.addHeaders()
         self.setPlainContent("Hello!")
-        mountPoint2 = tempfile.mkdtemp(dir='/var/tmp')
-        if(self.find_mount_point(mountPoint2) != self.find_mount_point(tempfile.tempdir)):
-            path = os.path.join(mountPoint2, "plaincontent_metadata_differentmount.pdf")
-            error = self.invokeDirectly(outputFile=path)
-            self.assertEqual('', error)
-            self.assertTrue(os.path.exists(path))
-            self.assertEqual(Email2PDFTestCase.DEFAULT_FROM, self.getMetadataField(path, "Author"))
-            self.assertEqual(Email2PDFTestCase.DEFAULT_TO, self.getMetadataField(path, "X-email2pdf-To"))
-            self.assertEqual(Email2PDFTestCase.DEFAULT_SUBJECT, self.getMetadataField(path, "Title"))
-            self.assertEqual("email2pdf", self.getMetadataField(path, "Producer"))
-        else:
-            self.skipTest(mountPoint2 + " and " + tempfile.tempdir + " are on the same mountpoint, test not relevant.")
+        with tempfile.TemporaryDirectory(dir='/var/tmp') as tempdir:
+            if(self.find_mount_point(tempdir) != self.find_mount_point(tempfile.tempdir)):
+                path = os.path.join(tempdir, "plaincontent_metadata_differentmount.pdf")
+                error = self.invokeDirectly(outputFile=path)
+                self.assertEqual('', error)
+                self.assertTrue(os.path.exists(path))
+                self.assertEqual(Email2PDFTestCase.DEFAULT_FROM, self.getMetadataField(path, "Author"))
+                self.assertEqual(Email2PDFTestCase.DEFAULT_TO, self.getMetadataField(path, "X-email2pdf-To"))
+                self.assertEqual(Email2PDFTestCase.DEFAULT_SUBJECT, self.getMetadataField(path, "Title"))
+                self.assertEqual("email2pdf", self.getMetadataField(path, "Producer"))
+            else:
+                self.skipTest(tempdir + " and " + tempfile.tempdir + " are on the same mountpoint, test not relevant.")
 
     def test_noheaders_metadata(self):
         self.setPlainContent("Hello!")
diff --git a/tests/test_Subprocess_Basic.py b/tests/test_Subprocess_Basic.py
index 5a1240a..5c57a47 100644
--- a/tests/test_Subprocess_Basic.py
+++ b/tests/test_Subprocess_Basic.py
@@ -101,24 +101,21 @@ class TestBasic(Email2PDFTestCase):
 
     def test_plaincontent_outputfileoverrides(self):
         filename = os.path.join(self.examineDir, "outputFileOverrides.pdf")
-        pathname = tempfile.mkdtemp(dir='/tmp')
-        self.setPlainContent("Hello!")
-        (rc, output, error) = self.invokeAsSubprocess(outputDirectory=pathname, outputFile=filename)
-        self.assertEqual(0, rc)
-        self.assertEqual('', error)
-        self.assertFalse(self.existsByTime(pathname))
-        self.assertTrue(os.path.exists(filename))
-        self.assertRegex(self.getPDFText(filename), "Hello!")
+        with tempfile.TemporaryDirectory() as pathname:
+            self.setPlainContent("Hello!")
+            (rc, output, error) = self.invokeAsSubprocess(outputDirectory=pathname, outputFile=filename)
+            self.assertEqual(0, rc)
+            self.assertEqual('', error)
+            self.assertFalse(self.existsByTime(pathname))
+            self.assertTrue(os.path.exists(filename))
+            self.assertRegex(self.getPDFText(filename), "Hello!")
 
     def test_plaincontent_fileexist(self):
         self.setPlainContent("Hello!")
-        unused_f_handle, f_path = tempfile.mkstemp()
-        try:
-            (rc, output, error) = self.invokeAsSubprocess(outputFile=f_path)
+        with tempfile.NamedTemporaryFile() as tmpfile:
+            (rc, output, error) = self.invokeAsSubprocess(outputFile=tmpfile.name)
             self.assertEqual(2, rc)
             self.assertRegex(error, "file.*exist")
-        finally:
-            os.unlink(f_path)
 
     def test_verbose(self):
         self.setPlainContent("Hello!")