diff --git a/.travis.yml b/.travis.yml index 7c08794..48aa8b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,12 @@ language: python python: - - "2.6" - "2.7" - "3.2" - "3.3" - "3.4" - "3.5" before_install: - - sudo apt-get update -qq - - sudo apt-get install -y xvfb -script: nosetests + - "sudo apt-get update -qq" + - "sudo apt-get install -y xvfb" +script: + - "python -m unittest discover" diff --git a/README.rst b/README.rst index 3fef846..1b5fe95 100644 --- a/README.rst +++ b/README.rst @@ -2,6 +2,8 @@ xvfbwrapper =============== +https://travis-ci.org/cgoldberg/xvfbwrapper.svg?branch=master + Python wrapper for running a display inside X virtual framebuffer (Xvfb). This is useful for running acceptance tests (i.e. browser-based tests) on a headless server. * Dev: https://github.com/cgoldberg/xvfbwrapper @@ -24,7 +26,7 @@ Install xvfbwrapper from PyPI:: *********************** * Xvfb (`sudo apt-get install xvfb`, or similar) -* Python 2.7 or 3.2+ (tested on py27, py32, py33, py34, pypy) +* Python 2.7 or 3.2+ (tested on py27, py32, py33, py34, 3.5, pypy) ************************************** About Xvfb (X Virtual Framebuffer) @@ -108,7 +110,7 @@ In the X Window System, Xvfb or X Virtual FrameBuffer is an X11 server that perf if __name__ == '__main__': unittest.main(verbosity=2) -This code uses `selenium` and `xvfbwrapper` to run a test with Firefox inside a headless display. +This above code uses `selenium` and `xvfbwrapper` to run a test with Firefox inside a headless display. It will: * install selenium bindings: `pip install selenium` * Firefox will launch inside virtual display (headless) diff --git a/tox.ini b/tox.ini index 489aa28..6aeec9c 100644 --- a/tox.ini +++ b/tox.ini @@ -4,20 +4,11 @@ # and then run "tox" from this directory. [tox] -envlist = flake8, py27, py32, py33, py34, pypy - -[flake8] -exclude = .tox, build +envlist=flake8,py27,py32,py33,py34,py35,pypy [testenv] -deps = - nose -commands = - {envpython} setup.py install - nosetests -v +commands={envpython} -m unittest discover [testenv:flake8] -deps = - flake8 -commands = - flake8 +deps=flake8 +commands=flake8 diff --git a/xvfbwrapper.py b/xvfbwrapper.py index 5ce2a34..f8cbce4 100644 --- a/xvfbwrapper.py +++ b/xvfbwrapper.py @@ -47,11 +47,10 @@ class Xvfb: def start(self): self.vdisplay_num = self.search_for_free_display() self.xvfb_cmd = ['Xvfb', ':%d' % self.vdisplay_num] + self.xvfb_cmd - - self.proc = subprocess.Popen(self.xvfb_cmd, - stdout=open(os.devnull), - stderr=open(os.devnull), - ) + with open(os.devnull, 'w') as fnull: + self.proc = subprocess.Popen(self.xvfb_cmd, + stdout=fnull, + stderr=fnull) time.sleep(0.2) # give Xvfb time to start ret_code = self.proc.poll() if ret_code is None: