# -*- coding: utf-8 -*- import os.path import signal import os import json from dogtail.procedural import run import sys class BaseTest(object): def __init__(self,rel_path,language=None): self.rel_path = os.path.join(rel_path,self.__class__.__name__) self.path = os.path.join ('/var/lib/lliurex-test-suite',rel_path,self.__class__.__name__) self.error_path = os.path.join(self.path,'error.log') self.pid = 0 if not os.path.exists(self.path): os.makedirs(self.path) self.context = {} self.language = language if language != None: self.__change_language_context(self.language) def write_result(self,test_name,result,status,link_name=None): output = open(os.path.join(self.path,"__results"),'a') if link_name != None: test_name = '%(test_name)s' %{'link_name':os.path.join(self.rel_path,link_name),'test_name':test_name} output.write('' + test_name + ''+result+'\n') output.close() def write_description(self,link_name,text): output = open(os.path.join(self.path,link_name),'w') output.write(text) output.close() def run(self,command): if self.pid == 0: self.pid = run(command) return True return False def close(self): os.kill(self.pid,signal.SIGTERM) def __change_language_context(self,language): try: f = open(os.path.join(os.path.dirname(sys.modules[self.__class__.__module__].__file__),'context_'+self.__class__.__name__,language),'r') except Exception as e: f = open(self.error_path,'a') f.write(" ".join(dir(e))) f.write(e.strerror) f.close() raise e self.context = json.load(f) f.close()