~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-06-12 02:17:42 UTC
  • mfrom: (2521.1.1 56322)
  • Revision ID: pqm@pqm.ubuntu.com-20070612021742-uetsy3g747iq3xkk
mergeĀ initĀ --create-prefix

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 by Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
2
2
# -*- coding: utf-8 -*-
3
3
#
4
4
# This program is free software; you can redistribute it and/or modify
22
22
 
23
23
import bzrlib
24
24
from bzrlib.tests.blackbox import ExternalBase
25
 
from bzrlib.tests import TestCaseInTempDir
 
25
from bzrlib.tests import TestCaseInTempDir, TestCaseWithTransport
26
26
 
27
27
 
28
28
class TestLog(ExternalBase):
29
29
 
30
 
    def _prepare(self):
31
 
        self.runbzr("init")
 
30
    def _prepare(self, format=None):
 
31
        if format:
 
32
            self.runbzr("init --format="+format)
 
33
        else:
 
34
            self.runbzr("init")
32
35
        self.build_tree(['hello.txt', 'goodbye.txt', 'meep.txt'])
33
36
        self.runbzr("add hello.txt")
34
37
        self.runbzr("commit -m message1 hello.txt")
108
111
        self.assertTrue('branch nick: branch2\n' in log)
109
112
        self.assertTrue('branch nick: branch1\n' not in log)
110
113
        
 
114
    def test_log_nonexistent_file(self):
 
115
        # files that don't exist in either the basis tree or working tree
 
116
        # should give an error
 
117
        wt = self.make_branch_and_tree('.')
 
118
        out, err = self.run_bzr('log', 'does-not-exist', retcode=3)
 
119
        self.assertContainsRe(
 
120
            err, 'Path does not have any revision history: does-not-exist')
 
121
 
 
122
    def test_log_with_tags(self):
 
123
        self._prepare(format='dirstate-tags')
 
124
        self.runbzr('tag -r1 tag1')
 
125
        self.runbzr('tag -r1 tag1.1')
 
126
        self.runbzr('tag tag3')
 
127
        
 
128
        log = self.runbzr("log -r-1")[0]
 
129
        self.assertTrue('tags: tag3' in log)
 
130
 
 
131
        log = self.runbzr("log -r1")[0]
 
132
        # I guess that we can't know the order of tags in the output
 
133
        # since dicts are unordered, need to check both possibilities
 
134
        self.assertContainsRe(log, r'tags: (tag1, tag1\.1|tag1\.1, tag1)')
 
135
 
 
136
    def test_merged_log_with_tags(self):
 
137
        os.mkdir('branch1')
 
138
        os.chdir('branch1')
 
139
        self._prepare(format='dirstate-tags')
 
140
        os.chdir('..')
 
141
        self.runbzr('branch branch1 branch2')
 
142
        os.chdir('branch1')
 
143
        self.runbzr('commit -m foobar --unchanged')
 
144
        self.runbzr('tag tag1')
 
145
        os.chdir('../branch2')
 
146
        self.runbzr('merge ../branch1')
 
147
        self.runbzr('commit -m merge_branch_1')
 
148
        log = self.runbzr("log -r-1")[0]
 
149
        self.assertContainsRe(log, r'    tags: tag1')
 
150
 
 
151
    def test_log_limit(self):
 
152
        self._prepare()
 
153
        log = self.runbzr("log --limit 2")[0]
 
154
        self.assertTrue('revno: 1\n' not in log)
 
155
        self.assertTrue('revno: 2\n' in log)
 
156
        self.assertTrue('revno: 3\n' in log)
 
157
 
111
158
 
112
159
class TestLogMerges(ExternalBase):
113
160
 
136
183
#message:
137
184
#  merge branch 1
138
185
#    ------------------------------------------------------------
 
186
#    revno: 1.1.2  
139
187
#    merged: foo@example.com-20060328113140-91f43cfb46dc2863
140
188
#    committer: Robert Collins <foo@example.com>
141
189
#    branch nick: child
143
191
#    message:
144
192
#      merge branch 2
145
193
#        ------------------------------------------------------------
 
194
#        revno: 1.1.1.1
146
195
#        merged: foo@example.com-20060328113140-1ba24f850a0ef573
147
196
#        committer: Robert Collins <foo@example.com>
148
197
#        branch nick: smallerchild
150
199
#        message:
151
200
#          branch 2
152
201
#    ------------------------------------------------------------
 
202
#    revno: 1.1.1
153
203
#    merged: foo@example.com-20060328113140-5749a4757a8ac792
154
204
#    committer: Robert Collins <foo@example.com>
155
205
#    branch nick: child
165
215
#  first post
166
216
#""", out)
167
217
        # but we dont have a nice pattern matcher hooked up yet, so:
168
 
        # we check for the indenting of the commit message:
 
218
        # we check for the indenting of the commit message and the 
 
219
        # revision numbers 
 
220
        self.assertTrue('revno: 2' in out)
169
221
        self.assertTrue('  merge branch 1' in out)
 
222
        self.assertTrue('    revno: 1.1.2' in out)
170
223
        self.assertTrue('      merge branch 2' in out)
 
224
        self.assertTrue('        revno: 1.1.1.1' in out)
171
225
        self.assertTrue('          branch 2' in out)
 
226
        self.assertTrue('    revno: 1.1.1' in out)
172
227
        self.assertTrue('      branch 1' in out)
 
228
        self.assertTrue('revno: 1' in out)
173
229
        self.assertTrue('  first post' in out)
174
230
        self.assertEqual('', err)
175
231
 
274
330
        # Make sure the cp1251 string is not found anywhere
275
331
        self.assertEquals(-1, stdout.find(test_in_cp1251))
276
332
 
 
333
 
 
334
class TestLogFile(TestCaseWithTransport):
 
335
 
 
336
    def test_log_local_branch_file(self):
 
337
        """We should be able to log files in local treeless branches"""
 
338
        tree = self.make_branch_and_tree('tree')
 
339
        self.build_tree(['tree/file'])
 
340
        tree.add('file')
 
341
        tree.commit('revision 1')
 
342
        tree.bzrdir.destroy_workingtree()
 
343
        self.run_bzr('log', 'tree/file')
 
344
 
 
345
    def test_log_file(self):
 
346
        """The log for a particular file should only list revs for that file"""
 
347
        tree = self.make_branch_and_tree('parent')
 
348
        self.build_tree(['parent/file1', 'parent/file2', 'parent/file3'])
 
349
        tree.add('file1')
 
350
        tree.commit('add file1')
 
351
        tree.add('file2')
 
352
        tree.commit('add file2')
 
353
        tree.add('file3')
 
354
        tree.commit('add file3')
 
355
        self.run_bzr('branch', 'parent', 'child')
 
356
        print >> file('child/file2', 'wb'), 'hello'
 
357
        self.run_bzr('commit', '-m', 'branch 1', 'child')
 
358
        os.chdir('parent')
 
359
        self.run_bzr('merge', '../child')
 
360
        self.run_bzr('commit', '-m', 'merge child branch')
 
361
        
 
362
        log = self.run_bzr('log', 'file1')[0]
 
363
        self.assertContainsRe(log, 'revno: 1\n')
 
364
        self.assertNotContainsRe(log, 'revno: 2\n')
 
365
        self.assertNotContainsRe(log, 'revno: 3\n')
 
366
        self.assertNotContainsRe(log, 'revno: 3.1.1\n')
 
367
        self.assertNotContainsRe(log, 'revno: 4\n')
 
368
        log = self.run_bzr('log', 'file2')[0]
 
369
        self.assertNotContainsRe(log, 'revno: 1\n')
 
370
        self.assertContainsRe(log, 'revno: 2\n')
 
371
        self.assertNotContainsRe(log, 'revno: 3\n')
 
372
        self.assertContainsRe(log, 'revno: 3.1.1\n')
 
373
        self.assertContainsRe(log, 'revno: 4\n')
 
374
        log = self.run_bzr('log', 'file3')[0]
 
375
        self.assertNotContainsRe(log, 'revno: 1\n')
 
376
        self.assertNotContainsRe(log, 'revno: 2\n')
 
377
        self.assertContainsRe(log, 'revno: 3\n')
 
378
        self.assertNotContainsRe(log, 'revno: 3.1.1\n')
 
379
        self.assertNotContainsRe(log, 'revno: 4\n')