def pytest_sessionfinish(session): if not option.restart and option.save_log: print('Path to unit.log:\n' + Log.get_path() + '\n') option.restart = True unit_stop() shutil.rmtree(option.cache_dir)
def pytest_sessionstart(session): option.available = {'modules': {}, 'features': {}} unit = unit_run() # read unit.log for i in range(50): with open(Log.get_path(), 'r') as f: log = f.read() m = re.search('controller started', log) if m is None: time.sleep(0.1) else: break if m is None: _print_log(log) exit("Unit is writing log too long") # discover available modules from unit.log for module in re.findall(r'module: ([a-zA-Z]+) (.*) ".*"$', log, re.M): versions = option.available['modules'].setdefault(module[0], []) if module[1] not in versions: versions.append(module[1]) # discover modules from check option.available['modules']['openssl'] = check_openssl(unit['unitd']) option.available['modules']['go'] = check_go(option.current_dir, unit['temp_dir'], option.test_dir) option.available['modules']['node'] = check_node(option.current_dir) option.available['modules']['regex'] = check_regex(unit['unitd']) # remove None values option.available['modules'] = { k: v for k, v in option.available['modules'].items() if v is not None } check_chroot() check_isolation() _clear_conf(unit['temp_dir'] + '/control.unit.sock') unit_stop() _check_alerts() if option.restart: shutil.rmtree(unit_instance['temp_dir'])
def _print_log(log=None): path = Log.get_path() print('Path to unit.log:\n' + path + '\n') if option.print_log: os.set_blocking(sys.stdout.fileno(), True) sys.stdout.flush() if log is None: with open(path, 'r', encoding='utf-8', errors='ignore') as f: shutil.copyfileobj(f, sys.stdout) else: sys.stdout.write(log)