You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.7 KiB
62 lines
1.7 KiB
import os
|
|
import os.path
|
|
import sys
|
|
|
|
import unittest
|
|
|
|
from subprocess import Popen
|
|
from subprocess import PIPE
|
|
|
|
class TestRun(unittest.TestCase):
|
|
maxDiff = None
|
|
|
|
def setUp(self):
|
|
self.cwd = os.getcwd()
|
|
os.chdir(os.path.dirname(__file__))
|
|
|
|
def tearDown(self):
|
|
os.chdir(self.cwd)
|
|
|
|
def _run(self, script):
|
|
env = os.environ.copy()
|
|
env['PYTHONWARNINGS'] = 'ignore'
|
|
args = [sys.executable, '-m', 'gevent.monkey', script, 'patched']
|
|
p = Popen(args, stdout=PIPE, stderr=PIPE, env=env)
|
|
gout, gerr = p.communicate()
|
|
self.assertEqual(0, p.returncode, (gout, gerr))
|
|
|
|
args = [sys.executable, script, 'stdlib']
|
|
p = Popen(args, stdout=PIPE, stderr=PIPE)
|
|
|
|
pout, perr = p.communicate()
|
|
self.assertEqual(0, p.returncode, (pout, perr))
|
|
|
|
glines = gout.decode("utf-8").splitlines()
|
|
plines = pout.decode('utf-8').splitlines()
|
|
self.assertEqual(glines, plines)
|
|
self.assertEqual(gerr, perr)
|
|
|
|
return glines, gerr
|
|
|
|
def test_run_simple(self):
|
|
self._run(os.path.join('monkey_package', 'script.py'))
|
|
|
|
def test_run_package(self):
|
|
# Run a __main__ inside a package.
|
|
lines, _ = self._run('monkey_package')
|
|
|
|
self.assertTrue(lines[0].endswith('__main__.py'), lines[0])
|
|
self.assertEqual(lines[1], '__main__')
|
|
|
|
def test_issue_302(self):
|
|
lines, _ = self._run(os.path.join('monkey_package', 'issue302monkey.py'))
|
|
|
|
self.assertEqual(lines[0], 'True')
|
|
lines[1] = lines[1].replace('\\', '/') # windows path
|
|
self.assertEqual(lines[1], 'monkey_package/issue302monkey.py')
|
|
self.assertEqual(lines[2], 'True', lines)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|