17db96d56Sopenharmony_ci"""
27db96d56Sopenharmony_ciTest suite for OS X interpreter environment variables.
37db96d56Sopenharmony_ci"""
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_cifrom test.support.os_helper import EnvironmentVarGuard
67db96d56Sopenharmony_ciimport subprocess
77db96d56Sopenharmony_ciimport sys
87db96d56Sopenharmony_ciimport sysconfig
97db96d56Sopenharmony_ciimport unittest
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci@unittest.skipUnless(sys.platform == 'darwin' and
127db96d56Sopenharmony_ci                     sysconfig.get_config_var('WITH_NEXT_FRAMEWORK'),
137db96d56Sopenharmony_ci                     'unnecessary on this platform')
147db96d56Sopenharmony_ciclass OSXEnvironmentVariableTestCase(unittest.TestCase):
157db96d56Sopenharmony_ci    def _check_sys(self, ev, cond, sv, val = sys.executable + 'dummy'):
167db96d56Sopenharmony_ci        with EnvironmentVarGuard() as evg:
177db96d56Sopenharmony_ci            subpc = [str(sys.executable), '-c',
187db96d56Sopenharmony_ci                'import sys; sys.exit(2 if "%s" %s %s else 3)' % (val, cond, sv)]
197db96d56Sopenharmony_ci            # ensure environment variable does not exist
207db96d56Sopenharmony_ci            evg.unset(ev)
217db96d56Sopenharmony_ci            # test that test on sys.xxx normally fails
227db96d56Sopenharmony_ci            rc = subprocess.call(subpc)
237db96d56Sopenharmony_ci            self.assertEqual(rc, 3, "expected %s not %s %s" % (ev, cond, sv))
247db96d56Sopenharmony_ci            # set environ variable
257db96d56Sopenharmony_ci            evg.set(ev, val)
267db96d56Sopenharmony_ci            # test that sys.xxx has been influenced by the environ value
277db96d56Sopenharmony_ci            rc = subprocess.call(subpc)
287db96d56Sopenharmony_ci            self.assertEqual(rc, 2, "expected %s %s %s" % (ev, cond, sv))
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ci    def test_pythonexecutable_sets_sys_executable(self):
317db96d56Sopenharmony_ci        self._check_sys('PYTHONEXECUTABLE', '==', 'sys.executable')
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ciif __name__ == "__main__":
347db96d56Sopenharmony_ci    unittest.main()
35