blob: 24ec2b4403daec519b58f1400b6e1fc4a7168db6 [file] [log] [blame]
Ronald Oussoren3e264e12009-02-12 15:55:38 +00001"""
2Test suite for OS X interpreter environment variables.
3"""
4
5from test.support import EnvironmentVarGuard, run_unittest
6import subprocess
7import sys
Éric Araujo6f58b6b2011-03-02 00:31:51 +00008import sysconfig
Ronald Oussoren3e264e12009-02-12 15:55:38 +00009import unittest
10
11class OSXEnvironmentVariableTestCase(unittest.TestCase):
Ronald Oussorenc3960c22010-07-23 11:48:36 +000012 def _check_sys(self, ev, cond, sv, val = sys.executable + 'dummy'):
Ronald Oussoren3e264e12009-02-12 15:55:38 +000013 with EnvironmentVarGuard() as evg:
14 subpc = [str(sys.executable), '-c',
15 'import sys; sys.exit(2 if "%s" %s %s else 3)' % (val, cond, sv)]
16 # ensure environment variable does not exist
17 evg.unset(ev)
18 # test that test on sys.xxx normally fails
19 rc = subprocess.call(subpc)
20 self.assertEqual(rc, 3, "expected %s not %s %s" % (ev, cond, sv))
21 # set environ variable
22 evg.set(ev, val)
23 # test that sys.xxx has been influenced by the environ value
24 rc = subprocess.call(subpc)
25 self.assertEqual(rc, 2, "expected %s %s %s" % (ev, cond, sv))
26
27 def test_pythonexecutable_sets_sys_executable(self):
28 self._check_sys('PYTHONEXECUTABLE', '==', 'sys.executable')
29
30def test_main():
Ronald Oussoren8954cd32009-03-04 22:57:10 +000031 if sys.platform == 'darwin' and sysconfig.get_config_var('WITH_NEXT_FRAMEWORK'):
Ronald Oussoren3e264e12009-02-12 15:55:38 +000032 run_unittest(OSXEnvironmentVariableTestCase)
33
34if __name__ == "__main__":
35 test_main()