~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: John Arbash Meinel
  • Date: 2008-08-25 21:50:11 UTC
  • mfrom: (0.11.3 tools)
  • mto: This revision was merged to the branch mainline in revision 3659.
  • Revision ID: john@arbash-meinel.com-20080825215011-de9esmzgkue3e522
Merge in Lukáš's helper scripts.
Update the packaging documents to describe how to do the releases
using bzr-builddeb to package all distro platforms
simultaneously.

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
    )
 
29
from bzrlib.tests import test_log
 
30
 
 
31
 
 
32
class TestCaseWithoutPropsHandler(ExternalBase, test_log.TestCaseWithoutPropsHandler):
 
33
    pass
26
34
 
27
35
 
28
36
class TestLog(ExternalBase):
60
68
    def test_log_null_both_revspecs(self):
61
69
        self._prepare()
62
70
        log = self.run_bzr("log -r ..")[0]
63
 
        self.assertEquals(self.full_log, log)
64
71
        self.assertEqualDiff(self.full_log, log)
65
72
 
 
73
    def test_log_zero_revspec(self):
 
74
        self._prepare()
 
75
        self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
 
76
                           ['log', '-r0'])
 
77
 
 
78
    def test_log_zero_begin_revspec(self):
 
79
        self._prepare()
 
80
        self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
 
81
                           ['log', '-r0..2'])
 
82
 
 
83
    def test_log_zero_end_revspec(self):
 
84
        self._prepare()
 
85
        self.run_bzr_error('bzr: ERROR: Logging revision 0 is invalid.',
 
86
                           ['log', '-r-2..0'])
 
87
 
 
88
    def test_log_unsupported_timezone(self):
 
89
        self._prepare()
 
90
        self.run_bzr_error('bzr: ERROR: Unsupported timezone format "foo", '
 
91
                           'options are "utc", "original", "local".',
 
92
                           ['log', '--timezone', 'foo'])
 
93
 
66
94
    def test_log_negative_begin_revspec_full_log(self):
67
95
        self._prepare()
68
96
        log = self.run_bzr("log -r -3..")[0]
87
115
        self.assertTrue('revno: 2\n' in log)
88
116
        self.assertTrue('revno: 3\n' in log)
89
117
 
90
 
    def test_log_postive_revspecs(self):
 
118
    def test_log_positive_revspecs(self):
91
119
        self._prepare()
92
120
        log = self.run_bzr("log -r 1..3")[0]
93
121
        self.assertEqualDiff(self.full_log, log)
151
179
    def test_log_limit(self):
152
180
        self._prepare()
153
181
        log = self.run_bzr("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
 
 
158
 
class TestLogMerges(ExternalBase):
 
182
        self.assertNotContainsRe(log, r'revno: 1\n')
 
183
        self.assertContainsRe(log, r'revno: 2\n')
 
184
        self.assertContainsRe(log, r'revno: 3\n')
 
185
 
 
186
    def test_log_limit_short(self):
 
187
        self._prepare()
 
188
        log = self.run_bzr("log -l 2")[0]
 
189
        self.assertNotContainsRe(log, r'revno: 1\n')
 
190
        self.assertContainsRe(log, r'revno: 2\n')
 
191
        self.assertContainsRe(log, r'revno: 3\n')
 
192
 
 
193
 
 
194
class TestLogMerges(TestCaseWithoutPropsHandler):
159
195
 
160
196
    def _prepare(self):
161
197
        parent_tree = self.make_branch_and_tree('parent')
174
210
    def test_merges_are_indented_by_level(self):
175
211
        self._prepare()
176
212
        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
213
        self.assertEqual('', err)
 
214
        log = normalize_log(out)
 
215
        self.assertEqualDiff(log, """\
 
216
------------------------------------------------------------
 
217
revno: 2
 
218
committer: Lorem Ipsum <test@example.com>
 
219
branch nick: parent
 
220
timestamp: Just now
 
221
message:
 
222
  merge branch 1
 
223
    ------------------------------------------------------------
 
224
    revno: 1.1.2
 
225
    committer: Lorem Ipsum <test@example.com>
 
226
    branch nick: child
 
227
    timestamp: Just now
 
228
    message:
 
229
      merge branch 2
 
230
        ------------------------------------------------------------
 
231
        revno: 1.2.1
 
232
        committer: Lorem Ipsum <test@example.com>
 
233
        branch nick: smallerchild
 
234
        timestamp: Just now
 
235
        message:
 
236
          branch 2
 
237
    ------------------------------------------------------------
 
238
    revno: 1.1.1
 
239
    committer: Lorem Ipsum <test@example.com>
 
240
    branch nick: child
 
241
    timestamp: Just now
 
242
    message:
 
243
      branch 1
 
244
------------------------------------------------------------
 
245
revno: 1
 
246
committer: Lorem Ipsum <test@example.com>
 
247
branch nick: parent
 
248
timestamp: Just now
 
249
message:
 
250
  first post
 
251
""")
229
252
 
230
253
    def test_merges_single_merge_rev(self):
231
254
        self._prepare()
232
255
        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
256
        self.assertEqual('', err)
 
257
        log = normalize_log(out)
 
258
        self.assertEqualDiff(log, """\
 
259
------------------------------------------------------------
 
260
revno: 1.1.2
 
261
committer: Lorem Ipsum <test@example.com>
 
262
branch nick: child
 
263
timestamp: Just now
 
264
message:
 
265
  merge branch 2
 
266
    ------------------------------------------------------------
 
267
    revno: 1.2.1
 
268
    committer: Lorem Ipsum <test@example.com>
 
269
    branch nick: smallerchild
 
270
    timestamp: Just now
 
271
    message:
 
272
      branch 2
 
273
""")
264
274
 
265
275
    def test_merges_partial_range(self):
266
276
        self._prepare()
267
277
        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
278
        self.assertEqual('', err)
 
279
        log = normalize_log(out)
 
280
        self.assertEqualDiff(log, """\
 
281
------------------------------------------------------------
 
282
revno: 1.1.2
 
283
committer: Lorem Ipsum <test@example.com>
 
284
branch nick: child
 
285
timestamp: Just now
 
286
message:
 
287
  merge branch 2
 
288
    ------------------------------------------------------------
 
289
    revno: 1.2.1
 
290
    committer: Lorem Ipsum <test@example.com>
 
291
    branch nick: smallerchild
 
292
    timestamp: Just now
 
293
    message:
 
294
      branch 2
 
295
------------------------------------------------------------
 
296
revno: 1.1.1
 
297
committer: Lorem Ipsum <test@example.com>
 
298
branch nick: child
 
299
timestamp: Just now
 
300
message:
 
301
  branch 1
 
302
""")
 
303
 
 
304
    def test_merges_nonsupporting_formatter(self):
 
305
        self._prepare()
 
306
        err_msg = 'Selected log formatter only supports mainline revisions.'
 
307
        # The single revision case is tested in the core tests
 
308
        # since all standard formatters support single merge revisions.
 
309
        out,err = self.run_bzr('log --short -r1..1.1.2', retcode=3)
 
310
        self.assertContainsRe(err, err_msg)
 
311
        out,err = self.run_bzr('log --short -r1.1.1..1.1.2', retcode=3)
 
312
        self.assertContainsRe(err, err_msg)
306
313
 
307
314
 
308
315
class TestLogEncodings(TestCaseInTempDir):