~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: 2007-11-19 22:54:30 UTC
  • mfrom: (3006 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3008.
  • Revision ID: bialix@ukr.net-20071119225430-x0ewosrsagis0yno
merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
import bzrlib
24
24
from bzrlib.tests.blackbox import ExternalBase
25
25
from bzrlib.tests import TestCaseInTempDir, TestCaseWithTransport
 
26
from bzrlib.tests.test_log import (
 
27
    normalize_log,
 
28
    )
26
29
 
27
30
 
28
31
class TestLog(ExternalBase):
60
63
    def test_log_null_both_revspecs(self):
61
64
        self._prepare()
62
65
        log = self.run_bzr("log -r ..")[0]
63
 
        self.assertEquals(self.full_log, log)
64
66
        self.assertEqualDiff(self.full_log, log)
65
67
 
 
68
    def test_log_zero_revspec(self):
 
69
        self._prepare()
 
70
        self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
 
71
                           ['log', '-r0'])
 
72
 
 
73
    def test_log_zero_begin_revspec(self):
 
74
        self._prepare()
 
75
        self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
 
76
                           ['log', '-r0..2'])
 
77
 
 
78
    def test_log_zero_end_revspec(self):
 
79
        self._prepare()
 
80
        self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
 
81
                           ['log', '-r-2..0'])
 
82
 
66
83
    def test_log_negative_begin_revspec_full_log(self):
67
84
        self._prepare()
68
85
        log = self.run_bzr("log -r -3..")[0]
87
104
        self.assertTrue('revno: 2\n' in log)
88
105
        self.assertTrue('revno: 3\n' in log)
89
106
 
90
 
    def test_log_postive_revspecs(self):
 
107
    def test_log_positive_revspecs(self):
91
108
        self._prepare()
92
109
        log = self.run_bzr("log -r 1..3")[0]
93
110
        self.assertEqualDiff(self.full_log, log)
174
191
    def test_merges_are_indented_by_level(self):
175
192
        self._prepare()
176
193
        out,err = self.run_bzr('log')
177
 
        # the log will look something like:
178
 
#        self.assertEqual("""\
179
 
#------------------------------------------------------------
180
 
#revno: 2
181
 
#committer: Robert Collins <foo@example.com>
182
 
#branch nick: parent
183
 
#timestamp: Tue 2006-03-28 22:31:40 +1100
184
 
#message:
185
 
#  merge branch 1
186
 
#    ------------------------------------------------------------
187
 
#    revno: 1.1.2  
188
 
#    committer: Robert Collins <foo@example.com>
189
 
#    branch nick: child
190
 
#    timestamp: Tue 2006-03-28 22:31:40 +1100
191
 
#    message:
192
 
#      merge branch 2
193
 
#        ------------------------------------------------------------
194
 
#        revno: 1.1.1.1
195
 
#        committer: Robert Collins <foo@example.com>
196
 
#        branch nick: smallerchild
197
 
#        timestamp: Tue 2006-03-28 22:31:40 +1100
198
 
#        message:
199
 
#          branch 2
200
 
#    ------------------------------------------------------------
201
 
#    revno: 1.1.1
202
 
#    committer: Robert Collins <foo@example.com>
203
 
#    branch nick: child
204
 
#    timestamp: Tue 2006-03-28 22:31:40 +1100
205
 
#    message:
206
 
#      branch 1
207
 
#------------------------------------------------------------
208
 
#revno: 1
209
 
#committer: Robert Collins <foo@example.com>
210
 
#branch nick: parent
211
 
#timestamp: Tue 2006-03-28 22:31:39 +1100
212
 
#message:
213
 
#  first post
214
 
#""", out)
215
 
        # but we dont have a nice pattern matcher hooked up yet, so:
216
 
        # we check for the indenting of the commit message and the 
217
 
        # revision numbers 
218
 
        self.assertTrue('revno: 2' in out)
219
 
        self.assertTrue('  merge branch 1' in out)
220
 
        self.assertTrue('    revno: 1.1.2' in out)
221
 
        self.assertTrue('      merge branch 2' in out)
222
 
        self.assertTrue('        revno: 1.1.1.1' in out)
223
 
        self.assertTrue('          branch 2' in out)
224
 
        self.assertTrue('    revno: 1.1.1' in out)
225
 
        self.assertTrue('      branch 1' in out)
226
 
        self.assertTrue('revno: 1\n' in out)
227
 
        self.assertTrue('  first post' in out)
228
194
        self.assertEqual('', err)
 
195
        log = normalize_log(out)
 
196
        self.assertEqualDiff(log, """\
 
197
------------------------------------------------------------
 
198
revno: 2
 
199
committer: Lorem Ipsum <test@example.com>
 
200
branch nick: parent
 
201
timestamp: Just now
 
202
message:
 
203
  merge branch 1
 
204
    ------------------------------------------------------------
 
205
    revno: 1.1.2
 
206
    committer: Lorem Ipsum <test@example.com>
 
207
    branch nick: child
 
208
    timestamp: Just now
 
209
    message:
 
210
      merge branch 2
 
211
        ------------------------------------------------------------
 
212
        revno: 1.1.1.1.1
 
213
        committer: Lorem Ipsum <test@example.com>
 
214
        branch nick: smallerchild
 
215
        timestamp: Just now
 
216
        message:
 
217
          branch 2
 
218
    ------------------------------------------------------------
 
219
    revno: 1.1.1
 
220
    committer: Lorem Ipsum <test@example.com>
 
221
    branch nick: child
 
222
    timestamp: Just now
 
223
    message:
 
224
      branch 1
 
225
------------------------------------------------------------
 
226
revno: 1
 
227
committer: Lorem Ipsum <test@example.com>
 
228
branch nick: parent
 
229
timestamp: Just now
 
230
message:
 
231
  first post
 
232
""")
229
233
 
230
234
    def test_merges_single_merge_rev(self):
231
235
        self._prepare()
232
236
        out,err = self.run_bzr('log -r1.1.2')
233
 
        # the log will look something like:
234
 
#        self.assertEqual("""\
235
 
#------------------------------------------------------------
236
 
#revno: 1.1.2  
237
 
#committer: Robert Collins <foo@example.com>
238
 
#branch nick: child
239
 
#timestamp: Tue 2006-03-28 22:31:40 +1100
240
 
#message:
241
 
#  merge branch 2
242
 
#    ------------------------------------------------------------
243
 
#    revno: 1.1.1.1
244
 
#    committer: Robert Collins <foo@example.com>
245
 
#    branch nick: smallerchild
246
 
#    timestamp: Tue 2006-03-28 22:31:40 +1100
247
 
#    message:
248
 
#      branch 2
249
 
#""", out)
250
 
        # but we dont have a nice pattern matcher hooked up yet, so:
251
 
        # we check for the indenting of the commit message and the 
252
 
        # revision numbers 
253
 
        self.assertTrue('revno: 2' not in out)
254
 
        self.assertTrue('  merge branch 1' not in out)
255
 
        self.assertTrue('revno: 1.1.2' in out)
256
 
        self.assertTrue('  merge branch 2' in out)
257
 
        self.assertTrue('    revno: 1.1.1.1' in out)
258
 
        self.assertTrue('      branch 2' in out)
259
 
        self.assertTrue('revno: 1.1.1\n' not in out)
260
 
        self.assertTrue('  branch 1' not in out)
261
 
        self.assertTrue('revno: 1\n' not in out)
262
 
        self.assertTrue('  first post' not in out)
263
237
        self.assertEqual('', err)
 
238
        log = normalize_log(out)
 
239
        self.assertEqualDiff(log, """\
 
240
------------------------------------------------------------
 
241
revno: 1.1.2
 
242
committer: Lorem Ipsum <test@example.com>
 
243
branch nick: child
 
244
timestamp: Just now
 
245
message:
 
246
  merge branch 2
 
247
    ------------------------------------------------------------
 
248
    revno: 1.1.1.1.1
 
249
    committer: Lorem Ipsum <test@example.com>
 
250
    branch nick: smallerchild
 
251
    timestamp: Just now
 
252
    message:
 
253
      branch 2
 
254
""")
264
255
 
265
256
    def test_merges_partial_range(self):
266
257
        self._prepare()
267
258
        out,err = self.run_bzr('log -r1.1.1..1.1.2')
268
 
        # the log will look something like:
269
 
#        self.assertEqual("""\
270
 
#------------------------------------------------------------
271
 
#revno: 1.1.2  
272
 
#committer: Robert Collins <foo@example.com>
273
 
#branch nick: child
274
 
#timestamp: Tue 2006-03-28 22:31:40 +1100
275
 
#message:
276
 
#  merge branch 2
277
 
#    ------------------------------------------------------------
278
 
#    revno: 1.1.1.1
279
 
#    committer: Robert Collins <foo@example.com>
280
 
#    branch nick: smallerchild
281
 
#    timestamp: Tue 2006-03-28 22:31:40 +1100
282
 
#    message:
283
 
#      branch 2
284
 
#------------------------------------------------------------
285
 
#revno: 1.1.1
286
 
#committer: Robert Collins <foo@example.com>
287
 
#branch nick: child
288
 
#timestamp: Tue 2006-03-28 22:31:40 +1100
289
 
#message:
290
 
#  branch 1
291
 
#""", out)
292
 
        # but we dont have a nice pattern matcher hooked up yet, so:
293
 
        # we check for the indenting of the commit message and the 
294
 
        # revision numbers 
295
 
        self.assertTrue('revno: 2' not in out)
296
 
        self.assertTrue('  merge branch 1' not in out)
297
 
        self.assertTrue('revno: 1.1.2' in out)
298
 
        self.assertTrue('  merge branch 2' in out)
299
 
        self.assertTrue('    revno: 1.1.1.1' in out)
300
 
        self.assertTrue('      branch 2' in out)
301
 
        self.assertTrue('revno: 1.1.1' in out)
302
 
        self.assertTrue('  branch 1' in out)
303
 
        self.assertTrue('revno: 1\n' not in out)
304
 
        self.assertTrue('  first post' not in out)
305
259
        self.assertEqual('', err)
 
260
        log = normalize_log(out)
 
261
        self.assertEqualDiff(log, """\
 
262
------------------------------------------------------------
 
263
revno: 1.1.2
 
264
committer: Lorem Ipsum <test@example.com>
 
265
branch nick: child
 
266
timestamp: Just now
 
267
message:
 
268
  merge branch 2
 
269
    ------------------------------------------------------------
 
270
    revno: 1.1.1.1.1
 
271
    committer: Lorem Ipsum <test@example.com>
 
272
    branch nick: smallerchild
 
273
    timestamp: Just now
 
274
    message:
 
275
      branch 2
 
276
------------------------------------------------------------
 
277
revno: 1.1.1
 
278
committer: Lorem Ipsum <test@example.com>
 
279
branch nick: child
 
280
timestamp: Just now
 
281
message:
 
282
  branch 1
 
283
""")
 
284
 
 
285
    def test_merges_nonsupporting_formatter(self):
 
286
        self._prepare()
 
287
        err_msg = 'Selected log formatter only supports mainline revisions.'
 
288
        out,err = self.run_bzr('log --short -r1.1.2', retcode=3)
 
289
        self.assertContainsRe(err, err_msg)
 
290
        out,err = self.run_bzr('log --short -r1..1.1.2', retcode=3)
 
291
        self.assertContainsRe(err, err_msg)
 
292
        out,err = self.run_bzr('log --short -r1.1.1..1.1.2', retcode=3)
 
293
        self.assertContainsRe(err, err_msg)
306
294
 
307
295
 
308
296
class TestLogEncodings(TestCaseInTempDir):