/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) 2005 Canonical Ltd
1185.85.7 by John Arbash Meinel
Added Copyright, changed test_missing to use run_bzr instead of capture.
2
# -*- coding: utf-8 -*-
3
# vim: encoding=utf-8
1685.1.80 by Wouter van Heyst
more code cleanup
4
#
1185.85.7 by John Arbash Meinel
Added Copyright, changed test_missing to use run_bzr instead of capture.
5
# This program is free software; you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 2 of the License, or
8
# (at your option) any later version.
1685.1.80 by Wouter van Heyst
more code cleanup
9
#
1185.85.7 by John Arbash Meinel
Added Copyright, changed test_missing to use run_bzr instead of capture.
10
# This program is distributed in the hope that it will be useful,
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
# GNU General Public License for more details.
1685.1.80 by Wouter van Heyst
more code cleanup
14
#
1185.85.7 by John Arbash Meinel
Added Copyright, changed test_missing to use run_bzr instead of capture.
15
# You should have received a copy of the GNU General Public License
16
# along with this program; if not, write to the Free Software
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
1685.1.80 by Wouter van Heyst
more code cleanup
18
19
"""Black-box tests for bzr missing."""
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
20
21
import os
22
2193.4.3 by Alexander Belchenko
Use new API for testing
23
from bzrlib import osutils
24
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
25
from bzrlib.branch import Branch
2193.4.3 by Alexander Belchenko
Use new API for testing
26
from bzrlib.tests import TestCaseWithTransport
27
28
29
class TestMissing(TestCaseWithTransport):
1607.1.15 by Robert Collins
Change missing to not require a write lock unless it is setting the parent.
30
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
31
    def test_missing(self):
1185.54.21 by Aaron Bentley
Fixed up tests
32
        missing = "You are missing 1 revision(s):"
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
33
34
        # create a source branch
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
35
        a_tree = self.make_branch_and_tree('a')
36
        self.build_tree_contents([('a/a', 'initial\n')])
37
        a_tree.add('a')
38
        a_tree.commit(message='initial')
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
39
40
        # clone and add a differing revision
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
41
        b_tree = a_tree.bzrdir.sprout('b').open_workingtree()
42
        self.build_tree_contents([('b/a', 'initial\nmore\n')])
43
        b_tree.commit(message='more')
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
44
1607.1.15 by Robert Collins
Change missing to not require a write lock unless it is setting the parent.
45
        # run missing in a against b
46
        # this should not require missing to take out a write lock on a 
47
        # or b. So we take a write lock on both to test that at the same
48
        # time. This may let the test pass while the default branch is an
49
        # os-locking branch, but it will trigger failures with lockdir based
50
        # branches.
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
51
        a_branch = a_tree.branch
52
        a_branch.lock_write()
53
        b_branch = b_tree.branch
54
        b_branch.lock_write()
55
        os.chdir('a')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
56
        out,err = self.run_bzr('missing ../b', retcode=1)
1607.1.15 by Robert Collins
Change missing to not require a write lock unless it is setting the parent.
57
        lines = out.splitlines()
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
58
        # we're missing the extra revision here
59
        self.assertEqual(missing, lines[0])
1607.1.15 by Robert Collins
Change missing to not require a write lock unless it is setting the parent.
60
        # and we expect 8 lines of output which we trust at the moment to be
61
        # good.
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
62
        self.assertEqual(8, len(lines))
1607.1.15 by Robert Collins
Change missing to not require a write lock unless it is setting the parent.
63
        # we do not expect any error output.
64
        self.assertEqual('', err)
65
        # unlock the branches for the rest of the test
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
66
        a_branch.unlock()
67
        b_branch.unlock()
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
68
69
        # get extra revision from b
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
70
        a_tree.merge_from_branch(b_branch)
71
        a_tree.commit(message='merge')
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
72
73
        # compare again, but now we have the 'merge' commit extra
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
74
        lines = self.run_bzr('missing ../b', retcode=1)[0].splitlines()
1185.54.21 by Aaron Bentley
Fixed up tests
75
        self.assertEqual("You have 1 extra revision(s):", lines[0])
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
76
        self.assertEqual(8, len(lines))
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
77
        lines2 = self.run_bzr('missing ../b --mine-only', retcode=1)[0]
1185.54.22 by Aaron Bentley
Test every option for "bzr missing"
78
        lines2 = lines2.splitlines()
79
        self.assertEqual(lines, lines2)
3427.3.7 by John Arbash Meinel
Update how 'bzr missing' works when given --mine-only or --theirs-only
80
        lines3 = self.run_bzr('missing ../b --theirs-only', retcode=0)[0]
3427.3.8 by John Arbash Meinel
Change the output to 'This branch' and 'Other branch', and document the text in NEWS
81
        self.assertEqualDiff('Other branch is up to date.\n', lines3)
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
82
83
        # relative to a, missing the 'merge' commit 
84
        os.chdir('../b')
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
85
        lines = self.run_bzr('missing ../a', retcode=1)[0].splitlines()
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
86
        self.assertEqual(missing, lines[0])
87
        self.assertEqual(8, len(lines))
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
88
        lines2 = self.run_bzr('missing ../a --theirs-only', retcode=1)[0]
1185.54.22 by Aaron Bentley
Test every option for "bzr missing"
89
        lines2 = lines2.splitlines()
90
        self.assertEqual(lines, lines2)
3427.3.7 by John Arbash Meinel
Update how 'bzr missing' works when given --mine-only or --theirs-only
91
        lines3 = self.run_bzr('missing ../a --mine-only', retcode=0)[0]
3427.3.8 by John Arbash Meinel
Change the output to 'This branch' and 'Other branch', and document the text in NEWS
92
        self.assertEqualDiff('This branch is up to date.\n', lines3)
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
93
        lines4 = self.run_bzr('missing ../a --short', retcode=1)[0]
1185.54.22 by Aaron Bentley
Test every option for "bzr missing"
94
        lines4 = lines4.splitlines()
95
        self.assertEqual(4, len(lines4))
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
96
        lines5 = self.run_bzr('missing ../a --line', retcode=1)[0]
1185.54.22 by Aaron Bentley
Test every option for "bzr missing"
97
        lines5 = lines5.splitlines()
98
        self.assertEqual(2, len(lines5))
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
99
        lines6 = self.run_bzr('missing ../a --reverse', retcode=1)[0]
1185.54.22 by Aaron Bentley
Test every option for "bzr missing"
100
        lines6 = lines6.splitlines()
101
        self.assertEqual(lines6, lines)
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
102
        lines7 = self.run_bzr('missing ../a --show-ids', retcode=1)[0]
1185.54.22 by Aaron Bentley
Test every option for "bzr missing"
103
        lines7 = lines7.splitlines()
104
        self.assertEqual(11, len(lines7))
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
105
        lines8 = self.run_bzr('missing ../a --verbose', retcode=1)[0]
1185.54.22 by Aaron Bentley
Test every option for "bzr missing"
106
        lines8 = lines8.splitlines()
107
        self.assertEqual("modified:", lines8[-2])
108
        self.assertEqual("  a", lines8[-1])
109
3427.3.7 by John Arbash Meinel
Update how 'bzr missing' works when given --mine-only or --theirs-only
110
        os.chdir('../a')
3427.3.8 by John Arbash Meinel
Change the output to 'This branch' and 'Other branch', and document the text in NEWS
111
        self.assertEqualDiff('Other branch is up to date.\n',
3427.3.7 by John Arbash Meinel
Update how 'bzr missing' works when given --mine-only or --theirs-only
112
                             self.run_bzr('missing ../b --theirs-only')[0])
113
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
114
        # after a pull we're back on track
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
115
        b_tree.pull(a_branch)
3427.3.7 by John Arbash Meinel
Update how 'bzr missing' works when given --mine-only or --theirs-only
116
        self.assertEqualDiff("Branches are up to date.\n",
117
                             self.run_bzr('missing ../b')[0])
118
        os.chdir('../b')
119
        self.assertEqualDiff('Branches are up to date.\n',
120
                             self.run_bzr('missing ../a')[0])
121
        # If you supply mine or theirs you only know one side is up to date
3427.3.8 by John Arbash Meinel
Change the output to 'This branch' and 'Other branch', and document the text in NEWS
122
        self.assertEqualDiff('This branch is up to date.\n',
3427.3.7 by John Arbash Meinel
Update how 'bzr missing' works when given --mine-only or --theirs-only
123
                             self.run_bzr('missing ../a --mine-only')[0])
3427.3.8 by John Arbash Meinel
Change the output to 'This branch' and 'Other branch', and document the text in NEWS
124
        self.assertEqualDiff('Other branch is up to date.\n',
3427.3.7 by John Arbash Meinel
Update how 'bzr missing' works when given --mine-only or --theirs-only
125
                             self.run_bzr('missing ../a --theirs-only')[0])
1185.55.1 by Wouter van Heyst
Add testcase for missing command, improved with feedback from Robert
126
2193.4.1 by Alexander Belchenko
'bzr missing' without specifying location show remembered location unescaped
127
    def test_missing_check_last_location(self):
128
        # check that last location shown as filepath not file URL
129
130
        # create a source branch
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
131
        wt = self.make_branch_and_tree('a')
2193.4.3 by Alexander Belchenko
Use new API for testing
132
        b = wt.branch
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
133
        self.build_tree(['a/foo'])
2193.4.3 by Alexander Belchenko
Use new API for testing
134
        wt.add('foo')
135
        wt.commit('initial')
136
2664.14.2 by Daniel Watkins
Fixed tests.blackbox.test_missing to use internals where appropriate.
137
        os.chdir('a')
2193.4.3 by Alexander Belchenko
Use new API for testing
138
        location = osutils.getcwd() + '/'
139
2193.4.1 by Alexander Belchenko
'bzr missing' without specifying location show remembered location unescaped
140
        # clone
2193.4.3 by Alexander Belchenko
Use new API for testing
141
        b.bzrdir.sprout('../b')
2193.4.1 by Alexander Belchenko
'bzr missing' without specifying location show remembered location unescaped
142
143
        # check last location
2193.4.3 by Alexander Belchenko
Use new API for testing
144
        lines, err = self.run_bzr('missing', working_dir='../b')
3596.3.1 by James Westby
Give the user a bit more information about which saved location is being used.
145
        self.assertEquals('Using saved parent location: %s\n'
2193.4.1 by Alexander Belchenko
'bzr missing' without specifying location show remembered location unescaped
146
                          'Branches are up to date.\n' % location,
147
                          lines)
2193.4.3 by Alexander Belchenko
Use new API for testing
148
        self.assertEquals('', err)