示例#1
0
文件: testtar.py 项目: ogbash/doug
	def startTest(self, test):
		unittest.TestResult.startTest(self, test)
		test.acquire()
		self.testConf = DOUGConfigParser()
		self.testConf.add_section("test")
		self.testConf.set("test", "name", test.testname)
		self.testConf.set("test", "starttime", str(time.time()))
		self.testDir = self._newTarDirectory()
示例#2
0
文件: testtar.py 项目: ogbash/doug
	def __init__(self, tarfname, conf):
		unittest.TestResult.__init__(self)
		self.tarFileName = tarfname
		self.conf = DOUGConfigParser()
		self.conf.addConfig(conf)
		self.conf.add_section("testrun")
		self.testCount = 0
		self.tarFile = tarfile.open(self.tarFileName, "w")
		self.testDir = None
示例#3
0
文件: testtar.py 项目: ogbash/doug
class DougTarTestResult(unittest.TestResult):
	"""Tars DOUG test results into one file."""
	
	def __init__(self, tarfname, conf):
		unittest.TestResult.__init__(self)
		self.tarFileName = tarfname
		self.conf = DOUGConfigParser()
		self.conf.addConfig(conf)
		self.conf.add_section("testrun")
		self.testCount = 0
		self.tarFile = tarfile.open(self.tarFileName, "w")
		self.testDir = None

	def _addConf(self):
		conf = self.conf
		content = StringIO()
		conf.write(content)
		content.seek(0)
		self._addFileGlobal(GLOBAL_CONF, "Configuration for all tests", fd=content)

	def _addTestConf(self):
		conf = self.testConf
		content = StringIO()
		conf.write(content)
		content.seek(0)
		self._addFile(TEST_CONF, "Configuration for the test", fd=content)

	def startTest(self, test):
		unittest.TestResult.startTest(self, test)
		test.acquire()
		self.testConf = DOUGConfigParser()
		self.testConf.add_section("test")
		self.testConf.set("test", "name", test.testname)
		self.testConf.set("test", "starttime", str(time.time()))
		self.testDir = self._newTarDirectory()

	def stopTest(self, test):
		unittest.TestResult.stopTest(self, test)
		self.testConf.set("test", "stoptime", str(time.time()))
		self.testConf.addConfig(test.dougExecution.config)
		self._addTestConf()
		test.free()
		self.testDir = None

	def addError(self, test, err):
		unittest.TestResult.addError(self, test, err)
		errtp, errval, errtb = err
		self._addFiles(test.files)
		self._addResult(test, 'error')
		self._addException(test, errval)

	def addFailure(self, test, err):
		unittest.TestResult.addFailure(self, test, err)
		errtp, errval, errtb = err
		self._addFiles(test.files)
		self._addResult(test, 'failure')
		self._addException(test, errval)

	def addSuccess(self, test):
		unittest.TestResult.addSuccess(self, test)
		self._addFiles(test.files)
		self._addResult(test, 'success')

	def _addResult(self, test, status):
		test.resultConfig.set('doug-result', 'status', status)

		content = StringIO()
		test.resultConfig.write(content)
		content.seek(0)
		self._addFile(RESULT_CONF, "Results of the test execution.", fd=content)

	def _addException(self, test, err):
		content = StringIO()
		pickle.dump(err, content)
		content.seek(0)
		self._addFile(EXCEPTION_FILE, "Exception", fd=content)

	def startTestRun(self, test):
		# python <2.7 does not have it
		#unittest.TestResult.startTestRun(self)
		self.conf.set("testrun", "starttime", str(time.time()))

	def stopTestRun(self, test):
		# python <2.7 does not have it
		#unittest.TestResult.stopTestRun(self)
		self.conf.set("testrun", "stoptime", str(time.time()))
		self._addConf()

	def close(self):
		self.tarFile.close()

	def _newTarDirectory(self):
		import time
		dirName = "%04d" % self.testCount
		self.testCount += 1
		try:
			testDir = self.tarFile.getmember(dirName)
		except KeyError:
			testDir = tarfile.TarInfo(dirName)
			testDir.type = tarfile.DIRTYPE
			testDir.mode = 0755
			testDir.mtime = time.time()
			self.tarFile.addfile(testDir)
		return testDir

	def _addFiles(self, files):
		"Add files from the test directory, where each file is its name and description."
		d = self.testDir
		for fname, descr in files:
			self._addFile(fname, descr)

	def _addFile(self, fname, descr, fd=None):
		LOG.debug("Adding file %s to tar test" % fname)
		d = self.testDir
		arcname = os.path.join(d.name, os.path.basename(fname))
		self._tarAddFile(arcname, fname, fd)

	def _addFileGlobal(self, fname, descr, fd=None):
		LOG.debug("Adding file %s to tar" % fname)
		arcname = os.path.basename(fname)
		self._tarAddFile(arcname, fname, fd)

	def _tarAddFile(self, arcname, fname=None, fd=None):
		if fd is None:
			self.tarFile.add(fname, arcname)
		else:
			tarinfo = tarfile.TarInfo(name=arcname)
			tarinfo.mtime = int(time.time())
			tarinfo.size = len(fd.getvalue())
			self.tarFile.addfile(tarinfo, fd)