Mercurial > hgsubversion
view tests/test_svn_pre_commit_hooks.py @ 1457:019c3e194fba
tests: optimise creating repositories and loading dumps
Previously, we'd use svnadmin for creating repositories and loading
dumps. That tends to be a bit slow, as it forks a new process and
loads the Subversion libraries into it. Instead, we extend our
existing Subversion wrappers and load the dumps using the API.
This is a noticable speedup. The only downside is that we rely on
Subversion and Subvertpy to correctly close all file descriptors; an
assumption which hasn't always held in the past.
I ran some benchmarks on my relatively slow Mac with $TMPDIR on a
ramdisk, and they showed a significant change:
I compared ten runs of each with Subvertpy:
min: -18.8% (299.1s -> 243.0s)
median: -20.0% (307.1s -> 245.6s)
...and three runs of each with SWIG:
min: -22.8% (368.7s -> 284.7s)
median: -25.7% (384.4s -> 285.5s)
(Since the timing measures wall clock time, the minimum time is likely
to be the most accurate and useful measurement.)
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Tue, 07 Jun 2016 09:15:53 +0200 |
parents | d741f536f23a |
children | cff81f35b31e |
line wrap: on
line source
import os import sys import test_util import unittest from mercurial import hg from mercurial import commands from mercurial import util class TestSvnPreCommitHooks(test_util.TestBase): def setUp(self): super(TestSvnPreCommitHooks, self).setUp() self.repo_path = self.load_and_fetch('single_rev.svndump')[1] # creating pre-commit hook that doesn't allow any commit hook_file_name = os.path.join( self.repo_path, 'hooks', 'pre-commit' ) hook_file = open(hook_file_name, 'w') hook_file.write( '#!/bin/sh\n' 'echo "Commits are not allowed" >&2; exit 1;\n' ) hook_file.close() os.chmod(hook_file_name, 0755) def test_push_with_pre_commit_hooks(self): changes = [('narf/a', 'narf/a', 'ohai',), ] self.commitchanges(changes) self.assertRaises(util.Abort, self.pushrevisions)