mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Display lengthy output of generator3.py inside corresponding test blocks
Make sure that all messages including those to a logger go through the buffered sys.stdout. GitOrigin-RevId: c785e0b2da1ec2f3c72764c388d275b782a5769d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
367a8a9aa7
commit
8fb9d3c4e1
@@ -21,7 +21,7 @@ def get_test_runner():
|
||||
try:
|
||||
import teamcity.unittestpy
|
||||
if teamcity.is_running_under_teamcity():
|
||||
return teamcity.unittestpy.TeamcityTestRunner()
|
||||
return teamcity.unittestpy.TeamcityTestRunner(buffer=True)
|
||||
except ImportError:
|
||||
pass
|
||||
return unittest.TextTestRunner()
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
from contextlib import contextmanager
|
||||
from io import open
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
from contextlib import contextmanager
|
||||
from io import open
|
||||
|
||||
_test_dir = os.path.dirname(__file__)
|
||||
_test_data_root_dir = os.path.join(_test_dir, 'data')
|
||||
@@ -13,6 +15,23 @@ _override_test_data = False
|
||||
class GeneratorTestCase(unittest.TestCase):
|
||||
longMessage = True
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(GeneratorTestCase, cls).setUpClass()
|
||||
# Logger cannot be initialized beforehand (say, on top-level), because,
|
||||
# otherwise, it won't take into account buffered sys.stderr needed by
|
||||
# teamcity-messages
|
||||
cls.log = logging.getLogger(cls.__name__)
|
||||
handler = logging.StreamHandler(sys.stderr)
|
||||
handler.setFormatter(logging.Formatter(fmt='%(levelname)s:%(name)s:%(message)s'))
|
||||
cls.log.addHandler(handler)
|
||||
cls.log.setLevel(logging.DEBUG)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
delattr(cls, 'log')
|
||||
super(GeneratorTestCase, cls).tearDownClass()
|
||||
|
||||
def setUp(self):
|
||||
self.temp_dir = tempfile.mkdtemp(prefix='{}_{}__'.format(self.test_class_name, self.test_name))
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import logging
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
@@ -7,6 +6,7 @@ import unittest
|
||||
|
||||
import generator3
|
||||
import six
|
||||
from generator3_tests import GeneratorTestCase
|
||||
from pycharm_generator_utils.constants import (
|
||||
ENV_TEST_MODE_FLAG,
|
||||
ENV_VERSION,
|
||||
@@ -14,15 +14,11 @@ from pycharm_generator_utils.constants import (
|
||||
CACHE_DIR_NAME,
|
||||
ENV_STANDALONE_MODE_FLAG,
|
||||
)
|
||||
from generator3_tests import GeneratorTestCase
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
# Such version implies that skeletons are always regenerated
|
||||
TEST_GENERATOR_VERSION = '1000.0'
|
||||
|
||||
_run_generator_in_separate_process = True
|
||||
_log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SkeletonCachingTest(GeneratorTestCase):
|
||||
@@ -73,8 +69,13 @@ class SkeletonCachingTest(GeneratorTestCase):
|
||||
if mod_path:
|
||||
args.append(mod_path)
|
||||
|
||||
_log.info('Launching generator3 as: ' + ' '.join(args))
|
||||
subprocess.call(args, env=env)
|
||||
self.log.info('Launching generator3 as: ' + ' '.join(args))
|
||||
process = subprocess.Popen(args, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
process.wait()
|
||||
sys.stdout.write(process.stdout.read().decode('utf-8'))
|
||||
process.stdout.close()
|
||||
sys.stderr.write(process.stderr.read().decode('utf-8'))
|
||||
process.stderr.close()
|
||||
else:
|
||||
os.environ.update(env)
|
||||
sys.path.append(extra_syspath_entry)
|
||||
@@ -85,7 +86,7 @@ class SkeletonCachingTest(GeneratorTestCase):
|
||||
else:
|
||||
generator3.process_one(mod_qname, mod_path, mod_qname in sys.builtin_module_names, output_dir)
|
||||
except Exception:
|
||||
_log.error('Raised inside generator', exc_info=True)
|
||||
self.log.error('Raised inside generator', exc_info=True)
|
||||
finally:
|
||||
if mod_qname != 'sys':
|
||||
sys.modules.pop(mod_qname, None)
|
||||
|
||||
Reference in New Issue
Block a user