Skip to content

Commit

Permalink
pytest: close stdout and stderr when local node is cleaned up (#5576)
Browse files Browse the repository at this point in the history
This fixes the following warning when trying to run tests with
unittest fixture:

    sys:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='/home/mpn/.near/test0/stdout' mode='a' encoding='UTF-8'>
    sys:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='/home/mpn/.near/test0/stderr' mode='a' encoding='UTF-8'>

Issue: #3186
Issue: #4618
  • Loading branch information
mina86 authored Dec 2, 2021
1 parent 22e997b commit 7d80bf0
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions pytest/lib/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,16 +379,16 @@ def start(self, *, boot_node: BootNode = None, skip_starting_proxy=False):
env["RUST_LOG"] = "actix_web=warn,mio=warn,tokio_util=warn,actix_server=warn,actix_http=warn," + env.get(
"RUST_LOG", "debug")

self.stdout_name = os.path.join(self.node_dir, 'stdout')
self.stderr_name = os.path.join(self.node_dir, 'stderr')
self.stdout = open(self.stdout_name, 'a')
self.stderr = open(self.stderr_name, 'a')
cmd = self._get_command_line(self.near_root, self.node_dir, boot_node,
self.binary_name)
self.pid.value = subprocess.Popen(cmd,
stdout=self.stdout,
stderr=self.stderr,
env=env).pid
node_dir = pathlib.Path(self.node_dir)
stdout, stderr = node_dir / 'stdout', node_dir / 'stderr'
with open(stdout, 'ab') as stdout_fd, open(stderr, 'ab') as stderr_fd:
self.pid.value = subprocess.Popen(cmd,
stdin=subprocess.DEVNULL,
stdout=stdout_fd,
stderr=stderr_fd,
env=env).pid

if not skip_starting_proxy:
self.start_proxy_if_needed()
Expand All @@ -398,13 +398,11 @@ def start(self, *, boot_node: BootNode = None, skip_starting_proxy=False):
except:
logger.error(
'=== failed to start node, rpc does not ready in 10 seconds')
self.stdout.close()
self.stderr.close()
if os.environ.get('BUILDKITE'):
logger.info('=== stdout: ')
logger.info(open(self.stdout_name).read())
logger.info(stdout.read_text('utf-8', 'replace'))
logger.info('=== stderr: ')
logger.info(open(self.stderr_name).read())
logger.info(stderr.read_text('utf-8', 'replace'))

def kill(self):
if self.pid.value != 0:
Expand Down

0 comments on commit 7d80bf0

Please sign in to comment.