~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_transport.py

  • Committer: Martin Pool
  • Date: 2009-08-14 12:08:08 UTC
  • mto: This revision was merged to the branch mainline in revision 4614.
  • Revision ID: mbp@sourcefrog.net-20090814120808-4gvx7fhg44z29cj3
Use platform(aliased=1)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2004, 2005, 2006, 2007 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
52
52
    TestNotApplicable,
53
53
    multiply_tests,
54
54
    )
55
 
from bzrlib.tests import test_server
56
55
from bzrlib.tests.test_transport import TestTransportImplementation
57
56
from bzrlib.transport import (
58
57
    ConnectedTransport,
80
79
            permutations = get_transport_test_permutations(
81
80
                reduce(getattr, (module).split('.')[1:], __import__(module)))
82
81
            for (klass, server_factory) in permutations:
83
 
                scenario = ('%s,%s' % (klass.__name__, server_factory.__name__),
 
82
                scenario = (server_factory.__name__,
84
83
                    {"transport_class":klass,
85
84
                     "transport_server":server_factory})
86
85
                result.append(scenario)
171
170
        self.assertEqual(True, t.has_any(['b', 'b', 'b']))
172
171
 
173
172
    def test_has_root_works(self):
174
 
        if self.transport_server is test_server.SmartTCPServer_for_testing:
 
173
        from bzrlib.smart import server
 
174
        if self.transport_server is server.SmartTCPServer_for_testing:
175
175
            raise TestNotApplicable(
176
176
                "SmartTCPServer_for_testing intentionally does not allow "
177
177
                "access to /.")
1083
1083
        subdir.stat('./file')
1084
1084
        subdir.stat('.')
1085
1085
 
1086
 
    def test_hardlink(self):
1087
 
        from stat import ST_NLINK
1088
 
 
1089
 
        t = self.get_transport()
1090
 
 
1091
 
        source_name = "original_target"
1092
 
        link_name = "target_link"
1093
 
 
1094
 
        self.build_tree([source_name], transport=t)
1095
 
 
1096
 
        try:
1097
 
            t.hardlink(source_name, link_name)
1098
 
 
1099
 
            self.failUnless(t.has(source_name))
1100
 
            self.failUnless(t.has(link_name))
1101
 
 
1102
 
            st = t.stat(link_name)
1103
 
            self.failUnlessEqual(st[ST_NLINK], 2)
1104
 
        except TransportNotPossible:
1105
 
            raise TestSkipped("Transport %s does not support hardlinks." %
1106
 
                              self._server.__class__)
1107
 
 
1108
 
    def test_symlink(self):
1109
 
        from stat import S_ISLNK
1110
 
 
1111
 
        t = self.get_transport()
1112
 
 
1113
 
        source_name = "original_target"
1114
 
        link_name = "target_link"
1115
 
 
1116
 
        self.build_tree([source_name], transport=t)
1117
 
 
1118
 
        try:
1119
 
            t.symlink(source_name, link_name)
1120
 
 
1121
 
            self.failUnless(t.has(source_name))
1122
 
            self.failUnless(t.has(link_name))
1123
 
 
1124
 
            st = t.stat(link_name)
1125
 
            self.failUnless(S_ISLNK(st.st_mode))
1126
 
        except TransportNotPossible:
1127
 
            raise TestSkipped("Transport %s does not support symlinks." %
1128
 
                              self._server.__class__)
1129
 
        except IOError:
1130
 
            raise tests.KnownFailure("Paramiko fails to create symlinks during tests")
1131
 
 
1132
1086
    def test_list_dir(self):
1133
1087
        # TODO: Test list_dir, just try once, and if it throws, stop testing
1134
1088
        t = self.get_transport()
1543
1497
                 u'\u65e5', # Kanji person
1544
1498
                ]
1545
1499
 
1546
 
        no_unicode_support = getattr(self._server, 'no_unicode_support', False)
1547
 
        if no_unicode_support:
1548
 
            raise tests.KnownFailure("test server cannot handle unicode paths")
1549
 
 
1550
1500
        try:
1551
1501
            self.build_tree(files, transport=t, line_endings='binary')
1552
1502
        except UnicodeError: