annotate tests/with_hg.py @ 197:6949fc164439 2.5

hgclient: look for an open server before closing it in ResponseError block At least some of the codepaths that can throw a ResponseError close the server first (the one in _readchannel does so in order to detect server startup failures, for example), so we have to verify we have a server to close before doing so, otherwise we can lose the ResponseError and the user sees an AttributeError when we try to use .close() on a NoneType.
author Augie Fackler <raf@durin42.com>
date Sun, 10 Dec 2017 12:52:37 -0500
parents f4f636ecca3e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
75
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
1 import os
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
2 from nose.plugins import Plugin
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
3
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
4 class WithHgPlugin(Plugin):
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
5 name = 'with-hg'
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
6 enabled = False
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
7
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
8 def options(self, parser, env):
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
9 Plugin.options(self, parser, env)
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
10 parser.add_option('--with-hg',
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
11 action='store',
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
12 type='string',
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
13 metavar='HG',
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
14 dest='with_hg',
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
15 help='test using specified hg script.')
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
16
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
17 def configure(self, options, conf):
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
18 Plugin.configure(self, options, conf)
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
19 if options.with_hg:
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
20 self.enabled = True
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
21 self.hgpath = os.path.realpath(options.with_hg)
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
22
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
23 def begin(self):
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
24 import hglib
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
25
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
26 p = hglib.util.popen([self.hgpath, 'version'])
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
27 p.communicate()
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
28
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
29 if p.returncode:
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
30 raise ValueError("custom hg %r doesn't look like Mercurial"
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
31 % self.hgpath)
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
32
f4f636ecca3e tests: add a nose plugin that allows specifying a custom hg to run tests
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
33 hglib.HGPATH = self.hgpath