/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

  • Committer: Martin Pool
  • Date: 2010-04-28 07:03:38 UTC
  • mfrom: (5188 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5189.
  • Revision ID: mbp@sourcefrog.net-20100428070338-2af8y3takgfkrkyp
merge news

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
 
17
"""Testing framework extensions"""
17
18
 
18
19
# TODO: Perhaps there should be an API to find out if bzr running under the
19
20
# test suite -- some plugins might want to avoid making intrusive changes if
489
490
        return self._shortened_test_description(test)
490
491
 
491
492
    def report_error(self, test, err):
492
 
        self.ui.note('ERROR: %s\n    %s\n' % (
 
493
        self.stream.write('ERROR: %s\n    %s\n' % (
493
494
            self._test_description(test),
494
495
            err[1],
495
496
            ))
496
497
 
497
498
    def report_failure(self, test, err):
498
 
        self.ui.note('FAIL: %s\n    %s\n' % (
 
499
        self.stream.write('FAIL: %s\n    %s\n' % (
499
500
            self._test_description(test),
500
501
            err[1],
501
502
            ))
1312
1313
            f.close()
1313
1314
        self.assertEqualDiff(content, s)
1314
1315
 
 
1316
    def assertDocstring(self, expected_docstring, obj):
 
1317
        """Fail if obj does not have expected_docstring"""
 
1318
        if __doc__ is None:
 
1319
            # With -OO the docstring should be None instead
 
1320
            self.assertIs(obj.__doc__, None)
 
1321
        else:
 
1322
            self.assertEqual(expected_docstring, obj.__doc__)
 
1323
 
1315
1324
    def failUnlessExists(self, path):
1316
1325
        """Fail unless path or paths, which may be abs or relative, exist."""
1317
1326
        if not isinstance(path, basestring):
3192
3201
    return result
3193
3202
 
3194
3203
 
 
3204
def workaround_zealous_crypto_random():
 
3205
    """Crypto.Random want to help us being secure, but we don't care here.
 
3206
 
 
3207
    This workaround some test failure related to the sftp server. Once paramiko
 
3208
    stop using the controversial API in Crypto.Random, we may get rid of it.
 
3209
    """
 
3210
    try:
 
3211
        from Crypto.Random import atfork
 
3212
        atfork()
 
3213
    except ImportError:
 
3214
        pass
 
3215
 
 
3216
 
3195
3217
def fork_for_tests(suite):
3196
3218
    """Take suite and start up one runner per CPU by forking()
3197
3219
 
3212
3234
            try:
3213
3235
                ProtocolTestCase.run(self, result)
3214
3236
            finally:
3215
 
                os.waitpid(self.pid, os.WNOHANG)
 
3237
                os.waitpid(self.pid, 0)
3216
3238
 
3217
3239
    test_blocks = partition_tests(suite, concurrency)
3218
3240
    for process_tests in test_blocks:
3221
3243
        c2pread, c2pwrite = os.pipe()
3222
3244
        pid = os.fork()
3223
3245
        if pid == 0:
 
3246
            workaround_zealous_crypto_random()
3224
3247
            try:
3225
3248
                os.close(c2pread)
3226
3249
                # Leave stderr and stdout open so we can see test noise
3796
3819
 
3797
3820
 
3798
3821
def _test_suite_modules_to_doctest():
3799
 
    """Return the list of modules to doctest."""   
 
3822
    """Return the list of modules to doctest."""
 
3823
    if __doc__ is None:
 
3824
        # GZ 2009-03-31: No docstrings with -OO so there's nothing to doctest
 
3825
        return []
3800
3826
    return [
3801
3827
        'bzrlib',
3802
3828
        'bzrlib.branchbuilder',
4435
4461
            return result
4436
4462
except ImportError:
4437
4463
    pass
 
4464
 
 
4465
class _PosixPermissionsFeature(Feature):
 
4466
 
 
4467
    def _probe(self):
 
4468
        def has_perms():
 
4469
            # create temporary file and check if specified perms are maintained.
 
4470
            import tempfile
 
4471
 
 
4472
            write_perms = stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
 
4473
            f = tempfile.mkstemp(prefix='bzr_perms_chk_')
 
4474
            fd, name = f
 
4475
            os.close(fd)
 
4476
            os.chmod(name, write_perms)
 
4477
 
 
4478
            read_perms = os.stat(name).st_mode & 0777
 
4479
            os.unlink(name)
 
4480
            return (write_perms == read_perms)
 
4481
 
 
4482
        return (os.name == 'posix') and has_perms()
 
4483
 
 
4484
    def feature_name(self):
 
4485
        return 'POSIX permissions support'
 
4486
 
 
4487
posix_permissions_feature = _PosixPermissionsFeature()