/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2005 Canonical Ltd
1185.33.72 by Martin Pool
Fix commit message template for non-ascii files, and add test for handling of
2
#
3
# This program is free software; you can redistribute it and/or modify
2052.3.1 by John Arbash Meinel
Add tests to cleanup the copyright of all source files
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.
1185.33.72 by Martin Pool
Fix commit message template for non-ascii files, and add test for handling of
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
"""Test commit message editor.
18
"""
19
20
import os
21
import sys
22
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
23
from bzrlib import (
3642.2.2 by Jelmer Vernooij
Add tests for commit_message_template hooks.
24
    commit,
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
25
    errors,
26
    msgeditor,
27
    osutils,
3477.1.1 by John Arbash Meinel
Move UnicodeFeature into a core 'tests' feature, rather than living in test_diff.
28
    tests,
3910.1.1 by Andrew Bennetts
Improve error handling in msgeditor._run_editor.
29
    trace,
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
30
    )
1185.33.72 by Martin Pool
Fix commit message template for non-ascii files, and add test for handling of
31
from bzrlib.branch import Branch
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
32
from bzrlib.config import ensure_config_dir_exists, config_filename
2598.6.24 by ghigo
update on the basis of Aaron suggestions
33
from bzrlib.msgeditor import (
34
    make_commit_message_template_encoded,
2598.6.27 by ghigo
small cleanup (line lenght)
35
    edit_commit_message_encoded
2598.6.24 by ghigo
update on the basis of Aaron suggestions
36
)
2804.4.1 by Alexander Belchenko
some win32-specific fixes for selftest
37
from bzrlib.tests import (
2921.6.14 by Robert Collins
Push the message editor test parameterisation down into the message editor
38
    iter_suite_tests,
2839.6.2 by Alexander Belchenko
changes after Martin's review
39
    probe_bad_non_ascii,
2921.6.14 by Robert Collins
Push the message editor test parameterisation down into the message editor
40
    split_suite_by_re,
2804.4.1 by Alexander Belchenko
some win32-specific fixes for selftest
41
    TestCaseWithTransport,
3004.1.8 by Daniel Watkins
Changed TestSkipped to TestNotApplicable as suggested by Aaron.
42
    TestNotApplicable,
2804.4.1 by Alexander Belchenko
some win32-specific fixes for selftest
43
    TestSkipped,
44
    )
2921.6.14 by Robert Collins
Push the message editor test parameterisation down into the message editor
45
from bzrlib.tests.EncodingAdapter import EncodingTestAdapter
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
46
from bzrlib.trace import mutter
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
47
2592.3.164 by Robert Collins
Reduce spurious differences to bzr.dev from merge mishaps.
48
2921.6.14 by Robert Collins
Push the message editor test parameterisation down into the message editor
49
def load_tests(standard_tests, module, loader):
3128.1.3 by Vincent Ladeuil
Since we are there s/parameteris.*/parameteriz&/.
50
    """Parameterize the test for tempfile creation with different encodings."""
2921.6.14 by Robert Collins
Push the message editor test parameterisation down into the message editor
51
    to_adapt, result = split_suite_by_re(standard_tests,
52
        "test__create_temp_file_with_commit_template_in_unicode_dir")
53
    for test in iter_suite_tests(to_adapt):
54
        result.addTests(EncodingTestAdapter().adapt(test))
55
    return result
56
57
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
58
class MsgEditorTest(TestCaseWithTransport):
1185.33.72 by Martin Pool
Fix commit message template for non-ascii files, and add test for handling of
59
1526.1.4 by Robert Collins
forgot my self.
60
    def make_uncommitted_tree(self):
1526.1.1 by Robert Collins
Run the test suite with no locale as well as the default locale. Also add a test for build_tree_shape to selftest.
61
        """Build a branch with uncommitted unicode named changes in the cwd."""
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
62
        working_tree = self.make_branch_and_tree('.')
63
        b = working_tree.branch
1526.1.1 by Robert Collins
Run the test suite with no locale as well as the default locale. Also add a test for build_tree_shape to selftest.
64
        filename = u'hell\u00d8'
1526.1.3 by Robert Collins
Merge from upstream.
65
        try:
66
            self.build_tree_contents([(filename, 'contents of hello')])
67
        except UnicodeEncodeError:
68
            raise TestSkipped("can't build unicode working tree in "
1185.33.97 by Martin Pool
MsgEditor tests should be skipped on platforms without unicode fs.
69
                "filesystem encoding %s" % sys.getfilesystemencoding())
1526.1.1 by Robert Collins
Run the test suite with no locale as well as the default locale. Also add a test for build_tree_shape to selftest.
70
        working_tree.add(filename)
71
        return working_tree
72
    
1185.33.72 by Martin Pool
Fix commit message template for non-ascii files, and add test for handling of
73
    def test_commit_template(self):
74
        """Test building a commit message template"""
1526.1.2 by Robert Collins
Fix typo in my msgeditor test changes.
75
        working_tree = self.make_uncommitted_tree()
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
76
        template = msgeditor.make_commit_message_template(working_tree,
2598.6.24 by ghigo
update on the basis of Aaron suggestions
77
                                                                 None)
2598.6.18 by ghigo
Update the tests to the new *_encoded() functions
78
        self.assertEqualDiff(template,
79
u"""\
80
added:
81
  hell\u00d8
82
""")
83
84
    def test_commit_template_encoded(self):
85
        """Test building a commit message template"""
86
        working_tree = self.make_uncommitted_tree()
2598.6.24 by ghigo
update on the basis of Aaron suggestions
87
        template = make_commit_message_template_encoded(working_tree,
88
                                                        None,
89
                                                        output_encoding='utf8')
1185.33.72 by Martin Pool
Fix commit message template for non-ascii files, and add test for handling of
90
        self.assertEqualDiff(template,
91
u"""\
92
added:
93
  hell\u00d8
2598.6.14 by ghigo
Update the test
94
""".encode("utf8"))
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
95
2598.6.18 by ghigo
Update the tests to the new *_encoded() functions
96
2598.6.2 by ghigo
Add testcase
97
    def test_commit_template_and_diff(self):
98
        """Test building a commit message template"""
99
        working_tree = self.make_uncommitted_tree()
2598.6.24 by ghigo
update on the basis of Aaron suggestions
100
        template = make_commit_message_template_encoded(working_tree,
101
                                                        None,
102
                                                        diff=True,
103
                                                        output_encoding='utf8')
2598.6.2 by ghigo
Add testcase
104
2598.6.10 by ghigo
In the commit dialog, the diff is stored as 8-bit raw data
105
        self.assertTrue("""\
2598.6.2 by ghigo
Add testcase
106
@@ -0,0 +1,1 @@
107
+contents of hello
2598.6.14 by ghigo
Update the test
108
""" in template)
2598.6.3 by ghigo
Add test case
109
        self.assertTrue(u"""\
110
added:
111
  hell\u00d8
2598.6.14 by ghigo
Update the test
112
""".encode('utf8') in template)
2598.6.2 by ghigo
Add testcase
113
3910.1.1 by Andrew Bennetts
Improve error handling in msgeditor._run_editor.
114
    def make_do_nothing_editor(self):
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
115
        if sys.platform == "win32":
116
            f = file('fed.bat', 'w')
117
            f.write('@rem dummy fed')
118
            f.close()
3910.1.1 by Andrew Bennetts
Improve error handling in msgeditor._run_editor.
119
            return 'fed.bat'
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
120
        else:
121
            f = file('fed.sh', 'wb')
122
            f.write('#!/bin/sh\n')
123
            f.close()
124
            os.chmod('fed.sh', 0755)
3910.1.1 by Andrew Bennetts
Improve error handling in msgeditor._run_editor.
125
            return './fed.sh'
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
126
3910.1.1 by Andrew Bennetts
Improve error handling in msgeditor._run_editor.
127
    def test_run_editor(self):
128
        os.environ['BZR_EDITOR'] = self.make_do_nothing_editor()
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
129
        self.assertEqual(True, msgeditor._run_editor(''),
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
130
                         'Unable to run dummy fake editor')
131
2625.9.5 by Daniel Watkins
Modified test_msgeditor.make_fake_editor to allow a custom message to be inserted.
132
    def make_fake_editor(self, message='test message from fed\\n'):
2258.3.2 by James Westby
Allow an empty start message.
133
        """Set up environment so that an editor will be a known script.
134
135
        Sets up BZR_EDITOR so that if an editor is spawned it will run a
136
        script that just adds a known message to the start of the file.
137
        """
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
138
        f = file('fed.py', 'wb')
139
        f.write('#!%s\n' % sys.executable)
140
        f.write("""\
2625.9.5 by Daniel Watkins
Modified test_msgeditor.make_fake_editor to allow a custom message to be inserted.
141
# coding=utf-8
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
142
import sys
143
if len(sys.argv) == 2:
144
    fn = sys.argv[1]
145
    f = file(fn, 'rb')
146
    s = f.read()
147
    f.close()
148
    f = file(fn, 'wb')
2625.9.9 by Daniel Watkins
Used format string as suggested by abentley.
149
    f.write('%s')
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
150
    f.write(s)
151
    f.close()
2625.9.9 by Daniel Watkins
Used format string as suggested by abentley.
152
""" % (message, ))
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
153
        f.close()
154
        if sys.platform == "win32":
155
            # [win32] make batch file and set BZR_EDITOR
156
            f = file('fed.bat', 'w')
157
            f.write("""\
158
@echo off
1711.4.2 by jfmeinel
current python may be running in a path that has a space, so properly quote the python exe name. for test_msgeditor
159
"%s" fed.py %%1
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
160
""" % sys.executable)
161
            f.close()
162
            os.environ['BZR_EDITOR'] = 'fed.bat'
163
        else:
164
            # [non-win32] make python script executable and set BZR_EDITOR
165
            os.chmod('fed.py', 0755)
166
            os.environ['BZR_EDITOR'] = './fed.py'
167
2258.3.2 by James Westby
Allow an empty start message.
168
    def test_edit_commit_message(self):
169
        working_tree = self.make_uncommitted_tree()
170
        self.make_fake_editor()
171
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
172
        mutter('edit_commit_message without infotext')
173
        self.assertEqual('test message from fed\n',
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
174
                         msgeditor.edit_commit_message(''))
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
175
2804.4.1 by Alexander Belchenko
some win32-specific fixes for selftest
176
        mutter('edit_commit_message with ascii string infotext')
177
        self.assertEqual('test message from fed\n',
178
                         msgeditor.edit_commit_message('spam'))
179
1185.85.9 by John Arbash Meinel
[patch] Alexander Belchenko: test spawning a msg editor
180
        mutter('edit_commit_message with unicode infotext')
181
        self.assertEqual('test message from fed\n',
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
182
                         msgeditor.edit_commit_message(u'\u1234'))
2598.6.18 by ghigo
Update the tests to the new *_encoded() functions
183
2598.6.27 by ghigo
small cleanup (line lenght)
184
        tmpl = edit_commit_message_encoded(u'\u1234'.encode("utf8"))
185
        self.assertEqual('test message from fed\n', tmpl)
1185.85.14 by John Arbash Meinel
Change exception handling for msgeditor.py to only catch specific exceptions.
186
2258.3.2 by James Westby
Allow an empty start message.
187
    def test_start_message(self):
188
        self.make_uncommitted_tree()
189
        self.make_fake_editor()
2258.3.1 by James Westby
Add a way to specify a template commit message.
190
        self.assertEqual('test message from fed\nstart message\n',
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
191
                         msgeditor.edit_commit_message('',
2258.3.1 by James Westby
Add a way to specify a template commit message.
192
                                              start_message='start message\n'))
2258.3.2 by James Westby
Allow an empty start message.
193
        self.assertEqual('test message from fed\n',
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
194
                         msgeditor.edit_commit_message('',
2258.3.2 by James Westby
Allow an empty start message.
195
                                              start_message=''))
2258.3.1 by James Westby
Add a way to specify a template commit message.
196
1185.85.14 by John Arbash Meinel
Change exception handling for msgeditor.py to only catch specific exceptions.
197
    def test_deleted_commit_message(self):
198
        working_tree = self.make_uncommitted_tree()
199
200
        if sys.platform == 'win32':
1711.4.1 by John Arbash Meinel
del is not an executable program on win32, you must use cmd /c del
201
            os.environ['BZR_EDITOR'] = 'cmd.exe /c del'
1185.85.14 by John Arbash Meinel
Change exception handling for msgeditor.py to only catch specific exceptions.
202
        else:
203
            os.environ['BZR_EDITOR'] = 'rm'
204
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
205
        self.assertRaises((IOError, OSError), msgeditor.edit_commit_message, '')
1185.85.14 by John Arbash Meinel
Change exception handling for msgeditor.py to only catch specific exceptions.
206
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
207
    def test__get_editor(self):
208
        # Test that _get_editor can return a decent list of items
209
        bzr_editor = os.environ.get('BZR_EDITOR')
1668.4.1 by Olaf Conradi
Make msgeditor invocation comply with Debian Policy.
210
        visual = os.environ.get('VISUAL')
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
211
        editor = os.environ.get('EDITOR')
212
        try:
213
            os.environ['BZR_EDITOR'] = 'bzr_editor'
1668.4.1 by Olaf Conradi
Make msgeditor invocation comply with Debian Policy.
214
            os.environ['VISUAL'] = 'visual'
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
215
            os.environ['EDITOR'] = 'editor'
216
217
            ensure_config_dir_exists()
218
            f = open(config_filename(), 'wb')
219
            f.write('editor = config_editor\n')
220
            f.close()
221
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
222
            editors = list(msgeditor._get_editor())
3910.1.1 by Andrew Bennetts
Improve error handling in msgeditor._run_editor.
223
            editors = [editor for (editor, cfg_src) in editors]
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
224
1668.4.1 by Olaf Conradi
Make msgeditor invocation comply with Debian Policy.
225
            self.assertEqual(['bzr_editor', 'config_editor', 'visual',
226
                              'editor'], editors[:4])
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
227
228
            if sys.platform == 'win32':
1668.4.1 by Olaf Conradi
Make msgeditor invocation comply with Debian Policy.
229
                self.assertEqual(['wordpad.exe', 'notepad.exe'], editors[4:])
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
230
            else:
1668.4.1 by Olaf Conradi
Make msgeditor invocation comply with Debian Policy.
231
                self.assertEqual(['/usr/bin/editor', 'vi', 'pico', 'nano',
232
                                  'joe'], editors[4:])
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
233
234
        finally:
235
            # Restore the environment
236
            if bzr_editor is None:
237
                del os.environ['BZR_EDITOR']
238
            else:
239
                os.environ['BZR_EDITOR'] = bzr_editor
1668.4.1 by Olaf Conradi
Make msgeditor invocation comply with Debian Policy.
240
            if visual is None:
241
                del os.environ['VISUAL']
242
            else:
243
                os.environ['VISUAL'] = visual
1185.50.93 by John Arbash Meinel
Added a test for the new list of editors.
244
            if editor is None:
245
                del os.environ['EDITOR']
246
            else:
247
                os.environ['EDITOR'] = editor
2472.4.1 by Alexander Belchenko
Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added
248
3910.1.1 by Andrew Bennetts
Improve error handling in msgeditor._run_editor.
249
    def test__run_editor_EACCES(self):
250
        """If running a configured editor raises EACESS, the user is warned."""
251
        os.environ['BZR_EDITOR'] = 'eacces.py'
252
        f = file('eacces.py', 'wb')
253
        f.write('# Not a real editor')
254
        f.close()
255
        # Make the fake editor unreadable (and unexecutable)
256
        os.chmod('eacces.py', 0)
257
        # Set $EDITOR so that _run_editor will terminate before trying real
258
        # editors.
259
        os.environ['EDITOR'] = self.make_do_nothing_editor()
260
        # Call _run_editor, capturing mutter.warning calls.
261
        warnings = []
262
        def warning(*args):
263
            warnings.append(args[0] % args[1:])
264
        _warning = trace.warning
265
        trace.warning = warning
266
        try:
267
            msgeditor._run_editor('')
268
        finally:
269
            trace.warning = _warning
3910.1.3 by Andrew Bennetts
Tweak warning slightly.
270
        self.assertStartsWith(warnings[0], 'Could not start editor "eacces.py"')
3910.1.1 by Andrew Bennetts
Improve error handling in msgeditor._run_editor.
271
2472.4.1 by Alexander Belchenko
Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added
272
    def test__create_temp_file_with_commit_template(self):
273
        # check that commit template written properly
274
        # and has platform native line-endings (CRLF on win32)
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
275
        create_file = msgeditor._create_temp_file_with_commit_template
2472.4.2 by Alexander Belchenko
unwrapping long lines in tests
276
        msgfilename, hasinfo = create_file('infotext','----','start message')
2472.4.1 by Alexander Belchenko
Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added
277
        self.assertNotEqual(None, msgfilename)
278
        self.assertTrue(hasinfo)
2472.4.2 by Alexander Belchenko
unwrapping long lines in tests
279
        expected = os.linesep.join(['start message',
280
                                    '',
281
                                    '',
282
                                    '----',
283
                                    '',
284
                                    'infotext'])
2472.4.1 by Alexander Belchenko
Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added
285
        self.assertFileEqual(expected, msgfilename)
286
3004.1.1 by Daniel Watkins
Added (failing) test to check if a temp file containing a commit message can be created in a folder with a Unicode name.
287
    def test__create_temp_file_with_commit_template_in_unicode_dir(self):
3477.1.2 by John Arbash Meinel
Rename UnicodeFilename => UnicodeFilenameFeature
288
        self.requireFeature(tests.UnicodeFilenameFeature)
3004.1.7 by Daniel Watkins
test__create_temp_file_with_commit_template_in_unicode_dir now uses EncodingTestAdapter info.
289
        if hasattr(self, 'info'):
290
            os.mkdir(self.info['directory'])
291
            os.chdir(self.info['directory'])
292
            msgeditor._create_temp_file_with_commit_template('infotext')
293
        else:
3004.1.8 by Daniel Watkins
Changed TestSkipped to TestNotApplicable as suggested by Aaron.
294
            raise TestNotApplicable('Test run elsewhere with non-ascii data.')
3004.1.1 by Daniel Watkins
Added (failing) test to check if a temp file containing a commit message can be created in a folder with a Unicode name.
295
2472.4.1 by Alexander Belchenko
Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added
296
    def test__create_temp_file_with_empty_commit_template(self):
297
        # empty file
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
298
        create_file = msgeditor._create_temp_file_with_commit_template
2472.4.2 by Alexander Belchenko
unwrapping long lines in tests
299
        msgfilename, hasinfo = create_file('')
2472.4.1 by Alexander Belchenko
Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added
300
        self.assertNotEqual(None, msgfilename)
301
        self.assertFalse(hasinfo)
302
        self.assertFileEqual('', msgfilename)
2625.9.6 by Daniel Watkins
Added test to ensure correct error message is thrown when an unencodable commit message is entered through the editor.
303
304
    def test_unsupported_encoding_commit_message(self):
305
        old_env = osutils.set_or_unset_env('LANG', 'C')
2625.9.8 by Daniel Watkins
Updated as per poolie's !tweak.
306
        try:
2804.4.1 by Alexander Belchenko
some win32-specific fixes for selftest
307
            # LANG env variable has no effect on Windows
308
            # but some characters anyway cannot be represented
309
            # in default user encoding
3224.5.4 by Andrew Bennetts
Fix test suite, mainly weeding out uses of bzrlib.user_encoding.
310
            char = probe_bad_non_ascii(osutils.get_user_encoding())
2839.6.2 by Alexander Belchenko
changes after Martin's review
311
            if char is None:
312
                raise TestSkipped('Cannot find suitable non-ascii character '
3224.5.4 by Andrew Bennetts
Fix test suite, mainly weeding out uses of bzrlib.user_encoding.
313
                    'for user_encoding (%s)' % osutils.get_user_encoding())
2804.4.1 by Alexander Belchenko
some win32-specific fixes for selftest
314
315
            self.make_fake_editor(message=char)
2625.9.6 by Daniel Watkins
Added test to ensure correct error message is thrown when an unencodable commit message is entered through the editor.
316
2625.9.8 by Daniel Watkins
Updated as per poolie's !tweak.
317
            working_tree = self.make_uncommitted_tree()
318
            self.assertRaises(errors.BadCommitMessageEncoding,
2772.1.1 by Martin Pool
Merge commit --show-diff feature from Goffredo
319
                              msgeditor.edit_commit_message, '')
2625.9.8 by Daniel Watkins
Updated as per poolie's !tweak.
320
        finally:
321
            osutils.set_or_unset_env('LANG', old_env)
3642.2.2 by Jelmer Vernooij
Add tests for commit_message_template hooks.
322
323
    def test_generate_commit_message_template_no_hooks(self):
324
        commit_obj = commit.Commit()
325
        self.assertIs(None, 
326
            msgeditor.generate_commit_message_template(commit_obj))
327
328
    def test_generate_commit_message_template_hook(self):
329
        def restoreDefaults():
330
            msgeditor.hooks['commit_message_template'] = []
331
        self.addCleanup(restoreDefaults)
332
        msgeditor.hooks.install_named_hook("commit_message_template",
333
                lambda commit_obj, msg: "save me some typing\n", None)
334
        commit_obj = commit.Commit()
335
        self.assertEquals("save me some typing\n", 
336
            msgeditor.generate_commit_message_template(commit_obj))