Rev 52: Make test pass even if kerberos is not available. in file:///net/bigmamac/Volumes/home/vila/.bazaar/plugins/local_test_server/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Fri Feb 20 15:20:05 GMT 2009
At file:///net/bigmamac/Volumes/home/vila/.bazaar/plugins/local_test_server/
------------------------------------------------------------
revno: 52
revision-id: v.ladeuil+lp at free.fr-20090220152004-h64ikv1stmq5bmzx
parent: v.ladeuil+lp at free.fr-20090220143505-lvmblqzl569358ah
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: local_test_server
timestamp: Fri 2009-02-20 16:20:04 +0100
message:
Make test pass even if kerberos is not available.
* tests/test_utils.py:
(TestLocalServer._get_server): Push install verification into a
server method.
* test_server.py:
(LocalTestServerFeature._probe): The server can't be running if
it's not installed.
(get_test_permutations): Put kerberos import in server.py since
it's needed there too.
* server.py:
(Server.is_installed): Start implementing installation
verification.
(Apache2Kerberos.is_installed): Requires kerberos in addition to
apache2.
-------------- next part --------------
=== modified file 'server.py'
--- a/server.py 2009-02-17 15:10:08 +0000
+++ b/server.py 2009-02-20 15:20:04 +0000
@@ -18,6 +18,12 @@
The classes described here provide an interface with the real servers.
"""
+try:
+ import kerberos
+ has_kerberos = True
+except ImportError:
+ has_kerberos = False
+
from bzrlib.lazy_import import lazy_import
lazy_import(globals(), """
import errno
@@ -134,6 +140,19 @@
config.values.update(host=self.host, port=self.port)
self.config = config
+ def is_installed(self):
+ """Is the server installed.
+
+ This should be redefined by daughter classes. They should check that
+ trying to start the server will not fail in horrible ways. This
+ includes checking that the needed commands are available at least.
+ """
+ installed = True
+ if (self._server_command_name is not None
+ and locate_program(self._server_command_name) is None):
+ installed = False
+ return installed
+
def start(self):
if self.is_running():
raise LTSAlreadyRunningError(self)
@@ -288,6 +307,7 @@
sig = signal.SIGTERM
if kill is None:
kill = self._kill_server
+
if interval is None:
interval = 500.0
def server_is_dead():
@@ -495,6 +515,11 @@
super(Apache2Kerberos, self).__init__(port, _conf=_conf)
self.output_config_path = self.config.abspath('etc/apache2-krb5.conf')
+ def is_installed(self):
+ if not has_kerberos: # FIXME: incomplete but enough for now
+ return False
+ return super(Apache2Kerberos, self).is_installed()
+
class Cherokee(Server):
@@ -673,8 +698,8 @@
This function returns an available port in a range chosen in unassigned
ones as described in http://www.iana.org/assignments/port-numbers
"""
- # FIXME: Yeah, that's nice, but is the url above really implemented where
- # *we* run ?
+ # FIXME: Yeah, that's nice, but is the url above really implemented by the
+ # OSes we want to support...
global _next_available_port
global _max_available_port
port = _next_available_port
=== modified file 'test_server.py'
--- a/test_server.py 2009-02-17 16:47:04 +0000
+++ b/test_server.py 2009-02-20 15:20:04 +0000
@@ -57,7 +57,7 @@
return self._server_name
def _probe(self):
- return self.server.is_running()
+ return self.server.is_installed() and self.server.is_running()
class Apache2Feature(LocalTestServerFeature):
@@ -84,6 +84,11 @@
_server_name = 'apache2-krb5'
+ def _probe(self):
+ if not server.has_kerberos:
+ return False
+ return super(Apache2KerberosFeature, self)._probe()
+
class CherokeeFeature(LocalTestServerFeature):
@@ -346,12 +351,6 @@
except errors.DependencyNotPresent:
webdav_present = False
- try:
- import kerberos
- kerberos_present = True
- except ImportError:
- kerberos_present = False
-
permutations = []
if Apache2Feature().available():
permutations.append((HttpTransport_urllib, Apache2_urllib))
@@ -384,9 +383,9 @@
if LighttpdDAVFeature().available():
permutations.append((webdav.HttpDavTransport, LighttpdDAV))
- if kerberos_present:
- if Apache2KerberosFeature().available():
- permutations.append((HttpTransport_urllib, Apache2Kerberos))
+ if Apache2KerberosFeature().available():
+ # FIXME: pycurl support missing
+ permutations.append((HttpTransport_urllib, Apache2Kerberos))
# if VsftpdFeature().available():
# permutations.append((FtpTransport, Vsftpd))
=== modified file 'tests/test_utils.py'
--- a/tests/test_utils.py 2009-02-17 15:10:08 +0000
+++ b/tests/test_utils.py 2009-02-20 15:20:04 +0000
@@ -58,14 +58,11 @@
def _get_server(self):
klass = self._server_class
- if klass._server_command_name is not None:
- if server.locate_program(klass._server_command_name) is None:
- # Don't even try to start the server if its associated command
- # can't be found.
- # FIXME: we should handle that as part as installation
- # verification.
- raise tests.UnavailableFeature(klass)
- return klass(server._get_available_port(), self._get_config())
+ s = klass(server._get_available_port(), self._get_config())
+ if not s.is_installed():
+ # Don't even try to start the server if it's not installed
+ raise tests.UnavailableFeature(s.get_config_value('server_name'))
+ return s
class TestLocalTestServer(TestLocalServer):
More information about the bazaar-commits
mailing list