~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/blackbox.py

Merge Aarons conflict plugin for 0.1rc1

Show diffs side-by-side

added added

removed removed

Lines of Context:
308
308
        a.get_revision_xml(b.last_revision())
309
309
        self.log('pending merges: %s', a.pending_merges())
310
310
        #        assert a.pending_merges() == [b.last_revision()], "Assertion %s %s" \
311
 
        #        % (a.pending_merges(), b.last_revision())
 
311
        #        % (a.pending_merges(), b.last_patch())
 
312
 
 
313
    def test_merge_with_missing_file(self):
 
314
        """Merge handles missing file conflicts"""
 
315
        os.mkdir('a')
 
316
        os.chdir('a')
 
317
        os.mkdir('sub')
 
318
        print >> file('sub/a.txt', 'wb'), "hello"
 
319
        print >> file('b.txt', 'wb'), "hello"
 
320
        print >> file('sub/c.txt', 'wb'), "hello"
 
321
        self.runbzr('init')
 
322
        self.runbzr('add')
 
323
        self.runbzr(('commit', '-m', 'added a'))
 
324
        self.runbzr('branch . ../b')
 
325
        print >> file('sub/a.txt', 'ab'), "there"
 
326
        print >> file('b.txt', 'ab'), "there"
 
327
        print >> file('sub/c.txt', 'ab'), "there"
 
328
        self.runbzr(('commit', '-m', 'Added there'))
 
329
        os.unlink('sub/a.txt')
 
330
        os.unlink('sub/c.txt')
 
331
        os.rmdir('sub')
 
332
        os.unlink('b.txt')
 
333
        self.runbzr(('commit', '-m', 'Removed a.txt'))
 
334
        os.chdir('../b')
 
335
        print >> file('sub/a.txt', 'ab'), "something"
 
336
        print >> file('b.txt', 'ab'), "something"
 
337
        print >> file('sub/c.txt', 'ab'), "something"
 
338
        self.runbzr(('commit', '-m', 'Modified a.txt'))
 
339
        self.runbzr('merge ../a/')
 
340
        assert os.path.exists('sub/a.txt.THIS')
 
341
        assert os.path.exists('sub/a.txt.BASE')
 
342
        os.chdir('../a')
 
343
        self.runbzr('merge ../b/')
 
344
        assert os.path.exists('sub/a.txt.OTHER')
 
345
        assert os.path.exists('sub/a.txt.BASE')
312
346
 
313
347
    def test_merge_with_missing_file(self):
314
348
        """Merge handles missing file conflicts"""
393
427
        self.runbzr('commit -m blah8 --unchanged')
394
428
        self.runbzr('pull ../b')
395
429
        self.runbzr('pull ../b')
 
430
 
 
431
    def test_locations(self):
 
432
        """Using and remembering different locations"""
 
433
        os.mkdir('a')
 
434
        os.chdir('a')
 
435
        self.runbzr('init')
 
436
        self.runbzr('commit -m unchanged --unchanged')
 
437
        self.runbzr('pull', retcode=1)
 
438
        self.runbzr('merge', retcode=1)
 
439
        self.runbzr('branch . ../b')
 
440
        os.chdir('../b')
 
441
        self.runbzr('pull')
 
442
        self.runbzr('branch . ../c')
 
443
        self.runbzr('pull ../c')
 
444
        self.runbzr('merge')
 
445
        os.chdir('../a')
 
446
        self.runbzr('pull ../b')
 
447
        self.runbzr('pull')
 
448
        self.runbzr('pull ../c')
 
449
        self.runbzr('branch ../c ../d')
 
450
        shutil.rmtree('../c')
 
451
        self.runbzr('pull')
 
452
        os.chdir('../b')
 
453
        self.runbzr('pull')
 
454
        os.chdir('../d')
 
455
        self.runbzr('pull', retcode=1)
 
456
        self.runbzr('pull ../a --remember')
 
457
        self.runbzr('pull')
396
458
        
397
459
    def test_add_reports(self):
398
460
        """add command prints the names of added files."""
413
475
        self.assertEquals(out, '')
414
476
        err.index('unknown command')
415
477
 
 
478
    def test_conflicts(self):
 
479
        """Handling of merge conflicts"""
 
480
        os.mkdir('base')
 
481
        os.chdir('base')
 
482
        file('hello', 'wb').write("hi world")
 
483
        file('answer', 'wb').write("42")
 
484
        self.runbzr('init')
 
485
        self.runbzr('add')
 
486
        self.runbzr('commit -m base')
 
487
        self.runbzr('branch . ../other')
 
488
        self.runbzr('branch . ../this')
 
489
        os.chdir('../other')
 
490
        file('hello', 'wb').write("Hello.")
 
491
        file('answer', 'wb').write("Is anyone there?")
 
492
        self.runbzr('commit -m other')
 
493
        os.chdir('../this')
 
494
        file('hello', 'wb').write("Hello, world")
 
495
        self.runbzr('mv answer question')
 
496
        file('question', 'wb').write("What do you get when you multiply six"
 
497
                                   "times nine?")
 
498
        self.runbzr('commit -m this')
 
499
        self.runbzr('merge ../other')
 
500
        result = self.runbzr('conflicts', backtick=1)
 
501
        self.assertEquals(result, "hello\nquestion\n")
 
502
        result = self.runbzr('status', backtick=1)
 
503
        assert "conflicts:\n  hello\n  question\n" in result, result
 
504
        self.runbzr('resolve hello')
 
505
        result = self.runbzr('conflicts', backtick=1)
 
506
        self.assertEquals(result, "question\n")
 
507
        self.runbzr('commit -m conflicts', retcode=1)
 
508
        self.runbzr('resolve --all')
 
509
        result = self.runbzr('conflicts', backtick=1)
 
510
        self.runbzr('commit -m conflicts')
 
511
        self.assertEquals(result, "")
416
512
 
417
513
def listdir_sorted(dir):
418
514
    L = os.listdir(dir)