@@ -24,6 +24,7 @@ def _assert_fprogress(self, entries):
24
24
assert len (entries ) == len (self ._fprogress_map )
25
25
for path , call_count in self ._fprogress_map .iteritems ():
26
26
assert call_count == 2
27
+ # END for each item in progress map
27
28
self ._reset_progress ()
28
29
29
30
def _fprogress (self , path , done , item ):
@@ -44,6 +45,13 @@ def _fprogress_add(self, path, done, item):
44
45
def _reset_progress (self ):
45
46
# maps paths to the count of calls
46
47
self ._fprogress_map = dict ()
48
+
49
+ def _assert_entries (self , entries ):
50
+ for entry in entries :
51
+ assert isinstance (entry , BaseIndexEntry )
52
+ assert not os .path .isabs (entry .path )
53
+ assert not "\\ " in entry .path
54
+ # END for each entry
47
55
48
56
def test_index_file_base (self ):
49
57
# read from file
@@ -172,7 +180,7 @@ def test_index_merge_tree(self, rw_repo):
172
180
# sha for it ( which makes things faster of course )
173
181
manifest_fake_entry = BaseIndexEntry ((manifest_entry [0 ], "\0 " * 20 , 0 , manifest_entry [3 ]))
174
182
# try write flag
175
- rw_repo .index .add ([manifest_fake_entry ], write = False )
183
+ self . _assert_entries ( rw_repo .index .add ([manifest_fake_entry ], write = False ) )
176
184
# add actually resolves the null-hex-sha for us as a feature, but we can
177
185
# edit the index manually
178
186
assert rw_repo .index .entries [manifest_key ].binsha != Object .NULL_BIN_SHA
@@ -420,22 +428,25 @@ def mixed_iterator():
420
428
# re-add all files in lib
421
429
# get the lib folder back on disk, but get an index without it
422
430
index .reset (new_commit .parents [0 ], working_tree = True ).reset (new_commit , working_tree = False )
423
- lib_file_path = "lib/ git/ __init__.py"
431
+ lib_file_path = os . path . join ( "lib" , " git" , " __init__.py")
424
432
assert (lib_file_path , 0 ) not in index .entries
425
433
assert os .path .isfile (os .path .join (rw_repo .working_tree_dir , lib_file_path ))
426
434
427
435
# directory
428
436
entries = index .add (['lib' ], fprogress = self ._fprogress_add )
437
+ self ._assert_entries (entries )
429
438
self ._assert_fprogress (entries )
430
439
assert len (entries )> 1
431
440
432
441
# glob
433
- entries = index .reset (new_commit ).add (['lib/git/*.py' ], fprogress = self ._fprogress_add )
442
+ entries = index .reset (new_commit ).add ([os .path .join ('lib' , 'git' , '*.py' )], fprogress = self ._fprogress_add )
443
+ self ._assert_entries (entries )
434
444
self ._assert_fprogress (entries )
435
445
assert len (entries ) == 14
436
446
437
447
# same file
438
- entries = index .reset (new_commit ).add (['lib/git/head.py' ]* 2 , fprogress = self ._fprogress_add )
448
+ entries = index .reset (new_commit ).add ([os .path .abspath (os .path .join ('lib' , 'git' , 'head.py' ))]* 2 , fprogress = self ._fprogress_add )
449
+ self ._assert_entries (entries )
439
450
assert entries [0 ].mode & 0644 == 0644
440
451
# would fail, test is too primitive to handle this case
441
452
# self._assert_fprogress(entries)
@@ -448,6 +459,7 @@ def mixed_iterator():
448
459
# blob from older revision overrides current index revision
449
460
old_blob = new_commit .parents [0 ].tree .blobs [0 ]
450
461
entries = index .reset (new_commit ).add ([old_blob ], fprogress = self ._fprogress_add )
462
+ self ._assert_entries (entries )
451
463
self ._assert_fprogress (entries )
452
464
assert index .entries [(old_blob .path ,0 )].hexsha == old_blob .hexsha and len (entries ) == 1
453
465
@@ -460,6 +472,7 @@ def mixed_iterator():
460
472
new_file_relapath = "my_new_file"
461
473
new_file_path = self ._make_file (new_file_relapath , "hello world" , rw_repo )
462
474
entries = index .reset (new_commit ).add ([BaseIndexEntry ((010644 , null_bin_sha , 0 , new_file_relapath ))], fprogress = self ._fprogress_add )
475
+ self ._assert_entries (entries )
463
476
self ._assert_fprogress (entries )
464
477
assert len (entries ) == 1 and entries [0 ].hexsha != null_hex_sha
465
478
@@ -470,6 +483,7 @@ def mixed_iterator():
470
483
link_file = os .path .join (rw_repo .working_tree_dir , basename )
471
484
os .symlink (target , link_file )
472
485
entries = index .reset (new_commit ).add ([link_file ], fprogress = self ._fprogress_add )
486
+ self ._assert_entries (entries )
473
487
self ._assert_fprogress (entries )
474
488
assert len (entries ) == 1 and S_ISLNK (entries [0 ].mode )
475
489
assert S_ISLNK (index .entries [index .entry_key ("my_real_symlink" , 0 )].mode )
@@ -484,6 +498,7 @@ def mixed_iterator():
484
498
fake_symlink_path = self ._make_file (fake_symlink_relapath , link_target , rw_repo )
485
499
fake_entry = BaseIndexEntry ((0120000 , null_bin_sha , 0 , fake_symlink_relapath ))
486
500
entries = index .reset (new_commit ).add ([fake_entry ], fprogress = self ._fprogress_add )
501
+ self ._assert_entries (entries )
487
502
self ._assert_fprogress (entries )
488
503
assert entries [0 ].hexsha != null_hex_sha
489
504
assert len (entries ) == 1 and S_ISLNK (entries [0 ].mode )
@@ -571,7 +586,7 @@ def make_paths():
571
586
# END for each new file
572
587
# END path producer
573
588
paths = list (make_paths ())
574
- index .add (paths , path_rewriter = rewriter )
589
+ self . _assert_entries ( index .add (paths , path_rewriter = rewriter ) )
575
590
576
591
for filenum in range (len (paths )):
577
592
assert index .entry_key (str (filenum ), 0 ) in index .entries
0 commit comments