/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_diff.py

  • Committer: John Arbash Meinel
  • Date: 2009-07-31 17:42:29 UTC
  • mto: This revision was merged to the branch mainline in revision 4611.
  • Revision ID: john@arbash-meinel.com-20090731174229-w2zdsdlfpeddk8gl
Now we got to the per-workingtree tests, etc.

The main causes seem to break down into:
  bzrdir.clone() is known to be broken wrt locking, this effects
  everything that tries to 'push'

  shelf code is not compatible with strict locking

  merge code seems to have an issue. This might actually be the
  root cause of the clone() problems.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
21
21
import os
22
22
import re
23
23
 
24
 
from bzrlib import (
25
 
    tests,
26
 
    workingtree,
27
 
    )
28
 
from bzrlib.diff import (
29
 
    DiffTree,
30
 
    format_registry as diff_format_registry,
31
 
    )
 
24
import bzrlib
 
25
from bzrlib import workingtree
 
26
from bzrlib.branch import Branch
 
27
from bzrlib.tests import TestSkipped
 
28
from bzrlib.tests.blackbox import ExternalBase
32
29
 
33
30
 
34
31
def subst_dates(string):
37
34
                  'YYYY-MM-DD HH:MM:SS +ZZZZ', string)
38
35
 
39
36
 
40
 
class DiffBase(tests.TestCaseWithTransport):
 
37
class DiffBase(ExternalBase):
41
38
    """Base class with common setup method"""
42
39
 
43
40
    def make_example_branch(self):
136
133
        out, err = self.run_bzr('diff -r 1..23..123', retcode=3,
137
134
            error_regexes=('one or two revision specifiers',))
138
135
 
139
 
    def test_diff_using_and_format(self):
140
 
        out, err = self.run_bzr('diff --format=default --using=mydi', retcode=3,
141
 
            error_regexes=('are mutually exclusive',))
142
 
 
143
136
    def test_diff_nonexistent_revision(self):
144
137
        out, err = self.run_bzr('diff -r 123', retcode=3,
145
138
            error_regexes=("Requested revision: '123' does not "
305
298
        output = self.run_bzr('diff -r 1.. branch1', retcode=1)
306
299
        self.assertContainsRe(output[0], '\n\\-original line\n\\+repo line\n')
307
300
 
308
 
    def test_custom_format(self):
309
 
        class BooDiffTree(DiffTree):
310
 
 
311
 
            def show_diff(self, specific_files, extra_trees=None):
312
 
                self.to_file.write("BOO!\n")
313
 
                return super(BooDiffTree, self).show_diff(specific_files,
314
 
                    extra_trees)
315
 
 
316
 
        diff_format_registry.register("boo", BooDiffTree, 
317
 
            "Scary diff format")
318
 
        self.addCleanup(diff_format_registry.remove, "boo")
319
 
        self.make_example_branch()
320
 
        self.build_tree_contents([('hello', 'hello world!\n')])
321
 
        output = self.run_bzr('diff --format=boo', retcode=1)
322
 
        self.assertTrue("BOO!" in output[0])
323
 
 
324
301
 
325
302
class TestCheckoutDiff(TestDiff):
326
303
 
378
355
 
379
356
    def test_external_diff(self):
380
357
        """Test that we can spawn an external diff process"""
381
 
        self.disable_missing_extensions_warning()
382
358
        # We have to use run_bzr_subprocess, because we need to
383
359
        # test writing directly to stdout, (there was a bug in
384
360
        # subprocess.py that we had to workaround).
390
366
                                           universal_newlines=True,
391
367
                                           retcode=None)
392
368
        if 'Diff is not installed on this machine' in err:
393
 
            raise tests.TestSkipped("No external 'diff' is available")
 
369
            raise TestSkipped("No external 'diff' is available")
394
370
        self.assertEqual('', err)
395
371
        # We have to skip the stuff in the middle, because it depends
396
372
        # on time.time()