/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
5186.2.2 by Martin Pool
wrap os.rename to insert the source and destination filenames in any exception that may be raised
1
# Copyright (C) 2006, 2010 Canonical Ltd
1731.2.20 by Aaron Bentley
Add copyright notice to join tests
2
#
3
# This program is free software; you can redistribute it and/or modify
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.
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
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1731.2.20 by Aaron Bentley
Add copyright notice to join tests
16
17
1731.2.7 by Aaron Bentley
Add join command
18
import os
19
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
20
from breezy import (
5186.2.2 by Martin Pool
wrap os.rename to insert the source and destination filenames in any exception that may be raised
21
    osutils,
22
    tests,
23
    workingtree,
24
    )
1731.2.7 by Aaron Bentley
Add join command
25
26
27
class TestJoin(tests.TestCaseWithTransport):
28
29
    def make_trees(self):
2100.3.17 by Aaron Bentley
Remove get_format_*, make FormatRegistry.register_metadir vary working tree
30
        base_tree = self.make_branch_and_tree('tree',
6437.14.2 by Jelmer Vernooij
Run subtree tests with development-subtree rather than deprecated dirstate-with-subtree.
31
            format='development-subtree')
1731.2.7 by Aaron Bentley
Add join command
32
        base_tree.commit('empty commit')
33
        self.build_tree(['tree/subtree/', 'tree/subtree/file1'])
34
        sub_tree = self.make_branch_and_tree('tree/subtree')
6855.4.1 by Jelmer Vernooij
Yet more bees.
35
        sub_tree.add('file1', b'file1-id')
1731.2.7 by Aaron Bentley
Add join command
36
        sub_tree.commit('added file1')
37
        return base_tree, sub_tree
38
39
    def check_success(self, path):
40
        base_tree = workingtree.WorkingTree.open(path)
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
41
        self.assertEqual(b'file1-id', base_tree.path2id('subtree/file1'))
1731.2.7 by Aaron Bentley
Add join command
42
43
    def test_join(self):
44
        base_tree, sub_tree = self.make_trees()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
45
        self.run_bzr('join tree/subtree')
1731.2.7 by Aaron Bentley
Add join command
46
        self.check_success('tree')
47
48
    def test_join_dot(self):
49
        base_tree, sub_tree = self.make_trees()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
50
        self.run_bzr('join .', working_dir='tree/subtree')
1731.2.7 by Aaron Bentley
Add join command
51
        self.check_success('tree')
52
53
    def test_join_error(self):
54
        base_tree, sub_tree = self.make_trees()
55
        os.mkdir('tree/subtree2')
5186.2.2 by Martin Pool
wrap os.rename to insert the source and destination filenames in any exception that may be raised
56
        osutils.rename('tree/subtree', 'tree/subtree2/subtree')
2255.2.223 by Martin Pool
add stubbed out join blackbox test
57
        self.run_bzr_error(
58
            ('Cannot join .*subtree.  Parent directory is not versioned',),
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
59
             'join tree/subtree2/subtree')
2255.2.223 by Martin Pool
add stubbed out join blackbox test
60
        # disabled because this gives an ugly error at present -- mbp 20070306
61
        ## self.run_bzr_error(
62
        ##     ('Cannot join .*subtree.  Parent directory is not versioned',),
63
        ##      'join', '--reference', 'tree/subtree2/subtree')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
64
        self.run_bzr_error(('Not a branch:.*subtree2',),
65
                           'join tree/subtree2')
2100.3.11 by Aaron Bentley
Add join --reference support
66
67
    def test_join_reference(self):
68
        """Join can add a reference if --reference is supplied"""
69
        base_tree, sub_tree = self.make_trees()
6793.4.1 by Jelmer Vernooij
Improve set_root_id handling.
70
        subtree_root_id = sub_tree.get_root_id()
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
71
        self.run_bzr('join . --reference', working_dir='tree/subtree')
2255.2.210 by Robert Collins
Fix test_join with dirstate default.
72
        sub_tree.lock_read()
73
        self.addCleanup(sub_tree.unlock)
6973.7.5 by Jelmer Vernooij
s/file/open.
74
        self.assertEqual(b'file1-id', sub_tree.path2id('file1'))
75
        self.assertTrue(sub_tree.has_id(b'file1-id'))
6793.4.1 by Jelmer Vernooij
Improve set_root_id handling.
76
        self.assertEqual(subtree_root_id, sub_tree.path2id(''))
77
        self.assertEqual('', sub_tree.id2path(subtree_root_id))
2100.3.11 by Aaron Bentley
Add join --reference support
78
        self.assertIs(None, base_tree.path2id('subtree/file1'))
2255.2.198 by Robert Collins
All test_join tests passing.
79
        base_tree.lock_read()
80
        self.addCleanup(base_tree.unlock)
6973.7.5 by Jelmer Vernooij
s/file/open.
81
        self.assertFalse(base_tree.has_id(b'file1-id'))
6793.4.1 by Jelmer Vernooij
Improve set_root_id handling.
82
        self.assertEqual(subtree_root_id, base_tree.path2id('subtree'))
83
        self.assertEqual('subtree', base_tree.id2path(subtree_root_id))
2255.2.235 by Martin Pool
Add blackbox test that join gives clean error when the repository doesn't support rich roots
84
85
    def test_references_check_repository_support(self):
86
        """Users are stopped from adding a reference that can't be committed."""
87
        # in 0.15 the default format has a dirstate workingtree, that can
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
88
        # support tree references, but the default repository format
2255.2.235 by Martin Pool
Add blackbox test that join gives clean error when the repository doesn't support rich roots
89
        # cannot.
90
        tree = self.make_branch_and_tree('tree', format='dirstate')
91
        tree2 = self.make_branch_and_tree('tree/subtree')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
92
        out, err = self.run_bzr('join --reference tree/subtree',
93
                                retcode=3)
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
94
        self.assertContainsRe(err, r"Can't join trees")
95
        self.assertContainsRe(err, r"use brz upgrade")