~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Alexander Belchenko
  • Date: 2006-07-30 16:43:12 UTC
  • mto: (1711.2.111 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 1906.
  • Revision ID: bialix@ukr.net-20060730164312-b025fd3ff0cee59e
rename  gpl.txt => COPYING.txt

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
 
1
# Copyright (C) 2005 by 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, TestCaseWithTransport
 
25
from bzrlib.tests import TestCaseInTempDir
26
26
 
27
27
 
28
28
class TestLog(ExternalBase):
29
29
 
30
 
    def _prepare(self, format=None):
31
 
        if format:
32
 
            self.runbzr("init --format="+format)
33
 
        else:
34
 
            self.runbzr("init")
 
30
    def _prepare(self):
 
31
        self.runbzr("init")
35
32
        self.build_tree(['hello.txt', 'goodbye.txt', 'meep.txt'])
36
33
        self.runbzr("add hello.txt")
37
34
        self.runbzr("commit -m message1 hello.txt")
92
89
        log = self.runbzr("log -r 1..3")[0]
93
90
        self.assertEquals(self.full_log, log)
94
91
 
95
 
    def test_log_revno_n_path(self):
96
 
        os.mkdir('branch1')
97
 
        os.chdir('branch1')
98
 
        self._prepare()
99
 
        os.chdir('..')
100
 
        os.mkdir('branch2')
101
 
        os.chdir('branch2')
102
 
        self._prepare()
103
 
        os.chdir('..')
104
 
        log = self.runbzr("log -r revno:2:branch1..revno:3:branch2",
105
 
                          retcode=3)[0]
106
 
        log = self.runbzr("log -r revno:1:branch2..revno:3:branch2")[0]
107
 
        self.assertEquals(self.full_log, log)
108
 
        log = self.runbzr("log -r revno:1:branch2")[0]
109
 
        self.assertTrue('revno: 1\n' in log)
110
 
        self.assertTrue('revno: 2\n' not in log)
111
 
        self.assertTrue('branch nick: branch2\n' in log)
112
 
        self.assertTrue('branch nick: branch1\n' not in log)
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
92
 
152
93
class TestLogMerges(ExternalBase):
153
94
 
176
117
#message:
177
118
#  merge branch 1
178
119
#    ------------------------------------------------------------
179
 
#    revno: 1.1.2  
180
120
#    merged: foo@example.com-20060328113140-91f43cfb46dc2863
181
121
#    committer: Robert Collins <foo@example.com>
182
122
#    branch nick: child
184
124
#    message:
185
125
#      merge branch 2
186
126
#        ------------------------------------------------------------
187
 
#        revno: 1.1.1.1
188
127
#        merged: foo@example.com-20060328113140-1ba24f850a0ef573
189
128
#        committer: Robert Collins <foo@example.com>
190
129
#        branch nick: smallerchild
192
131
#        message:
193
132
#          branch 2
194
133
#    ------------------------------------------------------------
195
 
#    revno: 1.1.1
196
134
#    merged: foo@example.com-20060328113140-5749a4757a8ac792
197
135
#    committer: Robert Collins <foo@example.com>
198
136
#    branch nick: child
208
146
#  first post
209
147
#""", out)
210
148
        # but we dont have a nice pattern matcher hooked up yet, so:
211
 
        # we check for the indenting of the commit message and the 
212
 
        # revision numbers 
213
 
        self.assertTrue('revno: 2' in out)
 
149
        # we check for the indenting of the commit message:
214
150
        self.assertTrue('  merge branch 1' in out)
215
 
        self.assertTrue('    revno: 1.1.2' in out)
216
151
        self.assertTrue('      merge branch 2' in out)
217
 
        self.assertTrue('        revno: 1.1.1.1' in out)
218
152
        self.assertTrue('          branch 2' in out)
219
 
        self.assertTrue('    revno: 1.1.1' in out)
220
153
        self.assertTrue('      branch 1' in out)
221
 
        self.assertTrue('revno: 1' in out)
222
154
        self.assertTrue('  first post' in out)
223
155
        self.assertEqual('', err)
224
156
 
323
255
        # Make sure the cp1251 string is not found anywhere
324
256
        self.assertEquals(-1, stdout.find(test_in_cp1251))
325
257
 
326
 
 
327
 
class TestLogFile(TestCaseWithTransport):
328
 
 
329
 
    def test_log_local_branch_file(self):
330
 
        """We should be able to log files in local treeless branches"""
331
 
        tree = self.make_branch_and_tree('tree')
332
 
        self.build_tree(['tree/file'])
333
 
        tree.add('file')
334
 
        tree.commit('revision 1')
335
 
        tree.bzrdir.destroy_workingtree()
336
 
        self.run_bzr('log', 'tree/file')
337
 
 
338
 
    def test_log_file(self):
339
 
        """The log for a particular file should only list revs for that file"""
340
 
        tree = self.make_branch_and_tree('parent')
341
 
        self.build_tree(['parent/file1', 'parent/file2', 'parent/file3'])
342
 
        tree.add('file1')
343
 
        tree.commit('add file1')
344
 
        tree.add('file2')
345
 
        tree.commit('add file2')
346
 
        tree.add('file3')
347
 
        tree.commit('add file3')
348
 
        self.run_bzr('branch', 'parent', 'child')
349
 
        print >> file('child/file2', 'wb'), 'hello'
350
 
        self.run_bzr('commit', '-m', 'branch 1', 'child')
351
 
        os.chdir('parent')
352
 
        self.run_bzr('merge', '../child')
353
 
        self.run_bzr('commit', '-m', 'merge child branch')
354
 
        
355
 
        log = self.run_bzr('log', 'file1')[0]
356
 
        self.assertContainsRe(log, 'revno: 1\n')
357
 
        self.assertNotContainsRe(log, 'revno: 2\n')
358
 
        self.assertNotContainsRe(log, 'revno: 3\n')
359
 
        self.assertNotContainsRe(log, 'revno: 3.1.1\n')
360
 
        self.assertNotContainsRe(log, 'revno: 4\n')
361
 
        log = self.run_bzr('log', 'file2')[0]
362
 
        self.assertNotContainsRe(log, 'revno: 1\n')
363
 
        self.assertContainsRe(log, 'revno: 2\n')
364
 
        self.assertNotContainsRe(log, 'revno: 3\n')
365
 
        self.assertContainsRe(log, 'revno: 3.1.1\n')
366
 
        self.assertContainsRe(log, 'revno: 4\n')
367
 
        log = self.run_bzr('log', 'file3')[0]
368
 
        self.assertNotContainsRe(log, 'revno: 1\n')
369
 
        self.assertNotContainsRe(log, 'revno: 2\n')
370
 
        self.assertContainsRe(log, 'revno: 3\n')
371
 
        self.assertNotContainsRe(log, 'revno: 3.1.1\n')
372
 
        self.assertNotContainsRe(log, 'revno: 4\n')