Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc6b0a0a

Browse files
committed
test,#525: allow disabling freeze errors separately
+ cmd: use DEVNULL for non PIPEs; no open-file.+ TCs: some unitestize-assertions on base & remote TCs.
1 parentc485e66 commitc6b0a0a

File tree

4 files changed

+74
-69
lines changed

4 files changed

+74
-69
lines changed

‎git/cmd.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -543,9 +543,9 @@ def execute(self, command,
543543
bufsize=-1,
544544
stdin=istream,
545545
stderr=PIPE,
546-
stdout=PIPEifwith_stdoutelseopen(os.devnull,'wb'),
546+
stdout=PIPEifwith_stdoutelsesubprocess.DEVNULL,
547547
shell=shellisnotNoneandshellorself.USE_SHELL,
548-
close_fds=(is_posix),# unsupported on windows
548+
close_fds=is_posix,# unsupported on windows
549549
universal_newlines=universal_newlines,
550550
creationflags=PROC_CREATIONFLAGS,
551551
**subprocess_kwargs

‎git/test/test_base.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
fromgit.objects.utilimportget_object_type_by_name
2626
fromgitdb.utilimporthex_to_bin
2727
fromgit.compatimportis_win
28-
fromgit.utilimportHIDE_WINDOWS_KNOWN_ERRORS
2928

3029

3130
classTestBase(TestBase):
@@ -42,7 +41,7 @@ def tearDown(self):
4241
deftest_base_object(self):
4342
# test interface of base object classes
4443
types= (Blob,Tree,Commit,TagObject)
45-
assertlen(types)==len(self.type_tuples)
44+
self.assertEqual(len(types),len(self.type_tuples))
4645

4746
s=set()
4847
num_objs=0
@@ -56,12 +55,12 @@ def test_base_object(self):
5655
item=obj_type(self.rorepo,binsha,0,path)
5756
# END handle index objects
5857
num_objs+=1
59-
assertitem.hexsha==hexsha
60-
assertitem.type==typename
58+
self.assertEqual(item.hexsha,hexsha)
59+
self.assertEqual(item.type,typename)
6160
assertitem.size
62-
assertitem==item
63-
assertnotitem!=item
64-
assertstr(item)==item.hexsha
61+
self.assertEqual(item,item)
62+
self.assertNotEqual(notitem,item)
63+
self.assertEqual(str(item),item.hexsha)
6564
assertrepr(item)
6665
s.add(item)
6766

@@ -79,16 +78,16 @@ def test_base_object(self):
7978

8079
tmpfilename=tempfile.mktemp(suffix='test-stream')
8180
withopen(tmpfilename,'wb+')astmpfile:
82-
assertitem==item.stream_data(tmpfile)
81+
self.assertEqual(item,item.stream_data(tmpfile))
8382
tmpfile.seek(0)
84-
asserttmpfile.read()==data
83+
self.assertEqual(tmpfile.read(),data)
8584
os.remove(tmpfilename)
8685
# END for each object type to create
8786

8887
# each has a unique sha
89-
assertlen(s)==num_objs
90-
assertlen(s|s)==num_objs
91-
assertnum_index_objs==2
88+
self.assertEqual(len(s),num_objs)
89+
self.assertEqual(len(s|s),num_objs)
90+
self.assertEqual(num_index_objs,2)
9291

9392
deftest_get_object_type_by_name(self):
9493
fortnameinbase.Object.TYPES:
@@ -99,7 +98,7 @@ def test_get_object_type_by_name(self):
9998

10099
deftest_object_resolution(self):
101100
# objects must be resolved to shas so they compare equal
102-
assertself.rorepo.head.reference.object==self.rorepo.active_branch.object
101+
self.assertEqual(self.rorepo.head.reference.object,self.rorepo.active_branch.object)
103102

104103
@with_rw_repo('HEAD',bare=True)
105104
deftest_with_bare_rw_repo(self,bare_rw_repo):
@@ -111,7 +110,7 @@ def test_with_rw_repo(self, rw_repo):
111110
assertnotrw_repo.config_reader("repository").getboolean("core","bare")
112111
assertos.path.isdir(os.path.join(rw_repo.working_tree_dir,'lib'))
113112

114-
@skipIf(HIDE_WINDOWS_KNOWN_ERRORS,"FIXME: Freezes!")
113+
#@skipIf(HIDE_WINDOWS_FREEZE_ERRORS, "FIXME: Freezes! sometimes...")
115114
deftest_with_rw_remote_and_rw_repo(self):
116115
withrw_and_rw_remote_repos(self.rorepo,'0.1.6')as (rw_repo,rw_remote_repo):
117116
assertnotrw_repo.config_reader("repository").getboolean("core","bare")

‎git/test/test_remote.py

Lines changed: 58 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,10 @@
44
# This module is part of GitPython and is released under
55
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
66

7-
fromgit.test.libimport (
8-
TestBase,
9-
with_rw_repo,
10-
rw_and_rw_remote_repos,
11-
fixture,
12-
GIT_DAEMON_PORT,
13-
assert_raises
14-
)
7+
importrandom
8+
importtempfile
9+
fromunittest.caseimportskipIf
10+
1511
fromgitimport (
1612
RemoteProgress,
1713
FetchInfo,
@@ -25,14 +21,19 @@
2521
Remote,
2622
GitCommandError
2723
)
28-
fromgit.utilimportIterableList,rmtree
24+
fromgit.cmdimportGit
2925
fromgit.compatimportstring_types
30-
importtempfile
26+
fromgit.test.libimport (
27+
TestBase,
28+
with_rw_repo,
29+
rw_and_rw_remote_repos,
30+
fixture,
31+
GIT_DAEMON_PORT,
32+
assert_raises
33+
)
34+
fromgit.utilimportIterableList,rmtree,HIDE_WINDOWS_FREEZE_ERRORS
3135
importos.pathasosp
32-
importrandom
33-
fromunittest.caseimportskipIf
34-
fromgit.utilimportHIDE_WINDOWS_KNOWN_ERRORS
35-
fromgit.cmdimportGit
36+
3637

3738
# assure we have repeatable results
3839
random.seed(0)
@@ -213,7 +214,7 @@ def get_info(res, remote, name):
213214
new_remote_branch.rename("other_branch_name")
214215
res=fetch_and_test(remote)
215216
other_branch_info=get_info(res,remote,new_remote_branch)
216-
assertother_branch_info.ref.commit==new_branch_info.ref.commit
217+
self.assertEqual(other_branch_info.ref.commit,new_branch_info.ref.commit)
217218

218219
# remove new branch
219220
Head.delete(new_remote_branch.repo,new_remote_branch)
@@ -223,34 +224,37 @@ def get_info(res, remote, name):
223224

224225
# prune stale tracking branches
225226
stale_refs=remote.stale_refs
226-
assertlen(stale_refs)==2andisinstance(stale_refs[0],RemoteReference)
227+
self.assertEqual(len(stale_refs),2)
228+
self.assertIsInstance(stale_refs[0],RemoteReference)
227229
RemoteReference.delete(rw_repo,*stale_refs)
228230

229231
# test single branch fetch with refspec including target remote
230232
res=fetch_and_test(remote,refspec="master:refs/remotes/%s/master"%remote)
231-
assertlen(res)==1andget_info(res,remote,'master')
233+
self.assertEqual(len(res),1)
234+
self.assertTrue(get_info(res,remote,'master'))
232235

233236
# ... with respec and no target
234237
res=fetch_and_test(remote,refspec='master')
235-
assertlen(res)==1
238+
self.assertEqual(len(res),1)
236239

237240
# ... multiple refspecs ... works, but git command returns with error if one ref is wrong without
238241
# doing anything. This is new in later binaries
239242
# res = fetch_and_test(remote, refspec=['master', 'fred'])
240-
#assertlen(res) == 1
243+
#self.assertEqual(len(res), 1)
241244

242245
# add new tag reference
243246
rtag=TagReference.create(remote_repo,"1.0-RV_hello.there")
244247
res=fetch_and_test(remote,tags=True)
245248
tinfo=res[str(rtag)]
246-
assertisinstance(tinfo.ref,TagReference)andtinfo.ref.commit==rtag.commit
249+
self.assertIsInstance(tinfo.ref,TagReference)
250+
self.assertEqual(tinfo.ref.commit,rtag.commit)
247251
asserttinfo.flags&tinfo.NEW_TAG
248252

249253
# adjust tag commit
250254
Reference.set_object(rtag,rhead.commit.parents[0].parents[0])
251255
res=fetch_and_test(remote,tags=True)
252256
tinfo=res[str(rtag)]
253-
asserttinfo.commit==rtag.commit
257+
self.assertEqual(tinfo.commit,rtag.commit)
254258
asserttinfo.flags&tinfo.TAG_UPDATE
255259

256260
# delete remote tag - local one will stay
@@ -326,7 +330,7 @@ def _assert_push_and_pull(self, remote, rw_repo, remote_repo):
326330

327331
# force rejected pull
328332
res=remote.push('+%s'%lhead.reference)
329-
assertres[0].flags&PushInfo.ERROR==0
333+
self.assertEqual(res[0].flags&PushInfo.ERROR,0)
330334
assertres[0].flags&PushInfo.FORCED_UPDATE
331335
self._do_test_push_result(res,remote)
332336

@@ -352,7 +356,8 @@ def _assert_push_and_pull(self, remote, rw_repo, remote_repo):
352356

353357
# push force this tag
354358
res=remote.push("+%s"%new_tag.path)
355-
assertres[-1].flags&PushInfo.ERROR==0andres[-1].flags&PushInfo.FORCED_UPDATE
359+
self.assertEqual(res[-1].flags&PushInfo.ERROR,0)
360+
self.assertTrue(res[-1].flags&PushInfo.FORCED_UPDATE)
356361

357362
# delete tag - have to do it using refspec
358363
res=remote.push(":%s"%new_tag.path)
@@ -388,7 +393,7 @@ def _assert_push_and_pull(self, remote, rw_repo, remote_repo):
388393
TagReference.delete(rw_repo,new_tag,other_tag)
389394
remote.push(":%s"%other_tag.path)
390395

391-
@skipIf(HIDE_WINDOWS_KNOWN_ERRORS,"FIXME: Freezes!")
396+
@skipIf(HIDE_WINDOWS_FREEZE_ERRORS,"FIXME: Freezes!")
392397
deftest_base(self):
393398
withrw_and_rw_remote_repos(self.rorepo,'0.1.6')as (rw_repo,remote_repo):
394399
num_remotes=0
@@ -397,7 +402,7 @@ def test_base(self):
397402

398403
forremoteinrw_repo.remotes:
399404
num_remotes+=1
400-
assertremote==remote
405+
self.assertEqual(remote,remote)
401406
assertstr(remote)!=repr(remote)
402407
remote_set.add(remote)
403408
remote_set.add(remote)# should already exist
@@ -406,7 +411,7 @@ def test_base(self):
406411
refs=remote.refs
407412
assertrefs
408413
forrefinrefs:
409-
assertref.remote_name==remote.name
414+
self.assertEqual(ref.remote_name,remote.name)
410415
assertref.remote_head
411416
# END for each ref
412417

@@ -415,8 +420,8 @@ def test_base(self):
415420
foroptin ("url",):
416421
val=getattr(remote,opt)
417422
reader=remote.config_reader
418-
assertreader.get(opt)==val
419-
assertreader.get_value(opt,None)==val
423+
self.assertEqual(reader.get(opt),val)
424+
self.assertEqual(reader.get_value(opt,None),val)
420425

421426
# unable to write with a reader
422427
self.failUnlessRaises(IOError,reader.set,opt,"test")
@@ -425,20 +430,20 @@ def test_base(self):
425430
withremote.config_writeraswriter:
426431
new_val="myval"
427432
writer.set(opt,new_val)
428-
assertwriter.get(opt)==new_val
433+
self.assertEqual(writer.get(opt),new_val)
429434
writer.set(opt,val)
430-
assertwriter.get(opt)==val
431-
assertgetattr(remote,opt)==val
435+
self.assertEqual(writer.get(opt),val)
436+
self.assertEqual(getattr(remote,opt),val)
432437
# END for each default option key
433438

434439
# RENAME
435440
other_name="totally_other_name"
436441
prev_name=remote.name
437-
assertremote.rename(other_name)==remote
442+
self.assertEqual(remote.rename(other_name),remote)
438443
assertprev_name!=remote.name
439444
# multiple times
440445
for_inrange(2):
441-
assertremote.rename(prev_name).name==prev_name
446+
self.assertEqual(remote.rename(prev_name).name,prev_name)
442447
# END for each rename ( back to prev_name )
443448

444449
# PUSH/PULL TESTING
@@ -457,10 +462,10 @@ def test_base(self):
457462

458463
assertran_fetch_test
459464
assertnum_remotes
460-
assertnum_remotes==len(remote_set)
465+
self.assertEqual(num_remotes,len(remote_set))
461466

462467
origin=rw_repo.remote('origin')
463-
assertorigin==rw_repo.remotes.origin
468+
self.assertEqual(origin,rw_repo.remotes.origin)
464469

465470
# Verify we can handle prunes when fetching
466471
# stderr lines look like this: x [deleted] (none) -> origin/experiment-2012
@@ -478,14 +483,14 @@ def test_base(self):
478483
# end
479484
# end for each branch
480485
assertnum_deleted>0
481-
assertlen(rw_repo.remotes.origin.fetch(prune=True))==1,"deleted everything but master"
486+
self.assertEqual(len(rw_repo.remotes.origin.fetch(prune=True)),1,"deleted everything but master")
482487

483488
@with_rw_repo('HEAD',bare=True)
484489
deftest_creation_and_removal(self,bare_rw_repo):
485490
new_name="test_new_one"
486491
arg_list= (new_name,"git@server:hello.git")
487492
remote=Remote.create(bare_rw_repo,*arg_list)
488-
assertremote.name=="test_new_one"
493+
self.assertEqual(remote.name,"test_new_one")
489494
assertremoteinbare_rw_repo.remotes
490495
assertremote.exists()
491496

@@ -520,7 +525,7 @@ def test_fetch_info(self):
520525
remote_info_line_fmt%"local/master",
521526
fetch_info_line_fmt%'remote-tracking branch')
522527
assertnotfi.ref.is_valid()
523-
assertfi.ref.name=="local/master"
528+
self.assertEqual(fi.ref.name,"local/master")
524529

525530
# handles non-default refspecs: One can specify a different path in refs/remotes
526531
# or a special path just in refs/something for instance
@@ -547,23 +552,23 @@ def test_fetch_info(self):
547552
fetch_info_line_fmt%'tag')
548553

549554
assertisinstance(fi.ref,TagReference)
550-
assertfi.ref.path==tag_path
555+
self.assertEqual(fi.ref.path,tag_path)
551556

552557
# branches default to refs/remotes
553558
fi=FetchInfo._from_line(self.rorepo,
554559
remote_info_line_fmt%"remotename/branch",
555560
fetch_info_line_fmt%'branch')
556561

557562
assertisinstance(fi.ref,RemoteReference)
558-
assertfi.ref.remote_name=='remotename'
563+
self.assertEqual(fi.ref.remote_name,'remotename')
559564

560565
# but you can force it anywhere, in which case we only have a references
561566
fi=FetchInfo._from_line(self.rorepo,
562567
remote_info_line_fmt%"refs/something/branch",
563568
fetch_info_line_fmt%'branch')
564569

565570
asserttype(fi.ref)isReference
566-
assertfi.ref.path=="refs/something/branch"
571+
self.assertEqual(fi.ref.path,"refs/something/branch")
567572

568573
deftest_uncommon_branch_names(self):
569574
stderr_lines=fixture('uncommon_branch_prefix_stderr').decode('ascii').splitlines()
@@ -574,8 +579,8 @@ def test_uncommon_branch_names(self):
574579
res= [FetchInfo._from_line('ShouldntMatterRepo',stderr,fetch_line)
575580
forstderr,fetch_lineinzip(stderr_lines,fetch_lines)]
576581
assertlen(res)
577-
assertres[0].remote_ref_path=='refs/pull/1/head'
578-
assertres[0].ref.path=='refs/heads/pull/1/head'
582+
self.assertEqual(res[0].remote_ref_path,'refs/pull/1/head')
583+
self.assertEqual(res[0].ref.path,'refs/heads/pull/1/head')
579584
assertisinstance(res[0].ref,Head)
580585

581586
@with_rw_repo('HEAD',bare=False)
@@ -588,36 +593,36 @@ def test_multiple_urls(self, rw_repo):
588593
remote=rw_repo.remotes[0]
589594
# Testing setting a single URL
590595
remote.set_url(test1)
591-
assertlist(remote.urls)==[test1]
596+
self.assertEqual(list(remote.urls),[test1])
592597

593598
# Testing replacing that single URL
594599
remote.set_url(test1)
595-
assertlist(remote.urls)==[test1]
600+
self.assertEqual(list(remote.urls),[test1])
596601
# Testing adding new URLs
597602
remote.set_url(test2,add=True)
598-
assertlist(remote.urls)==[test1,test2]
603+
self.assertEqual(list(remote.urls),[test1,test2])
599604
remote.set_url(test3,add=True)
600-
assertlist(remote.urls)==[test1,test2,test3]
605+
self.assertEqual(list(remote.urls),[test1,test2,test3])
601606
# Testing removing an URL
602607
remote.set_url(test2,delete=True)
603-
assertlist(remote.urls)==[test1,test3]
608+
self.assertEqual(list(remote.urls),[test1,test3])
604609
# Testing changing an URL
605610
remote.set_url(test3,test2)
606-
assertlist(remote.urls)==[test1,test2]
611+
self.assertEqual(list(remote.urls),[test1,test2])
607612

608613
# will raise: fatal: --add --delete doesn't make sense
609614
assert_raises(GitCommandError,remote.set_url,test2,add=True,delete=True)
610615

611616
# Testing on another remote, with the add/delete URL
612617
remote=rw_repo.create_remote('another',url=test1)
613618
remote.add_url(test2)
614-
assertlist(remote.urls)==[test1,test2]
619+
self.assertEqual(list(remote.urls),[test1,test2])
615620
remote.add_url(test3)
616-
assertlist(remote.urls)==[test1,test2,test3]
621+
self.assertEqual(list(remote.urls),[test1,test2,test3])
617622
# Testing removing all the URLs
618623
remote.delete_url(test2)
619-
assertlist(remote.urls)==[test1,test3]
624+
self.assertEqual(list(remote.urls),[test1,test3])
620625
remote.delete_url(test1)
621-
assertlist(remote.urls)==[test3]
626+
self.assertEqual(list(remote.urls),[test3])
622627
# will raise fatal: Will not delete all non-push URLs
623628
assert_raises(GitCommandError,remote.delete_url,test3)

‎git/util.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#: so the errors marked with this var are considered "acknowledged" ones, awaiting remedy,
5353
#: till then, we wish to hide them.
5454
HIDE_WINDOWS_KNOWN_ERRORS=is_winandos.environ.get('HIDE_WINDOWS_KNOWN_ERRORS',True)
55+
HIDE_WINDOWS_FREEZE_ERRORS=is_winandos.environ.get('HIDE_WINDOWS_FREEZE_ERRORS',HIDE_WINDOWS_KNOWN_ERRORS)
5556

5657
#{ Utility Methods
5758

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp