Commit 02c7dbd2 authored by Kevin Christopher Henry's avatar Kevin Christopher Henry Committed by Tim Graham
Browse files

[1.6.x] Fixed #21122 -- Improved clean up of test temp directory on Windows

- Fixed test that didn't close the files it opened
- Caught and handled exception when temp directory cannot be removed

Backport of 978e1351 of master
parent 06b149e2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -175,3 +175,6 @@ class FileMoveSafeTests(unittest.TestCase):

        # should allow it and continue on if allow_overwrite is True
        self.assertIsNone(file_move_safe(self.file_a, self.file_b, allow_overwrite=True))

        os.close(handle_a)
        os.close(handle_b)
+16 −7
Original line number Diff line number Diff line
@@ -162,17 +162,24 @@ def setup(verbosity, test_labels):

    return state


def teardown(state):
    from django.conf import settings

    try:
        # Removing the temporary TEMP_DIR. Ensure we pass in unicode
        # so that it will successfully remove temp trees containing
        # non-ASCII filenames on Windows. (We're assuming the temp dir
        # name itself does not contain non-ASCII characters.)
        shutil.rmtree(six.text_type(TEMP_DIR))
    except OSError:
        print('Failed to remove temp directory: %s' % TEMP_DIR)

    # Restore the old settings.
    for key, value in state.items():
        setattr(settings, key, value)


def django_tests(verbosity, interactive, failfast, test_labels):
    from django.conf import settings
    state = setup(verbosity, test_labels)
@@ -253,6 +260,7 @@ def bisect_tests(bisection_label, options, test_labels):
        print("***** Source of error: %s" % test_labels[0])
    teardown(state)


def paired_tests(paired_test, options, test_labels):
    state = setup(int(options.verbosity), test_labels)

@@ -288,6 +296,7 @@ def paired_tests(paired_test, options, test_labels):
    print('***** No problem pair found')
    teardown(state)


if __name__ == "__main__":
    from optparse import OptionParser
    usage = "%prog [options] [module module module ...]"