summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsteven.bethard <devnull@localhost>2009-07-12 22:56:24 +0000
committersteven.bethard <devnull@localhost>2009-07-12 22:56:24 +0000
commite2ee5d493050071f7d853838a62be3e14ec6e4d6 (patch)
treee57b1a3f3bb6a8087947e7763d1ff64d0f97328b
parented87842cef7a4f1ec4719116aa008e9b3658413e (diff)
downloadargparse-e2ee5d493050071f7d853838a62be3e14ec6e4d6.tar.gz
Fix tests to write files to temp directory.
Fix bug where some files weren't being closed.
-rw-r--r--argparse.py10
-rw-r--r--test/test_argparse.py13
2 files changed, 15 insertions, 8 deletions
diff --git a/argparse.py b/argparse.py
index fd8e4d2..4ae1c89 100644
--- a/argparse.py
+++ b/argparse.py
@@ -1800,10 +1800,12 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
else:
try:
args_file = open(arg_string[1:])
- arg_strings = args_file.read().splitlines()
- arg_strings = self._read_args_from_files(arg_strings)
- new_arg_strings.extend(arg_strings)
- args_file.close()
+ try:
+ arg_strings = args_file.read().splitlines()
+ arg_strings = self._read_args_from_files(arg_strings)
+ new_arg_strings.extend(arg_strings)
+ finally:
+ args_file.close()
except IOError:
err = _sys.exc_info()[1]
self.error(str(err))
diff --git a/test/test_argparse.py b/test/test_argparse.py
index e7ee189..33bec2d 100644
--- a/test/test_argparse.py
+++ b/test/test_argparse.py
@@ -16,6 +16,7 @@
import codecs
import os
+import shutil
import sys
import textwrap
import tempfile
@@ -65,9 +66,13 @@ class TempDirMixin(object):
def tearDown(self):
os.chdir(self.old_dir)
- for filename in os.listdir(self.temp_dir):
- os.remove(os.path.join(self.temp_dir, filename))
- os.rmdir(self.temp_dir)
+ while True:
+ try:
+ shutil.rmtree(self.temp_dir)
+ except WindowsError:
+ continue
+ else:
+ break
class Sig(object):
@@ -1227,7 +1232,7 @@ class TestParserDefault42(ParserTestCase):
]
-class TestArgumentsFromFile(ParserTestCase, TempDirMixin):
+class TestArgumentsFromFile(TempDirMixin, ParserTestCase):
"""Test reading arguments from a file"""
def setUp(self):