/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) 2006 Canonical Ltd
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
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
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
16
6622.1.29 by Jelmer Vernooij
Fix some more tests.
17
"""Black-box tests for 'brz inventory'."""
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
18
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
19
import os
20
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
21
from breezy.tests import TestCaseWithTransport
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
22
23
24
class TestInventory(TestCaseWithTransport):
25
26
    def setUp(self):
6552.1.4 by Vincent Ladeuil
Remaining tests matching setup(self) that can be rewritten with super().
27
        super(TestInventory, self).setUp()
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
28
29
        tree = self.make_branch_and_tree('.')
30
        self.build_tree(['a', 'b/', 'b/c'])
31
6855.4.1 by Jelmer Vernooij
Yet more bees.
32
        tree.add(['a', 'b', 'b/c'], [b'a-id', b'b-id', b'c-id'])
33
        tree.commit('init', rev_id=b'one')
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
34
        self.tree = tree
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
35
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
36
    def assertInventoryEqual(self, expected, args=None, **kwargs):
6622.1.29 by Jelmer Vernooij
Fix some more tests.
37
        """Test that the output of 'brz inventory' is as expected.
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
38
39
        Any arguments supplied will be passed to run_bzr.
40
        """
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
41
        command = 'inventory'
42
        if args is not None:
43
            command += ' ' + args
44
        out, err = self.run_bzr(command, **kwargs)
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
45
        self.assertEqual(expected, out)
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
46
        self.assertEqual('', err)
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
47
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
48
    def test_inventory(self):
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
49
        self.assertInventoryEqual('a\nb\nb/c\n')
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
50
51
    def test_inventory_kind(self):
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
52
        self.assertInventoryEqual('a\nb/c\n', '--kind file')
53
        self.assertInventoryEqual('b\n', '--kind directory')
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
54
55
    def test_inventory_show_ids(self):
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
56
        expected = ''.join(('%-50s %s\n' % (path, file_id))
7143.15.2 by Jelmer Vernooij
Run autopep8.
57
                           for path, file_id in
58
                           [('a', 'a-id'),
59
                            ('b', 'b-id'),
60
                            ('b/c', 'c-id')
61
                            ]
62
                           )
2027.4.1 by John Arbash Meinel
Factor the 'bzr inventory' tests out of tests_too_much
63
        self.assertInventoryEqual(expected, '--show-ids')
2027.4.2 by John Arbash Meinel
Fix bug #3631, allow 'bzr inventory filename'
64
65
    def test_inventory_specific_files(self):
66
        self.assertInventoryEqual('a\n', 'a')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
67
        self.assertInventoryEqual('b\nb/c\n', 'b b/c')
6622.1.29 by Jelmer Vernooij
Fix some more tests.
68
        # 'brz inventory' recurses into subdirectories
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
69
        self.assertInventoryEqual('b\nb/c\n', 'b')
2027.4.2 by John Arbash Meinel
Fix bug #3631, allow 'bzr inventory filename'
70
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
71
    def test_inventory_mixed(self):
2027.4.2 by John Arbash Meinel
Fix bug #3631, allow 'bzr inventory filename'
72
        """Test that we get expected results when mixing parameters"""
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
73
        a_line = '%-50s %s\n' % ('a', 'a-id')
74
        b_line = '%-50s %s\n' % ('b', 'b-id')
75
        c_line = '%-50s %s\n' % ('b/c', 'c-id')
2027.4.2 by John Arbash Meinel
Fix bug #3631, allow 'bzr inventory filename'
76
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
77
        self.assertInventoryEqual('', '--kind directory a')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
78
        self.assertInventoryEqual(a_line + c_line, '--kind file --show-ids')
79
        self.assertInventoryEqual(c_line, '--kind file --show-ids b b/c')
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
80
81
    def test_in_subdir(self):
82
        os.chdir('b')
83
        # TODO: jam 20060922 Maybe inventory should return the paths as
84
        #       relative to '.', rather than relative to root
85
86
        # a plain 'inventory' returns all files
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
87
        self.assertInventoryEqual('a\nb\nb/c\n')
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
88
        # But passing '.' will only return paths underneath here
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
89
        self.assertInventoryEqual('b\nb/c\n', '.')
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
90
91
    def test_inventory_revision(self):
92
        self.build_tree(['b/d', 'e'])
6855.4.1 by Jelmer Vernooij
Yet more bees.
93
        self.tree.add(['b/d', 'e'], [b'd-id', b'e-id'])
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
94
        self.tree.commit('add files')
95
96
        self.tree.rename_one('b/d', 'd')
97
        self.tree.commit('rename b/d => d')
98
99
        # Passing just -r returns the inventory of that revision
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
100
        self.assertInventoryEqual('a\nb\nb/c\n', '-r 1')
101
        self.assertInventoryEqual('a\nb\nb/c\nb/d\ne\n', '-r 2')
2027.4.3 by John Arbash Meinel
Change how 'bzr inventory' finds paths
102
103
        # Passing a path will lookup the path in the old and current locations
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
104
        self.assertInventoryEqual('b/d\n', '-r 2 b/d')
105
        self.assertInventoryEqual('b/d\n', '-r 2 d')
2027.4.4 by John Arbash Meinel
more tests for 'bzr inventory' including errors and nesting
106
107
        self.tree.rename_one('e', 'b/e')
108
        self.tree.commit('rename e => b/e')
109
110
        # When supplying just a directory paths that are now,
111
        # or used to be, in that directory are shown
7027.4.1 by Jelmer Vernooij
Use StringIOWithEncoding on Python3.
112
        self.assertInventoryEqual('b\nb/c\nb/d\ne\n', '-r 2 b')
2027.4.4 by John Arbash Meinel
more tests for 'bzr inventory' including errors and nesting
113
114
    def test_missing_file(self):
115
        self.run_bzr_error([r'Path\(s\) are not versioned: no-such-file'],
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
116
                           'inventory no-such-file')