From a40e8ad53da6d3dcc3c734832fd6230bb9c67770 Mon Sep 17 00:00:00 2001 From: Corey Goldberg Date: Mon, 18 Jan 2016 08:00:56 -0500 Subject: [PATCH] fixed tests --- test_xvfb.py | 11 ++++++++--- xvfbwrapper.py | 13 ++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/test_xvfb.py b/test_xvfb.py index 13d0bfe..aa0420e 100644 --- a/test_xvfb.py +++ b/test_xvfb.py @@ -28,8 +28,8 @@ class TestXvfb(unittest.TestCase): xvfb.start() self.assertNotEqual(orig_display, os.environ['DISPLAY']) xvfb.stop() - self.assertIsNone(xvfb.proc) self.assertEqual(orig_display, os.environ['DISPLAY']) + self.assertIsNone(xvfb.proc) def test_start_without_existing_display(self): del os.environ['DISPLAY'] @@ -47,8 +47,8 @@ class TestXvfb(unittest.TestCase): display_var = ':{}'.format(xvfb.new_display) self.assertEqual(display_var, os.environ['DISPLAY']) self.assertIsNotNone(xvfb.proc) - self.assertIsNone(xvfb.proc) self.assertEqual(orig_display, os.environ['DISPLAY']) + self.assertIsNone(xvfb.proc) def test_start_with_kwargs(self): w = 800 @@ -64,10 +64,15 @@ class TestXvfb(unittest.TestCase): self.assertEqual(display_var, os.environ['DISPLAY']) self.assertIsNotNone(xvfb.proc) - def test_start_with_arbitrary_kwarg(self): + def test_start_with_arbitrary_kwargs(self): xvfb = Xvfb(nolisten='tcp') self.addCleanup(xvfb.stop) xvfb.start() display_var = ':{}'.format(xvfb.new_display) self.assertEqual(display_var, os.environ['DISPLAY']) self.assertIsNotNone(xvfb.proc) + + def test_start_fails_with_unknown_kwargs(self): + xvfb = Xvfb(foo='bar') + with self.assertRaises(RuntimeError): + xvfb.start() diff --git a/xvfbwrapper.py b/xvfbwrapper.py index 1cc6f3a..a2ad782 100644 --- a/xvfbwrapper.py +++ b/xvfbwrapper.py @@ -68,8 +68,11 @@ class Xvfb: else: self._set_display_var(self.orig_display) if self.proc is not None: - self.proc.terminate() - self.proc.wait() + try: + self.proc.terminate() + self.proc.wait() + except OSError: + pass self.proc = None def _get_next_unused_display(self): @@ -81,11 +84,11 @@ class Xvfb: highest_display = max(existing_displays) if existing_displays else 0 return highest_display + 1 + def _set_display_var(self, display): + os.environ['DISPLAY'] = ':{}'.format(display) + def xvfb_exists(self): """Check that Xvfb is available on PATH and is executable.""" paths = os.environ['PATH'].split(os.pathsep) return any(os.access(os.path.join(path, 'Xvfb'), os.X_OK) for path in paths) - - def _set_display_var(self, display): - os.environ['DISPLAY'] = ':{}'.format(display)