cmd = cmd_sambatool.subcommands['domain'].subcommands['provision'] result = cmd._run("samba-tool domain provision", '--targetdir=%s' % self.tmpdir, '--use-ntvfs') def test_03_00_provision_server_role(self): for role in ('member', 'server', 'member', 'standalone'): self._test_provision_subprocess(options=['--server-role', role], subdir=role) def test_04_00_provision_blank(self): for i in range(2): self._test_provision_subprocess(options=['--blank'], subdir=i) def test_05_00_provision_partitions_only(self): self._test_provision_subprocess(options=['--partitions-only']) if "://" not in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host if ANCIENT_SAMBA: runner = SubunitTestRunner() if not runner.run(unittest.makeSuite(UserTests)).wasSuccessful(): sys.exit(1) sys.exit(0) else: TestProgram(module=__name__, opts=subunitopts)
def run(self, **kwargs): """Run the test suite. It allows running any unittest.TestSuite and getting its execution status. By default, it runs the suite defined as instance attribute. It can be overriden by passing name as arg. It must conform with TestLoader.loadTestsFromName(). It sets the following attributes required to push the results to DB: * result, * start_time, * stop_time, * details. Args: kwargs: Arbitrary keyword arguments. Return: TestCase.EX_OK if any TestSuite has been run TestCase.EX_RUN_ERROR otherwise. """ try: name = kwargs["name"] try: self.suite = unittest.TestLoader().loadTestsFromName(name) except ImportError: self.__logger.error("Can not import %s", name) return testcase.TestCase.EX_RUN_ERROR except KeyError: pass try: assert self.suite self.start_time = time.time() if not os.path.isdir(self.res_dir): os.makedirs(self.res_dir) stream = BytesIO() result = SubunitTestRunner(stream=stream, verbosity=2).run(self.suite).decorated self.generate_stats(stream) self.generate_xunit(stream) with open(f'{self.res_dir}/subunit_stream', 'wb') as subfd: stream.seek(0) shutil.copyfileobj(stream, subfd) self.generate_html(f'{self.res_dir}/subunit_stream') self.stop_time = time.time() self.details = { "testsRun": result.testsRun, "failures": len(result.failures), "errors": len(result.errors) } self.result = 100 * ( (result.testsRun - (len(result.failures) + len(result.errors))) / result.testsRun) return testcase.TestCase.EX_OK except AssertionError: self.__logger.error("No suite is defined") return testcase.TestCase.EX_RUN_ERROR except ZeroDivisionError: self.__logger.error("No test has been run") return testcase.TestCase.EX_RUN_ERROR except Exception: # pylint: disable=broad-except self.__logger.exception("something wrong occurs") return testcase.TestCase.EX_RUN_ERROR