diff options
author | Xavier de Gaye <xdegaye@users.sourceforge.net> | 2016-07-22 10:15:29 (GMT) |
---|---|---|
committer | Xavier de Gaye <xdegaye@users.sourceforge.net> | 2016-07-22 10:15:29 (GMT) |
commit | d141531eb5924159c58fcce779f78d7d04265f54 (patch) | |
tree | 9dfc1848978eed2d447e99df3e9abbec19af6cc9 /Lib | |
parent | de85ed69f4935e639b911606d24d3382ae399b9c (diff) | |
download | cpython-d141531eb5924159c58fcce779f78d7d04265f54.zip cpython-d141531eb5924159c58fcce779f78d7d04265f54.tar.gz cpython-d141531eb5924159c58fcce779f78d7d04265f54.tar.bz2 |
Issue #27472: Add test.support.unix_shell as the path to the default shell.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/distutils/tests/test_spawn.py | 11 | ||||
-rw-r--r-- | Lib/test/support/__init__.py | 7 | ||||
-rw-r--r-- | Lib/test/test_os.py | 13 | ||||
-rw-r--r-- | Lib/test/test_subprocess.py | 4 |
4 files changed, 22 insertions, 13 deletions
diff --git a/Lib/distutils/tests/test_spawn.py b/Lib/distutils/tests/test_spawn.py index f507ef7..5edc24a 100644 --- a/Lib/distutils/tests/test_spawn.py +++ b/Lib/distutils/tests/test_spawn.py @@ -1,7 +1,8 @@ """Tests for distutils.spawn.""" import unittest +import sys import os -from test.support import run_unittest +from test.support import run_unittest, unix_shell from distutils.spawn import _nt_quote_args from distutils.spawn import spawn @@ -29,9 +30,9 @@ class SpawnTestCase(support.TempdirManager, # creating something executable # through the shell that returns 1 - if os.name == 'posix': + if sys.platform != 'win32': exe = os.path.join(tmpdir, 'foo.sh') - self.write_file(exe, '#!/bin/sh\nexit 1') + self.write_file(exe, '#!%s\nexit 1' % unix_shell) else: exe = os.path.join(tmpdir, 'foo.bat') self.write_file(exe, 'exit 1') @@ -40,9 +41,9 @@ class SpawnTestCase(support.TempdirManager, self.assertRaises(DistutilsExecError, spawn, [exe]) # now something that works - if os.name == 'posix': + if sys.platform != 'win32': exe = os.path.join(tmpdir, 'foo.sh') - self.write_file(exe, '#!/bin/sh\nexit 0') + self.write_file(exe, '#!%s\nexit 0' % unix_shell) else: exe = os.path.join(tmpdir, 'foo.bat') self.write_file(exe, 'exit 0') diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 2b29668..aa6725f 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -92,7 +92,7 @@ __all__ = [ "anticipate_failure", "load_package_tests", "detect_api_mismatch", "check__all__", # sys - "is_jython", "is_android", "check_impl_detail", + "is_jython", "is_android", "check_impl_detail", "unix_shell", # network "HOST", "IPV6_ENABLED", "find_unused_port", "bind_port", "open_urlresource", # processes @@ -736,6 +736,11 @@ is_jython = sys.platform.startswith('java') is_android = bool(sysconfig.get_config_var('ANDROID_API_LEVEL')) +if sys.platform != 'win32': + unix_shell = '/system/bin/sh' if is_android else '/bin/sh' +else: + unix_shell = None + # Filename used for testing if os.name == 'java': # Jython disallows @ in module names diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 6493d76..aa9b538 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -64,6 +64,7 @@ except ImportError: INT_MAX = PY_SSIZE_T_MAX = sys.maxsize from test.support.script_helper import assert_python_ok +from test.support import unix_shell root_in_posix = False @@ -670,18 +671,20 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol): return os.environ # Bug 1110478 - @unittest.skipUnless(os.path.exists('/bin/sh'), 'requires /bin/sh') + @unittest.skipUnless(unix_shell and os.path.exists(unix_shell), + 'requires a shell') def test_update2(self): os.environ.clear() os.environ.update(HELLO="World") - with os.popen("/bin/sh -c 'echo $HELLO'") as popen: + with os.popen("%s -c 'echo $HELLO'" % unix_shell) as popen: value = popen.read().strip() self.assertEqual(value, "World") - @unittest.skipUnless(os.path.exists('/bin/sh'), 'requires /bin/sh') + @unittest.skipUnless(unix_shell and os.path.exists(unix_shell), + 'requires a shell') def test_os_popen_iter(self): - with os.popen( - "/bin/sh -c 'echo \"line1\nline2\nline3\"'") as popen: + with os.popen("%s -c 'echo \"line1\nline2\nline3\"'" + % unix_shell) as popen: it = iter(popen) self.assertEqual(next(it), "line1\n") self.assertEqual(next(it), "line2\n") diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index ba91bbc..092e2ce 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -1579,7 +1579,7 @@ class POSIXProcessTestCase(BaseTestCase): fd, fname = tempfile.mkstemp() # reopen in text mode with open(fd, "w", errors="surrogateescape") as fobj: - fobj.write("#!/bin/sh\n") + fobj.write("#!%s\n" % support.unix_shell) fobj.write("exec '%s' -c 'import sys; sys.exit(47)'\n" % sys.executable) os.chmod(fname, 0o700) @@ -1624,7 +1624,7 @@ class POSIXProcessTestCase(BaseTestCase): fd, fname = tempfile.mkstemp() # reopen in text mode with open(fd, "w", errors="surrogateescape") as fobj: - fobj.write("#!/bin/sh\n") + fobj.write("#!%s\n" % support.unix_shell) fobj.write("exec '%s' -c 'import sys; sys.exit(47)'\n" % sys.executable) os.chmod(fname, 0o700) |