diff --git a/IPython/testing/iptestcontroller.py b/IPython/testing/iptestcontroller.py index 5a089e0..7b1812d 100644 --- a/IPython/testing/iptestcontroller.py +++ b/IPython/testing/iptestcontroller.py @@ -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