~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Vincent Ladeuil
  • Date: 2008-01-03 08:49:38 UTC
  • mfrom: (3111.1.31 175524)
  • mto: This revision was merged to the branch mainline in revision 3158.
  • Revision ID: v.ladeuil+lp@free.fr-20080103084938-7kvurk5uvde2ui54
Fix bug #175524, http test servers are 1.1 compliant

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
import sys
29
29
from tempfile import TemporaryFile
30
30
 
31
 
from bzrlib import bzrdir, errors
 
31
from bzrlib import (
 
32
    bzrdir,
 
33
    conflicts,
 
34
    errors,
 
35
    )
32
36
import bzrlib.branch
33
 
from bzrlib.builtins import merge
34
37
from bzrlib.osutils import pathjoin
35
38
from bzrlib.revisionspec import RevisionSpec
36
39
from bzrlib.status import show_tree_status
141
144
        b_2 = b_2_dir.open_branch()
142
145
        wt2 = b_2_dir.open_workingtree()
143
146
        wt.commit(u"\N{TIBETAN DIGIT TWO} Empty commit 2")
144
 
        merge(["./branch", -1], [None, None], this_dir = './copy')
 
147
        wt2.merge_from_branch(wt.branch)
145
148
        message = self.status_string(wt2)
146
149
        self.assertStartsWith(message, "pending merges:\n")
147
150
        self.assertEndsWith(message, "Empty commit 2\n")
149
152
        # must be long to make sure we see elipsis at the end
150
153
        wt.commit("Empty commit 3 " +
151
154
                   "blah blah blah blah " * 100)
152
 
        merge(["./branch", -1], [None, None], this_dir = './copy')
 
155
        wt2.merge_from_branch(wt.branch)
153
156
        message = self.status_string(wt2)
154
157
        self.assertStartsWith(message, "pending merges:\n")
155
158
        self.assert_("Empty commit 3" in message)
158
161
    def test_tree_status_ignores(self):
159
162
        """Tests branch status with ignores"""
160
163
        wt = self.make_branch_and_tree('.')
161
 
        self.run_bzr('ignore', '*~')
 
164
        self.run_bzr('ignore *~')
162
165
        wt.commit('commit .bzrignore')
163
166
        self.build_tree(['foo.c', 'foo.c~'])
164
167
        self.assertStatus([
227
230
        tof.seek(0)
228
231
        self.assertEquals(tof.readlines(), ['?   dir2/\n'])
229
232
 
 
233
        tof = StringIO()
 
234
        revs = [RevisionSpec.from_string('0'), RevisionSpec.from_string('1')]
 
235
        show_tree_status(wt, specific_files=['test.c'], to_file=tof,
 
236
                         short=True, revision=revs)
 
237
        tof.seek(0)
 
238
        self.assertEquals(tof.readlines(), ['+N  test.c\n'])
 
239
 
 
240
    def test_specific_files_conflicts(self):
 
241
        tree = self.make_branch_and_tree('.')
 
242
        self.build_tree(['dir2/'])
 
243
        tree.add('dir2')
 
244
        tree.commit('added dir2')
 
245
        tree.set_conflicts(conflicts.ConflictList(
 
246
            [conflicts.ContentsConflict('foo')]))
 
247
        tof = StringIO()
 
248
        show_tree_status(tree, specific_files=['dir2'], to_file=tof)
 
249
        self.assertEqualDiff('', tof.getvalue())
 
250
        tree.set_conflicts(conflicts.ConflictList(
 
251
            [conflicts.ContentsConflict('dir2')]))
 
252
        tof = StringIO()
 
253
        show_tree_status(tree, specific_files=['dir2'], to_file=tof)
 
254
        self.assertEqualDiff('conflicts:\n  Contents conflict in dir2\n',
 
255
                             tof.getvalue())
 
256
 
 
257
        tree.set_conflicts(conflicts.ConflictList(
 
258
            [conflicts.ContentsConflict('dir2/file1')]))
 
259
        tof = StringIO()
 
260
        show_tree_status(tree, specific_files=['dir2'], to_file=tof)
 
261
        self.assertEqualDiff('conflicts:\n  Contents conflict in dir2/file1\n',
 
262
                             tof.getvalue())
 
263
 
230
264
    def test_status_nonexistent_file(self):
231
265
        # files that don't exist in either the basis tree or working tree
232
266
        # should give an error
233
267
        wt = self.make_branch_and_tree('.')
234
 
        out, err = self.run_bzr('status', 'does-not-exist', retcode=3)
 
268
        out, err = self.run_bzr('status does-not-exist', retcode=3)
235
269
        self.assertContainsRe(err, r'do not exist.*does-not-exist')
236
270
 
237
271
    def test_status_out_of_date(self):
269
303
class TestStatus(TestCaseWithTransport):
270
304
 
271
305
    def test_status_plain(self):
272
 
        self.run_bzr("init")
 
306
        tree = self.make_branch_and_tree('.')
273
307
 
274
308
        self.build_tree(['hello.txt'])
275
309
        result = self.run_bzr("status")[0]
276
310
        self.assertContainsRe(result, "unknown:\n  hello.txt\n")
277
311
 
278
 
        self.run_bzr("add", "hello.txt")
 
312
        tree.add("hello.txt")
279
313
        result = self.run_bzr("status")[0]
280
314
        self.assertContainsRe(result, "added:\n  hello.txt\n")
281
315
 
282
 
        self.run_bzr("commit", "-m", "added")
283
 
        result = self.run_bzr("status", "-r", "0..1")[0]
 
316
        tree.commit(message="added")
 
317
        result = self.run_bzr("status -r 0..1")[0]
 
318
        self.assertContainsRe(result, "added:\n  hello.txt\n")
 
319
 
 
320
        result = self.run_bzr("status -c 1")[0]
284
321
        self.assertContainsRe(result, "added:\n  hello.txt\n")
285
322
 
286
323
        self.build_tree(['world.txt'])
287
 
        result = self.run_bzr("status", "-r", "0")[0]
 
324
        result = self.run_bzr("status -r 0")[0]
288
325
        self.assertContainsRe(result, "added:\n  hello.txt\n" \
289
326
                                      "unknown:\n  world.txt\n")
290
 
        result2 = self.run_bzr("status", "-r", "0..")[0]
 
327
        result2 = self.run_bzr("status -r 0..")[0]
291
328
        self.assertEquals(result2, result)
292
329
 
293
330
    def test_status_short(self):
294
 
        self.run_bzr("init")
 
331
        tree = self.make_branch_and_tree('.')
295
332
 
296
333
        self.build_tree(['hello.txt'])
297
 
        result = self.run_bzr("status","--short")[0]
 
334
        result = self.run_bzr("status --short")[0]
298
335
        self.assertContainsRe(result, "[?]   hello.txt\n")
299
336
 
300
 
        self.run_bzr("add", "hello.txt")
301
 
        result = self.run_bzr("status","--short")[0]
 
337
        tree.add("hello.txt")
 
338
        result = self.run_bzr("status --short")[0]
302
339
        self.assertContainsRe(result, "[+]N  hello.txt\n")
303
340
 
304
 
        self.run_bzr("commit", "-m", "added")
305
 
        result = self.run_bzr("status", "--short", "-r", "0..1")[0]
 
341
        tree.commit(message="added")
 
342
        result = self.run_bzr("status --short -r 0..1")[0]
306
343
        self.assertContainsRe(result, "[+]N  hello.txt\n")
307
344
 
308
345
        self.build_tree(['world.txt'])
309
 
        result = self.run_bzr("status", "--short", "-r", "0")[0]
 
346
        result = self.run_bzr("status --short -r 0")[0]
310
347
        self.assertContainsRe(result, "[+]N  hello.txt\n" \
311
348
                                      "[?]   world.txt\n")
312
 
        result2 = self.run_bzr("status", "--short", "-r", "0..")[0]
 
349
        result2 = self.run_bzr("status --short -r 0..")[0]
313
350
        self.assertEquals(result2, result)
314
351
 
315
352
    def test_status_versioned(self):
316
 
        self.run_bzr("init")
 
353
        tree = self.make_branch_and_tree('.')
317
354
 
318
355
        self.build_tree(['hello.txt'])
319
 
        result = self.run_bzr("status", "--versioned")[0]
 
356
        result = self.run_bzr("status --versioned")[0]
320
357
        self.assertNotContainsRe(result, "unknown:\n  hello.txt\n")
321
358
 
322
 
        self.run_bzr("add", "hello.txt")
323
 
        result = self.run_bzr("status", "--versioned")[0]
 
359
        tree.add("hello.txt")
 
360
        result = self.run_bzr("status --versioned")[0]
324
361
        self.assertContainsRe(result, "added:\n  hello.txt\n")
325
362
 
326
 
        self.run_bzr("commit", "-m", "added")
327
 
        result = self.run_bzr("status", "--versioned", "-r", "0..1")[0]
 
363
        tree.commit("added")
 
364
        result = self.run_bzr("status --versioned -r 0..1")[0]
328
365
        self.assertContainsRe(result, "added:\n  hello.txt\n")
329
366
 
330
367
        self.build_tree(['world.txt'])
331
 
        result = self.run_bzr("status", "--versioned", "-r", "0")[0]
 
368
        result = self.run_bzr("status --versioned -r 0")[0]
332
369
        self.assertContainsRe(result, "added:\n  hello.txt\n")
333
370
        self.assertNotContainsRe(result, "unknown:\n  world.txt\n")
334
 
        result2 = self.run_bzr("status", "--versioned", "-r", "0..")[0]
 
371
        result2 = self.run_bzr("status --versioned -r 0..")[0]
 
372
        self.assertEquals(result2, result)
 
373
 
 
374
    def test_status_SV(self):
 
375
        tree = self.make_branch_and_tree('.')
 
376
 
 
377
        self.build_tree(['hello.txt'])
 
378
        result = self.run_bzr("status -SV")[0]
 
379
        self.assertNotContainsRe(result, "hello.txt")
 
380
 
 
381
        tree.add("hello.txt")
 
382
        result = self.run_bzr("status -SV")[0]
 
383
        self.assertContainsRe(result, "[+]N  hello.txt\n")
 
384
 
 
385
        tree.commit(message="added")
 
386
        result = self.run_bzr("status -SV -r 0..1")[0]
 
387
        self.assertContainsRe(result, "[+]N  hello.txt\n")
 
388
 
 
389
        self.build_tree(['world.txt'])
 
390
        result = self.run_bzr("status -SV -r 0")[0]
 
391
        self.assertContainsRe(result, "[+]N  hello.txt\n")
 
392
 
 
393
        result2 = self.run_bzr("status -SV -r 0..")[0]
335
394
        self.assertEquals(result2, result)
336
395
 
337
396
    def assertStatusContains(self, pattern):
338
397
        """Run status, and assert it contains the given pattern"""
339
 
        result = self.run_bzr("status", "--short")[0]
 
398
        result = self.run_bzr("status --short")[0]
340
399
        self.assertContainsRe(result, pattern)
341
400
 
342
401
    def test_kind_change_short(self):
352
411
        rmdir('directory')
353
412
        self.assertStatusContains('RD  file => directory')
354
413
 
 
414
    def test_status_illegal_revision_specifiers(self):
 
415
        out, err = self.run_bzr('status -r 1..23..123', retcode=3)
 
416
        self.assertContainsRe(err, 'one or two revision specifiers')
 
417
 
355
418
 
356
419
class TestStatusEncodings(TestCaseWithTransport):
357
420