Mercurial > public > mercurial-scm > python-hglib
view tests/common.py @ 122:e05b0cf920bb
client: implement the 'in' keyword for a client object
Check if a revision number or a changeset hex matches a changeset in the client
repository. The internal tries to create a ctx object. Returns False If the ctx
creation fails.
This patch also adds the corresponding tests.
author | Paul Tonelli <paul.tonelli@logilab.fr> |
---|---|
date | Wed, 30 Apr 2014 16:44:59 +0200 |
parents | d1a42c1d0b61 |
children | 1b47146a4a2c |
line wrap: on
line source
import os, sys, tempfile, shutil import unittest import hglib from hglib import client def resultappender(list): def decorator(f): def decorated(*args, **kwargs): list.append(args[0]) return f(*args, **kwargs) return decorated return decorator class basetest(unittest.TestCase): def setUp(self): self._testtmp = os.environ["TESTTMP"] = os.environ["HOME"] = \ os.path.join(os.environ["HGTMP"], self.__class__.__name__) self.clients = [] self._oldopen = hglib.client.hgclient.open # hglib.open = resultappender(self.clients)(hglib.open) hglib.client.hgclient.open = resultappender(self.clients)(hglib.client.hgclient.open) os.mkdir(self._testtmp) os.chdir(self._testtmp) # until we can run norepo commands in the cmdserver os.system('hg init') self.client = hglib.open() def tearDown(self): # on Windows we cannot rmtree before closing all instances because of used # files hglib.client.hgclient.open = self._oldopen for client in self.clients: if client.server is not None: client.close() os.chdir('..') try: shutil.rmtree(self._testtmp) except AttributeError: pass # if our setUp was overriden def append(self, path, *args): f = open(path, 'ab') for a in args: f.write(str(a)) f.close()