Fixed all environment close issues in testing (#3020)

This commit is contained in:
Mark Towers
2022-08-08 22:41:15 +01:00
committed by GitHub
parent 607602b531
commit 8b744130bc
4 changed files with 15 additions and 10 deletions

View File

@@ -375,14 +375,13 @@ class AcrobotEnv(core.Env):
np.array(pygame.surfarray.pixels3d(self.screen)), axes=(1, 0, 2) np.array(pygame.surfarray.pixels3d(self.screen)), axes=(1, 0, 2)
) )
def close(self):
if self.screen is not None:
import pygame
def close(self): pygame.display.quit()
if self.screen is not None: pygame.quit()
import pygame self.isopen = False
pygame.display.quit()
pygame.quit()
self.isopen = False
def wrap(x, m, M): def wrap(x, m, M):

View File

@@ -221,6 +221,10 @@ class VideoRecorder: # TODO: remove with gym 1.0
if not self.enabled or self._closed: if not self.enabled or self._closed:
return return
# First close the environment
self.env.close()
# Close the encoder
if self.encoder: if self.encoder:
logger.debug("Closing video encoder: path=%s", self.path) logger.debug("Closing video encoder: path=%s", self.path)
self.encoder.close() self.encoder.close()

View File

@@ -21,10 +21,12 @@ def test_human_rendering():
env.close() env.close()
env = gym.make("CartPole-v1", render_mode="human")
with pytest.raises( with pytest.raises(
AssertionError, AssertionError,
match=re.escape( match=re.escape(
"Expected env.render_mode to be one of 'rgb_array' or 'single_rgb_array' but got 'human'" "Expected env.render_mode to be one of 'rgb_array' or 'single_rgb_array' but got 'human'"
), ),
): ):
HumanRendering(gym.make("CartPole-v1", render_mode="human")) HumanRendering(env)
env.close()

View File

@@ -8,7 +8,7 @@ import gym
from gym.wrappers.monitoring.video_recorder import VideoRecorder from gym.wrappers.monitoring.video_recorder import VideoRecorder
class BrokenRecordableEnv: class BrokenRecordableEnv(gym.Env):
metadata = {"render_modes": ["rgb_array"]} metadata = {"render_modes": ["rgb_array"]}
def __init__(self, render_mode="rgb_array"): def __init__(self, render_mode="rgb_array"):
@@ -18,7 +18,7 @@ class BrokenRecordableEnv:
pass pass
class UnrecordableEnv: class UnrecordableEnv(gym.Env):
metadata = {"render_modes": [None]} metadata = {"render_modes": [None]}
def __init__(self, render_mode=None): def __init__(self, render_mode=None):