(Merge 3.4) test_venv: use support.rmtree() instead of shutil.rmtree() to fix

sporadic failures on Windows
This commit is contained in:
Victor Stinner 2014-10-10 14:23:25 +02:00
commit 1aa3cb6030
1 changed files with 10 additions and 11 deletions

View File

@ -8,13 +8,12 @@ Licensed to the PSF under a contributor agreement.
import ensurepip import ensurepip
import os import os
import os.path import os.path
import shutil
import struct import struct
import subprocess import subprocess
import sys import sys
import tempfile import tempfile
from test.support import (captured_stdout, captured_stderr, run_unittest, from test.support import (captured_stdout, captured_stderr, run_unittest,
can_symlink, EnvironmentVarGuard) can_symlink, EnvironmentVarGuard, rmtree)
import textwrap import textwrap
import unittest import unittest
import venv import venv
@ -56,7 +55,7 @@ class BaseTest(unittest.TestCase):
self.exe = os.path.split(executable)[-1] self.exe = os.path.split(executable)[-1]
def tearDown(self): def tearDown(self):
shutil.rmtree(self.env_dir) rmtree(self.env_dir)
def run_with_capture(self, func, *args, **kwargs): def run_with_capture(self, func, *args, **kwargs):
with captured_stdout() as output: with captured_stdout() as output:
@ -83,7 +82,7 @@ class BasicTest(BaseTest):
""" """
Test the create function with default arguments. Test the create function with default arguments.
""" """
shutil.rmtree(self.env_dir) rmtree(self.env_dir)
self.run_with_capture(venv.create, self.env_dir) self.run_with_capture(venv.create, self.env_dir)
self.isdir(self.bindir) self.isdir(self.bindir)
self.isdir(self.include) self.isdir(self.include)
@ -121,7 +120,7 @@ class BasicTest(BaseTest):
self.assertEqual(sys.base_exec_prefix, sys.exec_prefix) self.assertEqual(sys.base_exec_prefix, sys.exec_prefix)
# check a venv's prefixes # check a venv's prefixes
shutil.rmtree(self.env_dir) rmtree(self.env_dir)
self.run_with_capture(venv.create, self.env_dir) self.run_with_capture(venv.create, self.env_dir)
envpy = os.path.join(self.env_dir, self.bindir, self.exe) envpy = os.path.join(self.env_dir, self.bindir, self.exe)
cmd = [envpy, '-c', None] cmd = [envpy, '-c', None]
@ -188,7 +187,7 @@ class BasicTest(BaseTest):
if os.path.islink(fn) or os.path.isfile(fn): if os.path.islink(fn) or os.path.isfile(fn):
os.remove(fn) os.remove(fn)
elif os.path.isdir(fn): elif os.path.isdir(fn):
shutil.rmtree(fn) rmtree(fn)
def test_unoverwritable_fails(self): def test_unoverwritable_fails(self):
#create a file clashing with directories in the env dir #create a file clashing with directories in the env dir
@ -254,7 +253,7 @@ class BasicTest(BaseTest):
""" """
Test that the sys.executable value is as expected. Test that the sys.executable value is as expected.
""" """
shutil.rmtree(self.env_dir) rmtree(self.env_dir)
self.run_with_capture(venv.create, self.env_dir) self.run_with_capture(venv.create, self.env_dir)
envpy = os.path.join(os.path.realpath(self.env_dir), self.bindir, self.exe) envpy = os.path.join(os.path.realpath(self.env_dir), self.bindir, self.exe)
cmd = [envpy, '-c', 'import sys; print(sys.executable)'] cmd = [envpy, '-c', 'import sys; print(sys.executable)']
@ -268,7 +267,7 @@ class BasicTest(BaseTest):
""" """
Test that the sys.executable value is as expected. Test that the sys.executable value is as expected.
""" """
shutil.rmtree(self.env_dir) rmtree(self.env_dir)
builder = venv.EnvBuilder(clear=True, symlinks=True) builder = venv.EnvBuilder(clear=True, symlinks=True)
builder.create(self.env_dir) builder.create(self.env_dir)
envpy = os.path.join(os.path.realpath(self.env_dir), self.bindir, self.exe) envpy = os.path.join(os.path.realpath(self.env_dir), self.bindir, self.exe)
@ -299,12 +298,12 @@ class EnsurePipTest(BaseTest):
def test_no_pip_by_default(self): def test_no_pip_by_default(self):
shutil.rmtree(self.env_dir) rmtree(self.env_dir)
self.run_with_capture(venv.create, self.env_dir) self.run_with_capture(venv.create, self.env_dir)
self.assert_pip_not_installed() self.assert_pip_not_installed()
def test_explicit_no_pip(self): def test_explicit_no_pip(self):
shutil.rmtree(self.env_dir) rmtree(self.env_dir)
self.run_with_capture(venv.create, self.env_dir, with_pip=False) self.run_with_capture(venv.create, self.env_dir, with_pip=False)
self.assert_pip_not_installed() self.assert_pip_not_installed()
@ -321,7 +320,7 @@ class EnsurePipTest(BaseTest):
# Requesting pip fails without SSL (http://bugs.python.org/issue19744) # Requesting pip fails without SSL (http://bugs.python.org/issue19744)
@unittest.skipIf(ssl is None, ensurepip._MISSING_SSL_MESSAGE) @unittest.skipIf(ssl is None, ensurepip._MISSING_SSL_MESSAGE)
def test_with_pip(self): def test_with_pip(self):
shutil.rmtree(self.env_dir) rmtree(self.env_dir)
with EnvironmentVarGuard() as envvars: with EnvironmentVarGuard() as envvars:
# pip's cross-version compatibility may trigger deprecation # pip's cross-version compatibility may trigger deprecation
# warnings in current versions of Python. Ensure related # warnings in current versions of Python. Ensure related