11# Test properties of bool promised by PEP 285
22
33import unittest
4- from test import support
54from test .support import os_helper
65
76import os
@@ -21,20 +20,11 @@ class C(bool):
2120
2221 self .assertRaises (TypeError , int .__new__ , bool , 0 )
2322
24- def test_print (self ):
25- try :
26- with open (os_helper .TESTFN , "w" ) as fo :
27- print (False , True , file = fo )
28- with open (os_helper .TESTFN , "r" ) as fi :
29- self .assertEqual (fi .read (), 'False True\n ' )
30- finally :
31- os .remove (os_helper .TESTFN )
32-
3323 def test_repr (self ):
3424 self .assertEqual (repr (False ), 'False' )
3525 self .assertEqual (repr (True ), 'True' )
36- self .assertEqual (eval (repr (False )), False )
37- self .assertEqual (eval (repr (True )), True )
26+ self .assertIs (eval (repr (False )), False )
27+ self .assertIs (eval (repr (True )), True )
3828
3929 def test_str (self ):
4030 self .assertEqual (str (False ), 'False' )
@@ -246,7 +236,7 @@ def test_boolean(self):
246236
247237 def test_fileclosed (self ):
248238 try :
249- with open (os_helper .TESTFN , "w" ) as f :
239+ with open (os_helper .TESTFN , "w" , encoding = "utf-8" ) as f :
250240 self .assertIs (f .closed , False )
251241 self .assertIs (f .closed , True )
252242 finally :
@@ -365,8 +355,22 @@ def test_real_and_imag(self):
365355 self .assertIs (type (False .real ), int )
366356 self .assertIs (type (False .imag ), int )
367357
368- def test_main ():
369- support .run_unittest (BoolTest )
358+ def test_bool_called_at_least_once (self ):
359+ class X :
360+ def __init__ (self ):
361+ self .count = 0
362+ def __bool__ (self ):
363+ self .count += 1
364+ return True
365+
366+ def f (x ):
367+ if x or True :
368+ pass
369+
370+ x = X ()
371+ f (x )
372+ self .assertGreaterEqual (x .count , 1 )
373+
370374
371375if __name__ == "__main__" :
372- test_main ()
376+ unittest . main ()
0 commit comments