Skip to content

Commit 4294967

Browse files
committed
update
1 parent 56a6a96 commit 4294967

File tree

1 file changed

+27
-31
lines changed

1 file changed

+27
-31
lines changed

Lib/test/test_site.py

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from test.support import socket_helper
1414
from test.support import captured_stderr
1515
from test.support.os_helper import TESTFN, EnvironmentVarGuard
16+
from test.support.script_helper import spawn_python, kill_python
1617
import ast
1718
import builtins
1819
import glob
@@ -808,23 +809,24 @@ def test_underpth_dll_file(self):
808809

809810
class CommandLineTests(unittest.TestCase):
810811
def exists(self, path):
811-
if path is not None and os.path.isdir(path):
812-
return "exists"
813-
else:
814-
return "doesn't exist"
812+
if path is not None and os.path.isdir(path):
813+
return "exists"
814+
else:
815+
return "doesn't exist"
815816

816817
def get_excepted_output(self, *args):
817818
if len(args) == 0:
818819
user_base = site.getuserbase()
819820
user_site = site.getusersitepackages()
820-
output = "sys.path = [\n"
821+
output = io.StringIO()
822+
output.write("sys.path = [\n")
821823
for dir in sys.path:
822-
output += " %r,\n" % (dir,)
823-
output += "]\n"
824-
output += f"USER_BASE: {user_base!r} ({self.exists(user_base)})\n"
825-
output += f"USER_SITE: {user_site!r} ({self.exists(user_site)})\n"
826-
output += f"ENABLE_USER_SITE: {site.ENABLE_USER_SITE!r}\n"
827-
return 0, dedent(output).strip()
824+
output.write(" %r,\n" % (dir,))
825+
output.write("]\n")
826+
output.write(f"USER_BASE: {user_base} ({self.exists(user_base)})\n")
827+
output.write(f"USER_SITE: {user_site} ({self.exists(user_site)})\n")
828+
output.write(f"ENABLE_USER_SITE: {site.ENABLE_USER_SITE}\n")
829+
return 0, dedent(output.getvalue()).strip()
828830

829831
buffer = []
830832
if '--user-base' in args:
@@ -846,25 +848,19 @@ def get_excepted_output(self, *args):
846848
return 10, None
847849

848850
def invoke_command_line(self, *args):
849-
args = [sys.executable, "-m", "site", *args]
850-
env = os.environ.copy()
851-
env["PYTHONUTF8"] = "1"
852-
env["PYTHONIOENCODING"] = "utf-8"
853-
854-
proc = subprocess.Popen(args,
855-
stdout=subprocess.PIPE,
856-
stderr=subprocess.STDOUT,
857-
text=True,
858-
env=env,
859-
encoding='utf-8',
860-
errors='replace')
861-
proc.wait()
862-
output = proc.stdout.read()
851+
args = ["-m", "site", *args]
852+
853+
with EnvironmentVarGuard() as env:
854+
env["PYTHONUTF8"] = "1"
855+
env["PYTHONIOENCODING"] = "utf-8"
856+
proc = spawn_python(*args, text=True, env=env,
857+
encoding='utf-8', errors='replace')
858+
859+
output = kill_python(proc)
863860
return_code = proc.returncode
864-
proc.stdout.close()
865861
return return_code, os.path.normpath(dedent(output).strip())
866862

867-
@unittest.skipIf(sys.platform == 'wasi', "Popen not supported on WASI")
863+
@support.requires_subprocess()
868864
def test_no_args(self):
869865
return_code, output = self.invoke_command_line()
870866
excepted_return_code, _ = self.get_excepted_output()
@@ -880,30 +876,30 @@ def test_no_args(self):
880876
self.assertEqual(lines[-2], excepted_site)
881877
self.assertEqual(lines[-1], f"ENABLE_USER_SITE: {site.ENABLE_USER_SITE}")
882878

883-
@unittest.skipIf(sys.platform == 'wasi', "Popen not supported on WASI")
879+
@support.requires_subprocess()
884880
def test_unknown_args(self):
885881
return_code, output = self.invoke_command_line("--unknown-arg")
886882
excepted_return_code, _ = self.get_excepted_output("--unknown-arg")
887883
self.assertEqual(return_code, excepted_return_code)
888884
self.assertIn('[--user-base] [--user-site]', output)
889885

890-
@unittest.skipIf(sys.platform == 'wasi', "Popen not supported on WASI")
886+
@support.requires_subprocess()
891887
def test_base_arg(self):
892888
return_code, output = self.invoke_command_line("--user-base")
893889
excepted = self.get_excepted_output("--user-base")
894890
excepted_return_code, excepted_output = excepted
895891
self.assertEqual(return_code, excepted_return_code)
896892
self.assertEqual(output, excepted_output)
897893

898-
@unittest.skipIf(sys.platform == 'wasi', "Popen not supported on WASI")
894+
@support.requires_subprocess()
899895
def test_site_arg(self):
900896
return_code, output = self.invoke_command_line("--user-site")
901897
excepted = self.get_excepted_output("--user-site")
902898
excepted_return_code, excepted_output = excepted
903899
self.assertEqual(return_code, excepted_return_code)
904900
self.assertEqual(output, excepted_output)
905901

906-
@unittest.skipIf(sys.platform == 'wasi', "Popen not supported on WASI")
902+
@support.requires_subprocess()
907903
def test_both_args(self):
908904
return_code, output = self.invoke_command_line("--user-base",
909905
"--user-site")

0 commit comments

Comments
 (0)