diff --git a/Makefile b/Makefile index 6a334d96901b85..67a568cfa54efe 100644 --- a/Makefile +++ b/Makefile @@ -333,7 +333,7 @@ test-all-valgrind: test-build $(PYTHON) tools/test.py --mode=debug,release --valgrind 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 test-ci-native: LOGLEVEL := info diff --git a/test/abort/testcfg.py b/test/abort/testcfg.py index 5e441845681c52..e509d0453c40fb 100644 --- a/test/abort/testcfg.py +++ b/test/abort/testcfg.py @@ -3,4 +3,4 @@ import testpy def GetConfiguration(context, root): - return testpy.SimpleTestConfiguration(context, root, 'abort') + return testpy.AbortTestConfiguration(context, root, 'abort') diff --git a/test/testpy/__init__.py b/test/testpy/__init__.py index 0efabae02c005c..37e5ac710bcdf8 100644 --- a/test/testpy/__init__.py +++ b/test/testpy/__init__.py @@ -180,3 +180,15 @@ def ListTests(self, current_path, path, arch, mode): for test in result: test.parallel = True 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 diff --git a/tools/test.py b/tools/test.py index 92ccb3df20611e..5a50c7f2e6ccc6 100755 --- a/tools/test.py +++ b/tools/test.py @@ -492,6 +492,7 @@ def __init__(self, context, path, arch, mode): self.arch = arch self.mode = mode self.parallel = False + self.disable_core_files = False self.thread_id = 0 def IsNegative(self): @@ -516,7 +517,8 @@ def RunCommand(self, command, env): output = Execute(full_command, self.context, self.context.GetTimeout(self.mode), - env) + env, + disable_core_files = self.disable_core_files) self.Cleanup() return TestOutput(self, full_command, @@ -718,7 +720,7 @@ def CheckedUnlink(name): PrintError("os.unlink() " + str(e)) 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: import pty (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(): 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( context, timeout, @@ -749,7 +759,8 @@ def Execute(args, context, timeout=None, env={}, faketty=False): stderr = fd_err, env = env_copy, faketty = faketty, - pty_out = pty_out + pty_out = pty_out, + preexec_fn = preexec_fn ) if faketty: os.close(out_master) @@ -1237,6 +1248,7 @@ def __init__(self, case, outcomes): self.case = case self.outcomes = outcomes self.parallel = self.case.parallel + self.disable_core_files = self.case.disable_core_files class Configuration(object):