mirror of
https://github.com/nodejs/node.git
synced 2025-04-29 14:25:18 +00:00
test: run abort tests
Currently, tests in test/abort do not run in CI. This change configures the test runner to not write core files for abort tests and to run them. PR-URL: https://github.com/nodejs/node/pull/14013 Fixes: https://github.com/nodejs/node/issues/14012 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
This commit is contained in:
parent
df57d8bdcc
commit
70c775a810
2
Makefile
2
Makefile
@ -333,7 +333,7 @@ test-all-valgrind: test-build
|
|||||||
$(PYTHON) tools/test.py --mode=debug,release --valgrind
|
$(PYTHON) tools/test.py --mode=debug,release --valgrind
|
||||||
|
|
||||||
CI_NATIVE_SUITES := addons addons-napi
|
CI_NATIVE_SUITES := addons addons-napi
|
||||||
CI_JS_SUITES := async-hooks doctool inspector known_issues message parallel pseudo-tty sequential
|
CI_JS_SUITES := abort async-hooks doctool inspector known_issues message parallel pseudo-tty sequential
|
||||||
|
|
||||||
# Build and test addons without building anything else
|
# Build and test addons without building anything else
|
||||||
test-ci-native: LOGLEVEL := info
|
test-ci-native: LOGLEVEL := info
|
||||||
|
@ -3,4 +3,4 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
|
|||||||
import testpy
|
import testpy
|
||||||
|
|
||||||
def GetConfiguration(context, root):
|
def GetConfiguration(context, root):
|
||||||
return testpy.SimpleTestConfiguration(context, root, 'abort')
|
return testpy.AbortTestConfiguration(context, root, 'abort')
|
||||||
|
@ -180,3 +180,15 @@ class AsyncHooksTestConfiguration(SimpleTestConfiguration):
|
|||||||
for test in result:
|
for test in result:
|
||||||
test.parallel = True
|
test.parallel = True
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
class AbortTestConfiguration(SimpleTestConfiguration):
|
||||||
|
def __init__(self, context, root, section, additional=None):
|
||||||
|
super(AbortTestConfiguration, self).__init__(context, root, section,
|
||||||
|
additional)
|
||||||
|
|
||||||
|
def ListTests(self, current_path, path, arch, mode):
|
||||||
|
result = super(AbortTestConfiguration, self).ListTests(
|
||||||
|
current_path, path, arch, mode)
|
||||||
|
for test in result:
|
||||||
|
test.disable_core_files = True
|
||||||
|
return result
|
||||||
|
@ -492,6 +492,7 @@ class TestCase(object):
|
|||||||
self.arch = arch
|
self.arch = arch
|
||||||
self.mode = mode
|
self.mode = mode
|
||||||
self.parallel = False
|
self.parallel = False
|
||||||
|
self.disable_core_files = False
|
||||||
self.thread_id = 0
|
self.thread_id = 0
|
||||||
|
|
||||||
def IsNegative(self):
|
def IsNegative(self):
|
||||||
@ -516,7 +517,8 @@ class TestCase(object):
|
|||||||
output = Execute(full_command,
|
output = Execute(full_command,
|
||||||
self.context,
|
self.context,
|
||||||
self.context.GetTimeout(self.mode),
|
self.context.GetTimeout(self.mode),
|
||||||
env)
|
env,
|
||||||
|
disable_core_files = self.disable_core_files)
|
||||||
self.Cleanup()
|
self.Cleanup()
|
||||||
return TestOutput(self,
|
return TestOutput(self,
|
||||||
full_command,
|
full_command,
|
||||||
@ -718,7 +720,7 @@ def CheckedUnlink(name):
|
|||||||
PrintError("os.unlink() " + str(e))
|
PrintError("os.unlink() " + str(e))
|
||||||
break
|
break
|
||||||
|
|
||||||
def Execute(args, context, timeout=None, env={}, faketty=False):
|
def Execute(args, context, timeout=None, env={}, faketty=False, disable_core_files=False):
|
||||||
if faketty:
|
if faketty:
|
||||||
import pty
|
import pty
|
||||||
(out_master, fd_out) = pty.openpty()
|
(out_master, fd_out) = pty.openpty()
|
||||||
@ -740,6 +742,14 @@ def Execute(args, context, timeout=None, env={}, faketty=False):
|
|||||||
for key, value in env.iteritems():
|
for key, value in env.iteritems():
|
||||||
env_copy[key] = value
|
env_copy[key] = value
|
||||||
|
|
||||||
|
preexec_fn = None
|
||||||
|
|
||||||
|
if disable_core_files and not utils.IsWindows():
|
||||||
|
def disableCoreFiles():
|
||||||
|
import resource
|
||||||
|
resource.setrlimit(resource.RLIMIT_CORE, (0,0))
|
||||||
|
preexec_fn = disableCoreFiles
|
||||||
|
|
||||||
(process, exit_code, timed_out, output) = RunProcess(
|
(process, exit_code, timed_out, output) = RunProcess(
|
||||||
context,
|
context,
|
||||||
timeout,
|
timeout,
|
||||||
@ -749,7 +759,8 @@ def Execute(args, context, timeout=None, env={}, faketty=False):
|
|||||||
stderr = fd_err,
|
stderr = fd_err,
|
||||||
env = env_copy,
|
env = env_copy,
|
||||||
faketty = faketty,
|
faketty = faketty,
|
||||||
pty_out = pty_out
|
pty_out = pty_out,
|
||||||
|
preexec_fn = preexec_fn
|
||||||
)
|
)
|
||||||
if faketty:
|
if faketty:
|
||||||
os.close(out_master)
|
os.close(out_master)
|
||||||
@ -1237,6 +1248,7 @@ class ClassifiedTest(object):
|
|||||||
self.case = case
|
self.case = case
|
||||||
self.outcomes = outcomes
|
self.outcomes = outcomes
|
||||||
self.parallel = self.case.parallel
|
self.parallel = self.case.parallel
|
||||||
|
self.disable_core_files = self.case.disable_core_files
|
||||||
|
|
||||||
|
|
||||||
class Configuration(object):
|
class Configuration(object):
|
||||||
|
Loading…
Reference in New Issue
Block a user