view tests/test_svn_pre_commit_hooks.py @ 1011:cc774e975aed

commit: fix exception handling on transaction close On SVN 1.6 at least, a failing pre-commit hook appears to abort a commit transaction without us needing to do it manually. This is apparently managed by a callback at the end of SVN's internal commit callback chain. Subsequently trying to abort an already-aborted transaction results in a spurious "Transaction cleanup failed" message that breaks tests. To fix this, we simply move the commit call out of try/except block.
author Matt Mackall <mpm@selenic.com>
date Thu, 23 May 2013 19:23:02 -0500
parents cf53cfaaa050
children d741f536f23a
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)

def suite():
    return unittest.findTestCases(sys.modules[__name__])