Merge pull request #5972 from takluyver/js-tests-xunit

Add Xunit support for JS tests
Thomas Kluyver 12 years ago
commit a942db896c

@ -221,12 +221,12 @@ class JSController(TestController):
'jsonschema', 'jsonpointer']
display_slimer_output = False
def __init__(self, section, enabled=True, engine='phantomjs'):
def __init__(self, section, xunit=True, engine='phantomjs'):
"""Create new test runner."""
TestController.__init__(self)
self.engine = engine
self.section = section
self.enabled = enabled
self.xunit = xunit
self.slimer_failure = re.compile('^FAIL.*', flags=re.MULTILINE)
js_test_dir = get_js_test_dir()
includes = '--includes=' + os.path.join(js_test_dir,'util.js')
@ -240,7 +240,10 @@ class JSController(TestController):
self.dirs.append(self.nbdir)
os.makedirs(os.path.join(self.nbdir.name, os.path.join(u'sub ∂ir1', u'sub ∂ir 1a')))
os.makedirs(os.path.join(self.nbdir.name, os.path.join(u'sub ∂ir2', u'sub ∂ir 1b')))
if self.xunit:
self.add_xunit()
# start the ipython notebook, so we get the port number
self.server_port = 0
self._init_server()
@ -250,6 +253,10 @@ class JSController(TestController):
# don't launch tests if the server didn't start
self.cmd = [sys.executable, '-c', 'raise SystemExit(1)']
def add_xunit(self):
xunit_file = os.path.abspath(self.section.replace('/','.') + '.xunit.xml')
self.cmd.append('--xunit=%s' % xunit_file)
def launch(self, buffer_output):
# If the engine is SlimerJS, we need to buffer the output because
# SlimerJS does not support exit codes, so CasperJS always returns 0.
@ -281,7 +288,7 @@ class JSController(TestController):
@property
def will_run(self):
return self.enabled and all(have[a] for a in self.requirements + [self.engine])
return all(have[a] for a in self.requirements + [self.engine])
def _init_server(self):
"Start the notebook server in a separate process"
@ -386,7 +393,7 @@ def prepare_controllers(options):
js_testgroups = all_js_groups()
engine = 'slimerjs' if options.slimerjs else 'phantomjs'
c_js = [JSController(name, engine=engine) for name in js_testgroups]
c_js = [JSController(name, xunit=options.xunit, engine=engine) for name in js_testgroups]
c_py = [PyTestController(name, options) for name in py_testgroups]
controllers = c_py + c_js

Loading…
Cancel
Save