25
from bzrlib import workingtree
25
26
from bzrlib.branch import Branch
26
from bzrlib import workingtree
27
from bzrlib.tests import TestSkipped
27
28
from bzrlib.tests.blackbox import ExternalBase
36
37
class TestDiff(ExternalBase):
38
def make_example_branch(test):
39
def make_example_branch(self):
39
40
# FIXME: copied from test_too_much -- share elsewhere?
41
file('hello', 'wb').write('foo\n')
42
test.runbzr('add hello')
43
test.runbzr('commit -m setup hello')
44
file('goodbye', 'wb').write('baz\n')
45
test.runbzr('add goodbye')
46
test.runbzr('commit -m setup goodbye')
41
tree = self.make_branch_and_tree('.')
42
open('hello', 'wb').write('foo\n')
45
open('goodbye', 'wb').write('baz\n')
48
49
def test_diff(self):
49
50
self.make_example_branch()
255
256
self.runbzr('rename hello gruezi')
256
257
diff = self.run_bzr_captured(['diff'], retcode=1)
257
258
self.assertTrue("=== renamed file 'hello' => 'gruezi'" in diff[0])
261
class TestExternalDiff(TestDiff):
263
def test_external_diff(self):
264
"""Test that we can spawn an external diff process"""
265
# We have to use run_bzr_subprocess, because we need to
266
# test writing directly to stdout, (there was a bug in
267
# subprocess.py that we had to workaround).
268
# However, if 'diff' may not be available
269
self.make_example_branch()
270
orig_progress = os.environ.get('BZR_PROGRESS_BAR')
272
os.environ['BZR_PROGRESS_BAR'] = 'none'
273
out, err = self.run_bzr_subprocess('diff', '-r', '1',
274
'--diff-options', '-ub',
277
if orig_progress is None:
278
del os.environ['BZR_PROGRESS_BAR']
280
os.environ['BZR_PROGRESS_BAR'] = orig_progress
282
if 'Diff is not installed on this machine' in err:
283
raise TestSkipped("No external 'diff' is available")
284
self.assertEqual('', err)
285
# We have to skip the stuff in the middle, because it depends
287
self.assertStartsWith(out, "=== added file 'goodbye'\n"
288
"--- goodbye\t1970-01-01 00:00:00 +0000\n"
290
self.assertEndsWith(out, "\n@@ -0,0 +1 @@\n"