~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/ftp_server/__init__.py

Prepare test framework for pyftpdlib injection.

* bzrlib/tests/ftp_server/__init__.py:
Provide a single front-end for ftp test servers.

* bzrlib/tests/test_ftp_transport.py: 
Use ftp_server import.

* bzrlib/transport/ftp/__init__.py:
(get_test_permutations): Simplified.

* bzrlib/tests/__init__.py:
(FTPServerFeature): Moved to bzrlib/tests/ftp_server/__init__.py.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2009 Canonical Ltd
 
2
#
 
3
# This program is free software; you can redistribute it and/or modify
 
4
# it under the terms of the GNU General Public License as published by
 
5
# the Free Software Foundation; either version 2 of the License, or
 
6
# (at your option) any later version.
 
7
#
 
8
# This program is distributed in the hope that it will be useful,
 
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
11
# GNU General Public License for more details.
 
12
#
 
13
# You should have received a copy of the GNU General Public License
 
14
# along with this program; if not, write to the Free Software
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
16
"""
 
17
Facilities to use ftp test servers.
 
18
"""
 
19
 
 
20
from bzrlib import tests
 
21
 
 
22
 
 
23
try:
 
24
    from bzrlib.tests.ftp_server import medusa_based
 
25
    medusa_available = True
 
26
except ImportError:
 
27
    medusa_available = False
 
28
 
 
29
 
 
30
class _FTPServerFeature(tests.Feature):
 
31
    """Some tests want an FTP Server, check if one is available.
 
32
 
 
33
    Right now, the only way this is available is if 'medusa' is installed.
 
34
    http://www.amk.ca/python/code/medusa.html
 
35
    """
 
36
 
 
37
    def _probe(self):
 
38
        return medusa_available
 
39
 
 
40
    def feature_name(self):
 
41
        return 'FTPServer'
 
42
 
 
43
 
 
44
FTPServerFeature = _FTPServerFeature()
 
45
 
 
46
 
 
47
class UnavailableFTPServer(object):
 
48
    """Dummy ftp test server.
 
49
 
 
50
    
 
51
    This allows the test suite report the number of tests needing that
 
52
    feature. We raise UnavailableFeature from methods before the test server is
 
53
    being used. Doing so in the setUp method has bad side-effects (tearDown is
 
54
    never called).
 
55
    """
 
56
 
 
57
    def setUp(self, vfs_server=None):
 
58
        pass
 
59
 
 
60
    def tearDown(self):
 
61
        pass
 
62
 
 
63
    def get_url(self):
 
64
        raise tests.UnavailableFeature(FTPServerFeature)
 
65
 
 
66
    def get_bogus_url(self):
 
67
        raise tests.UnavailableFeature(FTPServerFeature)
 
68
 
 
69
 
 
70
if medusa_available:
 
71
    FTPServer = medusa_based.FTPServer
 
72
else:
 
73
    FTPServer = UnavailableFTPServer