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  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
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  | 
||
| 
3968.1.1
by Colin D Bennett
 Show all pending merge revisions in the commit message template.  | 
84  | 
def make_multiple_pending_tree(self):  | 
85  | 
from bzrlib import config  | 
|
86  | 
config.GlobalConfig().set_user_option('email',  | 
|
87  | 
'Bilbo Baggins <bb@hobbit.net>')  | 
|
88  | 
tree = self.make_branch_and_tree('a')  | 
|
89  | 
tree.commit('Initial checkin.', timestamp=1230912900, timezone=0)  | 
|
90  | 
tree2 = tree.bzrdir.clone('b').open_workingtree()  | 
|
91  | 
tree.commit('Minor tweak.', timestamp=1231977840, timezone=0)  | 
|
92  | 
tree2.commit('Feature X work.', timestamp=1233186240, timezone=0)  | 
|
93  | 
tree3 = tree2.bzrdir.clone('c').open_workingtree()  | 
|
94  | 
tree2.commit('Feature X finished.', timestamp=1233187680, timezone=0)  | 
|
95  | 
tree3.commit('Feature Y, based on initial X work.',  | 
|
96  | 
timestamp=1233285960, timezone=0)  | 
|
97  | 
tree.merge_from_branch(tree2.branch)  | 
|
98  | 
tree.merge_from_branch(tree3.branch)  | 
|
99  | 
return tree  | 
|
100  | 
||
101  | 
def test_commit_template_pending_merges(self):  | 
|
102  | 
"""Test building a commit message template when there are pending  | 
|
103  | 
        merges.  The commit message should show all pending merge revisions,
 | 
|
104  | 
        as does 'status -v', not only the merge tips.
 | 
|
105  | 
        """
 | 
|
106  | 
working_tree = self.make_multiple_pending_tree()  | 
|
107  | 
template = msgeditor.make_commit_message_template(working_tree, None)  | 
|
108  | 
self.assertEqualDiff(template,  | 
|
109  | 
u"""\  | 
|
110  | 
pending merges:
 | 
|
111  | 
  Bilbo Baggins 2009-01-29 Feature X finished.
 | 
|
112  | 
    Bilbo Baggins 2009-01-28 Feature X work.
 | 
|
113  | 
  Bilbo Baggins 2009-01-30 Feature Y, based on initial X work.
 | 
|
114  | 
""")  | 
|
115  | 
||
| 
2598.6.18
by ghigo
 Update the tests to the new *_encoded() functions  | 
116  | 
def test_commit_template_encoded(self):  | 
117  | 
"""Test building a commit message template"""  | 
|
118  | 
working_tree = self.make_uncommitted_tree()  | 
|
| 
2598.6.24
by ghigo
 update on the basis of Aaron suggestions  | 
119  | 
template = make_commit_message_template_encoded(working_tree,  | 
120  | 
None,  | 
|
121  | 
output_encoding='utf8')  | 
|
| 
1185.33.72
by Martin Pool
 Fix commit message template for non-ascii files, and add test for handling of  | 
122  | 
self.assertEqualDiff(template,  | 
123  | 
u"""\  | 
|
124  | 
added:
 | 
|
125  | 
  hell\u00d8
 | 
|
| 
2598.6.14
by ghigo
 Update the test  | 
126  | 
""".encode("utf8"))  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
127  | 
|
| 
2598.6.18
by ghigo
 Update the tests to the new *_encoded() functions  | 
128  | 
|
| 
2598.6.2
by ghigo
 Add testcase  | 
129  | 
def test_commit_template_and_diff(self):  | 
130  | 
"""Test building a commit message template"""  | 
|
131  | 
working_tree = self.make_uncommitted_tree()  | 
|
| 
2598.6.24
by ghigo
 update on the basis of Aaron suggestions  | 
132  | 
template = make_commit_message_template_encoded(working_tree,  | 
133  | 
None,  | 
|
134  | 
diff=True,  | 
|
135  | 
output_encoding='utf8')  | 
|
| 
2598.6.2
by ghigo
 Add testcase  | 
136  | 
|
| 
2598.6.10
by ghigo
 In the commit dialog, the diff is stored as 8-bit raw data  | 
137  | 
self.assertTrue("""\  | 
| 
2598.6.2
by ghigo
 Add testcase  | 
138  | 
@@ -0,0 +1,1 @@
 | 
139  | 
+contents of hello
 | 
|
| 
2598.6.14
by ghigo
 Update the test  | 
140  | 
""" in template)  | 
| 
2598.6.3
by ghigo
 Add test case  | 
141  | 
self.assertTrue(u"""\  | 
142  | 
added:
 | 
|
143  | 
hell\u00d8  | 
|
| 
2598.6.14
by ghigo
 Update the test  | 
144  | 
""".encode('utf8') in template)  | 
| 
2598.6.2
by ghigo
 Add testcase  | 
145  | 
|
| 
3910.1.1
by Andrew Bennetts
 Improve error handling in msgeditor._run_editor.  | 
146  | 
def make_do_nothing_editor(self):  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
147  | 
if sys.platform == "win32":  | 
148  | 
f = file('fed.bat', 'w')  | 
|
149  | 
f.write('@rem dummy fed')  | 
|
150  | 
f.close()  | 
|
| 
3910.1.1
by Andrew Bennetts
 Improve error handling in msgeditor._run_editor.  | 
151  | 
return 'fed.bat'  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
152  | 
else:  | 
153  | 
f = file('fed.sh', 'wb')  | 
|
154  | 
f.write('#!/bin/sh\n')  | 
|
155  | 
f.close()  | 
|
156  | 
os.chmod('fed.sh', 0755)  | 
|
| 
3910.1.1
by Andrew Bennetts
 Improve error handling in msgeditor._run_editor.  | 
157  | 
return './fed.sh'  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
158  | 
|
| 
3910.1.1
by Andrew Bennetts
 Improve error handling in msgeditor._run_editor.  | 
159  | 
def test_run_editor(self):  | 
160  | 
os.environ['BZR_EDITOR'] = self.make_do_nothing_editor()  | 
|
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
161  | 
self.assertEqual(True, msgeditor._run_editor(''),  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
162  | 
'Unable to run dummy fake editor')  | 
163  | 
||
| 
2625.9.5
by Daniel Watkins
 Modified test_msgeditor.make_fake_editor to allow a custom message to be inserted.  | 
164  | 
def make_fake_editor(self, message='test message from fed\\n'):  | 
| 
2258.3.2
by James Westby
 Allow an empty start message.  | 
165  | 
"""Set up environment so that an editor will be a known script.  | 
166  | 
||
167  | 
        Sets up BZR_EDITOR so that if an editor is spawned it will run a
 | 
|
168  | 
        script that just adds a known message to the start of the file.
 | 
|
169  | 
        """
 | 
|
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
170  | 
f = file('fed.py', 'wb')  | 
171  | 
f.write('#!%s\n' % sys.executable)  | 
|
172  | 
f.write("""\  | 
|
| 
2625.9.5
by Daniel Watkins
 Modified test_msgeditor.make_fake_editor to allow a custom message to be inserted.  | 
173  | 
# coding=utf-8
 | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
174  | 
import sys
 | 
175  | 
if len(sys.argv) == 2:
 | 
|
176  | 
    fn = sys.argv[1]
 | 
|
177  | 
    f = file(fn, 'rb')
 | 
|
178  | 
    s = f.read()
 | 
|
179  | 
    f.close()
 | 
|
180  | 
    f = file(fn, 'wb')
 | 
|
| 
2625.9.9
by Daniel Watkins
 Used format string as suggested by abentley.  | 
181  | 
f.write('%s')  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
182  | 
    f.write(s)
 | 
183  | 
    f.close()
 | 
|
| 
2625.9.9
by Daniel Watkins
 Used format string as suggested by abentley.  | 
184  | 
""" % (message, ))  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
185  | 
f.close()  | 
186  | 
if sys.platform == "win32":  | 
|
187  | 
            # [win32] make batch file and set BZR_EDITOR
 | 
|
188  | 
f = file('fed.bat', 'w')  | 
|
189  | 
f.write("""\  | 
|
190  | 
@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  | 
191  | 
"%s" fed.py %%1  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
192  | 
""" % sys.executable)  | 
193  | 
f.close()  | 
|
194  | 
os.environ['BZR_EDITOR'] = 'fed.bat'  | 
|
195  | 
else:  | 
|
196  | 
            # [non-win32] make python script executable and set BZR_EDITOR
 | 
|
197  | 
os.chmod('fed.py', 0755)  | 
|
198  | 
os.environ['BZR_EDITOR'] = './fed.py'  | 
|
199  | 
||
| 
2258.3.2
by James Westby
 Allow an empty start message.  | 
200  | 
def test_edit_commit_message(self):  | 
201  | 
working_tree = self.make_uncommitted_tree()  | 
|
202  | 
self.make_fake_editor()  | 
|
203  | 
||
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
204  | 
mutter('edit_commit_message without infotext')  | 
205  | 
self.assertEqual('test message from fed\n',  | 
|
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
206  | 
msgeditor.edit_commit_message(''))  | 
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
207  | 
|
| 
2804.4.1
by Alexander Belchenko
 some win32-specific fixes for selftest  | 
208  | 
mutter('edit_commit_message with ascii string infotext')  | 
209  | 
self.assertEqual('test message from fed\n',  | 
|
210  | 
msgeditor.edit_commit_message('spam'))  | 
|
211  | 
||
| 
1185.85.9
by John Arbash Meinel
 [patch] Alexander Belchenko: test spawning a msg editor  | 
212  | 
mutter('edit_commit_message with unicode infotext')  | 
213  | 
self.assertEqual('test message from fed\n',  | 
|
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
214  | 
msgeditor.edit_commit_message(u'\u1234'))  | 
| 
2598.6.18
by ghigo
 Update the tests to the new *_encoded() functions  | 
215  | 
|
| 
2598.6.27
by ghigo
 small cleanup (line lenght)  | 
216  | 
tmpl = edit_commit_message_encoded(u'\u1234'.encode("utf8"))  | 
217  | 
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.  | 
218  | 
|
| 
2258.3.2
by James Westby
 Allow an empty start message.  | 
219  | 
def test_start_message(self):  | 
220  | 
self.make_uncommitted_tree()  | 
|
221  | 
self.make_fake_editor()  | 
|
| 
2258.3.1
by James Westby
 Add a way to specify a template commit message.  | 
222  | 
self.assertEqual('test message from fed\nstart message\n',  | 
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
223  | 
msgeditor.edit_commit_message('',  | 
| 
2258.3.1
by James Westby
 Add a way to specify a template commit message.  | 
224  | 
start_message='start message\n'))  | 
| 
2258.3.2
by James Westby
 Allow an empty start message.  | 
225  | 
self.assertEqual('test message from fed\n',  | 
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
226  | 
msgeditor.edit_commit_message('',  | 
| 
2258.3.2
by James Westby
 Allow an empty start message.  | 
227  | 
start_message=''))  | 
| 
2258.3.1
by James Westby
 Add a way to specify a template commit message.  | 
228  | 
|
| 
1185.85.14
by John Arbash Meinel
 Change exception handling for msgeditor.py to only catch specific exceptions.  | 
229  | 
def test_deleted_commit_message(self):  | 
230  | 
working_tree = self.make_uncommitted_tree()  | 
|
231  | 
||
232  | 
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  | 
233  | 
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.  | 
234  | 
else:  | 
235  | 
os.environ['BZR_EDITOR'] = 'rm'  | 
|
236  | 
||
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
237  | 
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.  | 
238  | 
|
| 
1185.50.93
by John Arbash Meinel
 Added a test for the new list of editors.  | 
239  | 
def test__get_editor(self):  | 
240  | 
        # Test that _get_editor can return a decent list of items
 | 
|
241  | 
bzr_editor = os.environ.get('BZR_EDITOR')  | 
|
| 
1668.4.1
by Olaf Conradi
 Make msgeditor invocation comply with Debian Policy.  | 
242  | 
visual = os.environ.get('VISUAL')  | 
| 
1185.50.93
by John Arbash Meinel
 Added a test for the new list of editors.  | 
243  | 
editor = os.environ.get('EDITOR')  | 
244  | 
try:  | 
|
245  | 
os.environ['BZR_EDITOR'] = 'bzr_editor'  | 
|
| 
1668.4.1
by Olaf Conradi
 Make msgeditor invocation comply with Debian Policy.  | 
246  | 
os.environ['VISUAL'] = 'visual'  | 
| 
1185.50.93
by John Arbash Meinel
 Added a test for the new list of editors.  | 
247  | 
os.environ['EDITOR'] = 'editor'  | 
248  | 
||
249  | 
ensure_config_dir_exists()  | 
|
250  | 
f = open(config_filename(), 'wb')  | 
|
251  | 
f.write('editor = config_editor\n')  | 
|
252  | 
f.close()  | 
|
253  | 
||
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
254  | 
editors = list(msgeditor._get_editor())  | 
| 
3910.1.1
by Andrew Bennetts
 Improve error handling in msgeditor._run_editor.  | 
255  | 
editors = [editor for (editor, cfg_src) in editors]  | 
| 
1185.50.93
by John Arbash Meinel
 Added a test for the new list of editors.  | 
256  | 
|
| 
1668.4.1
by Olaf Conradi
 Make msgeditor invocation comply with Debian Policy.  | 
257  | 
self.assertEqual(['bzr_editor', 'config_editor', 'visual',  | 
258  | 
'editor'], editors[:4])  | 
|
| 
1185.50.93
by John Arbash Meinel
 Added a test for the new list of editors.  | 
259  | 
|
260  | 
if sys.platform == 'win32':  | 
|
| 
1668.4.1
by Olaf Conradi
 Make msgeditor invocation comply with Debian Policy.  | 
261  | 
self.assertEqual(['wordpad.exe', 'notepad.exe'], editors[4:])  | 
| 
1185.50.93
by John Arbash Meinel
 Added a test for the new list of editors.  | 
262  | 
else:  | 
| 
1668.4.1
by Olaf Conradi
 Make msgeditor invocation comply with Debian Policy.  | 
263  | 
self.assertEqual(['/usr/bin/editor', 'vi', 'pico', 'nano',  | 
264  | 
'joe'], editors[4:])  | 
|
| 
1185.50.93
by John Arbash Meinel
 Added a test for the new list of editors.  | 
265  | 
|
266  | 
finally:  | 
|
267  | 
            # Restore the environment
 | 
|
268  | 
if bzr_editor is None:  | 
|
269  | 
del os.environ['BZR_EDITOR']  | 
|
270  | 
else:  | 
|
271  | 
os.environ['BZR_EDITOR'] = bzr_editor  | 
|
| 
1668.4.1
by Olaf Conradi
 Make msgeditor invocation comply with Debian Policy.  | 
272  | 
if visual is None:  | 
273  | 
del os.environ['VISUAL']  | 
|
274  | 
else:  | 
|
275  | 
os.environ['VISUAL'] = visual  | 
|
| 
1185.50.93
by John Arbash Meinel
 Added a test for the new list of editors.  | 
276  | 
if editor is None:  | 
277  | 
del os.environ['EDITOR']  | 
|
278  | 
else:  | 
|
279  | 
os.environ['EDITOR'] = editor  | 
|
| 
2472.4.1
by Alexander Belchenko
 Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added  | 
280  | 
|
| 
3910.1.1
by Andrew Bennetts
 Improve error handling in msgeditor._run_editor.  | 
281  | 
def test__run_editor_EACCES(self):  | 
282  | 
"""If running a configured editor raises EACESS, the user is warned."""  | 
|
283  | 
os.environ['BZR_EDITOR'] = 'eacces.py'  | 
|
284  | 
f = file('eacces.py', 'wb')  | 
|
285  | 
f.write('# Not a real editor')  | 
|
286  | 
f.close()  | 
|
287  | 
        # Make the fake editor unreadable (and unexecutable)
 | 
|
288  | 
os.chmod('eacces.py', 0)  | 
|
289  | 
        # Set $EDITOR so that _run_editor will terminate before trying real
 | 
|
290  | 
        # editors.
 | 
|
291  | 
os.environ['EDITOR'] = self.make_do_nothing_editor()  | 
|
292  | 
        # Call _run_editor, capturing mutter.warning calls.
 | 
|
293  | 
warnings = []  | 
|
294  | 
def warning(*args):  | 
|
295  | 
warnings.append(args[0] % args[1:])  | 
|
296  | 
_warning = trace.warning  | 
|
297  | 
trace.warning = warning  | 
|
298  | 
try:  | 
|
299  | 
msgeditor._run_editor('')  | 
|
300  | 
finally:  | 
|
301  | 
trace.warning = _warning  | 
|
| 
3910.1.3
by Andrew Bennetts
 Tweak warning slightly.  | 
302  | 
self.assertStartsWith(warnings[0], 'Could not start editor "eacces.py"')  | 
| 
3910.1.1
by Andrew Bennetts
 Improve error handling in msgeditor._run_editor.  | 
303  | 
|
| 
2472.4.1
by Alexander Belchenko
 Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added  | 
304  | 
def test__create_temp_file_with_commit_template(self):  | 
305  | 
        # check that commit template written properly
 | 
|
306  | 
        # and has platform native line-endings (CRLF on win32)
 | 
|
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
307  | 
create_file = msgeditor._create_temp_file_with_commit_template  | 
| 
2472.4.2
by Alexander Belchenko
 unwrapping long lines in tests  | 
308  | 
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  | 
309  | 
self.assertNotEqual(None, msgfilename)  | 
310  | 
self.assertTrue(hasinfo)  | 
|
| 
2472.4.2
by Alexander Belchenko
 unwrapping long lines in tests  | 
311  | 
expected = os.linesep.join(['start message',  | 
312  | 
'',  | 
|
313  | 
'',  | 
|
314  | 
'----',  | 
|
315  | 
'',  | 
|
316  | 
'infotext'])  | 
|
| 
2472.4.1
by Alexander Belchenko
 Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added  | 
317  | 
self.assertFileEqual(expected, msgfilename)  | 
318  | 
||
| 
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.  | 
319  | 
def test__create_temp_file_with_commit_template_in_unicode_dir(self):  | 
| 
3477.1.2
by John Arbash Meinel
 Rename UnicodeFilename => UnicodeFilenameFeature  | 
320  | 
self.requireFeature(tests.UnicodeFilenameFeature)  | 
| 
3004.1.7
by Daniel Watkins
 test__create_temp_file_with_commit_template_in_unicode_dir now uses EncodingTestAdapter info.  | 
321  | 
if hasattr(self, 'info'):  | 
322  | 
os.mkdir(self.info['directory'])  | 
|
323  | 
os.chdir(self.info['directory'])  | 
|
324  | 
msgeditor._create_temp_file_with_commit_template('infotext')  | 
|
325  | 
else:  | 
|
| 
3004.1.8
by Daniel Watkins
 Changed TestSkipped to TestNotApplicable as suggested by Aaron.  | 
326  | 
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.  | 
327  | 
|
| 
2472.4.1
by Alexander Belchenko
 Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added  | 
328  | 
def test__create_temp_file_with_empty_commit_template(self):  | 
329  | 
        # empty file
 | 
|
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
330  | 
create_file = msgeditor._create_temp_file_with_commit_template  | 
| 
2472.4.2
by Alexander Belchenko
 unwrapping long lines in tests  | 
331  | 
msgfilename, hasinfo = create_file('')  | 
| 
2472.4.1
by Alexander Belchenko
 Bugfix #110901: commit message template written with native line-endings; corresponding unit tests added  | 
332  | 
self.assertNotEqual(None, msgfilename)  | 
333  | 
self.assertFalse(hasinfo)  | 
|
334  | 
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.  | 
335  | 
|
336  | 
def test_unsupported_encoding_commit_message(self):  | 
|
337  | 
old_env = osutils.set_or_unset_env('LANG', 'C')  | 
|
| 
2625.9.8
by Daniel Watkins
 Updated as per poolie's !tweak.  | 
338  | 
try:  | 
| 
2804.4.1
by Alexander Belchenko
 some win32-specific fixes for selftest  | 
339  | 
            # LANG env variable has no effect on Windows
 | 
340  | 
            # but some characters anyway cannot be represented
 | 
|
341  | 
            # in default user encoding
 | 
|
| 
3224.5.4
by Andrew Bennetts
 Fix test suite, mainly weeding out uses of bzrlib.user_encoding.  | 
342  | 
char = probe_bad_non_ascii(osutils.get_user_encoding())  | 
| 
2839.6.2
by Alexander Belchenko
 changes after Martin's review  | 
343  | 
if char is None:  | 
344  | 
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.  | 
345  | 
'for user_encoding (%s)' % osutils.get_user_encoding())  | 
| 
2804.4.1
by Alexander Belchenko
 some win32-specific fixes for selftest  | 
346  | 
|
347  | 
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.  | 
348  | 
|
| 
2625.9.8
by Daniel Watkins
 Updated as per poolie's !tweak.  | 
349  | 
working_tree = self.make_uncommitted_tree()  | 
350  | 
self.assertRaises(errors.BadCommitMessageEncoding,  | 
|
| 
2772.1.1
by Martin Pool
 Merge commit --show-diff feature from Goffredo  | 
351  | 
msgeditor.edit_commit_message, '')  | 
| 
2625.9.8
by Daniel Watkins
 Updated as per poolie's !tweak.  | 
352  | 
finally:  | 
353  | 
osutils.set_or_unset_env('LANG', old_env)  | 
|
| 
3642.2.2
by Jelmer Vernooij
 Add tests for commit_message_template hooks.  | 
354  | 
|
355  | 
def test_generate_commit_message_template_no_hooks(self):  | 
|
356  | 
commit_obj = commit.Commit()  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
357  | 
self.assertIs(None,  | 
| 
3642.2.2
by Jelmer Vernooij
 Add tests for commit_message_template hooks.  | 
358  | 
msgeditor.generate_commit_message_template(commit_obj))  | 
359  | 
||
360  | 
def test_generate_commit_message_template_hook(self):  | 
|
361  | 
def restoreDefaults():  | 
|
362  | 
msgeditor.hooks['commit_message_template'] = []  | 
|
363  | 
self.addCleanup(restoreDefaults)  | 
|
364  | 
msgeditor.hooks.install_named_hook("commit_message_template",  | 
|
365  | 
lambda commit_obj, msg: "save me some typing\n", None)  | 
|
366  | 
commit_obj = commit.Commit()  | 
|
| 
3943.8.1
by Marius Kruger
 remove all trailing whitespace from bzr source  | 
367  | 
self.assertEquals("save me some typing\n",  | 
| 
3642.2.2
by Jelmer Vernooij
 Add tests for commit_message_template hooks.  | 
368  | 
msgeditor.generate_commit_message_template(commit_obj))  |