~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/blackbox.py

  • Committer: Robert Collins
  • Date: 2005-09-07 10:47:36 UTC
  • mto: (1092.3.1)
  • mto: This revision was merged to the branch mainline in revision 1397.
  • Revision ID: robertc@robertcollins.net-20050907104736-8e592b72108c577d
symlink support updated to work

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
it's normally invoked.
27
27
"""
28
28
 
 
29
import os;
29
30
import sys
30
31
 
31
32
from bzrlib.selftest import TestCaseInTempDir, BzrTestBase
220
221
#        assert a.pending_merges() == [b.last_patch()], "Assertion %s %s" \
221
222
#        % (a.pending_merges(), b.last_patch())
222
223
 
 
224
 
 
225
def has_symlinks():
 
226
    if hasattr(os, 'symlink'):
 
227
        return True
 
228
    else:
 
229
        return False
 
230
 
 
231
def listdir_sorted(dir):
 
232
    L = os.listdir(dir)
 
233
    L.sort()
 
234
    return L
 
235
 
223
236
class OldTests(ExternalBase):
224
237
    """old tests moved from ./testbzr."""
225
238
 
226
239
    def test_bzr(self):
227
240
        from os import chdir, mkdir
228
241
        from os.path import exists
229
 
        import os
230
242
 
231
243
        runbzr = self.runbzr
232
244
        backtick = self.backtick
391
403
 
392
404
        runbzr('info')
393
405
 
 
406
        if has_symlinks():
 
407
            progress("symlinks")
 
408
            mkdir('symlinks')
 
409
            chdir('symlinks')
 
410
            runbzr('init')
 
411
            os.symlink("NOWHERE1", "link1")
 
412
            runbzr('add link1')
 
413
            assert backtick('bzr unknowns') == ''
 
414
            runbzr(['commit', '-m', '1: added symlink link1'])
 
415
    
 
416
            mkdir('d1')
 
417
            runbzr('add d1')
 
418
            assert backtick('bzr unknowns') == ''
 
419
            os.symlink("NOWHERE2", "d1/link2")
 
420
            assert backtick('bzr unknowns') == 'd1/link2\n'
 
421
            # is d1/link2 found when adding d1
 
422
            runbzr('add d1')
 
423
            assert backtick('bzr unknowns') == ''
 
424
            os.symlink("NOWHERE3", "d1/link3")
 
425
            assert backtick('bzr unknowns') == 'd1/link3\n'
 
426
            runbzr(['commit', '-m', '2: added dir, symlink'])
 
427
    
 
428
            runbzr('rename d1 d2')
 
429
            runbzr('move d2/link2 .')
 
430
            runbzr('move link1 d2')
 
431
            assert os.readlink("./link2") == "NOWHERE2"
 
432
            assert os.readlink("d2/link1") == "NOWHERE1"
 
433
            runbzr('add d2/link3')
 
434
            runbzr('diff')
 
435
            runbzr(['commit', '-m', '3: rename of dir, move symlinks, add link3'])
 
436
    
 
437
            os.unlink("link2")
 
438
            os.symlink("TARGET 2", "link2")
 
439
            os.unlink("d2/link1")
 
440
            os.symlink("TARGET 1", "d2/link1")
 
441
            runbzr('diff')
 
442
            assert backtick("bzr relpath d2/link1") == "d2/link1\n"
 
443
            runbzr(['commit', '-m', '4: retarget of two links'])
 
444
    
 
445
            runbzr('remove d2/link1')
 
446
            assert backtick('bzr unknowns') == 'd2/link1\n'
 
447
            runbzr(['commit', '--unchanged', '-m', '5: remove d2/link1'])
 
448
            print ("commit --uchanged is needed to delete a file with no other"
 
449
                   " changes. this is a bug.")
 
450
    
 
451
            os.mkdir("d1")
 
452
            runbzr('add d1')
 
453
            runbzr('rename d2/link3 d1/link3new')
 
454
            assert backtick('bzr unknowns') == 'd2/link1\n'
 
455
            runbzr(['commit', '-m', '6: remove d2/link1, move/rename link3'])
 
456
            
 
457
            runbzr(['check'])
 
458
            
 
459
            runbzr(['export', '-r', '1', 'exp1.tmp'])
 
460
            chdir("exp1.tmp")
 
461
            assert listdir_sorted(".") == [ "link1" ]
 
462
            assert os.readlink("link1") == "NOWHERE1"
 
463
            chdir("..")
 
464
            
 
465
            runbzr(['export', '-r', '2', 'exp2.tmp'])
 
466
            chdir("exp2.tmp")
 
467
            assert listdir_sorted(".") == [ "d1", "link1" ]
 
468
            chdir("..")
 
469
            
 
470
            runbzr(['export', '-r', '3', 'exp3.tmp'])
 
471
            chdir("exp3.tmp")
 
472
            assert listdir_sorted(".") == [ "d2", "link2" ]
 
473
            assert listdir_sorted("d2") == [ "link1", "link3" ]
 
474
            assert os.readlink("d2/link1") == "NOWHERE1"
 
475
            assert os.readlink("link2")    == "NOWHERE2"
 
476
            chdir("..")
 
477
            
 
478
            runbzr(['export', '-r', '4', 'exp4.tmp'])
 
479
            chdir("exp4.tmp")
 
480
            assert listdir_sorted(".") == [ "d2", "link2" ]
 
481
            assert os.readlink("d2/link1") == "TARGET 1"
 
482
            assert os.readlink("link2")    == "TARGET 2"
 
483
            assert listdir_sorted("d2") == [ "link1", "link3" ]
 
484
            chdir("..")
 
485
            
 
486
            runbzr(['export', '-r', '5', 'exp5.tmp'])
 
487
            chdir("exp5.tmp")
 
488
            assert listdir_sorted(".") == [ "d2", "link2" ]
 
489
            assert os.path.islink("link2")
 
490
            assert listdir_sorted("d2")== [ "link3" ]
 
491
            chdir("..")
 
492
            
 
493
            runbzr(['export', '-r', '6', 'exp6.tmp'])
 
494
            chdir("exp6.tmp")
 
495
            assert listdir_sorted(".") == [ "d1", "d2", "link2" ]
 
496
            assert listdir_sorted("d1") == [ "link3new" ]
 
497
            assert listdir_sorted("d2") == []
 
498
            assert os.readlink("d1/link3new") == "NOWHERE3"
 
499
            chdir("..")
 
500
        else:
 
501
            progress("skipping symlink tests")
 
502