@@ -40,7 +40,10 @@ def test_fsize_ismax(self):
4040 # we need to test that the get/setrlimit functions properly convert
4141 # the number to a C long long and that the conversion doesn't raise
4242 # an error.
43+ self .assertGreater (resource .RLIM_INFINITY , 0 )
4344 self .assertEqual (resource .RLIM_INFINITY , max )
45+ self .assertLessEqual (cur , max )
46+ resource .setrlimit (resource .RLIMIT_FSIZE , (max , max ))
4447 resource .setrlimit (resource .RLIMIT_FSIZE , (cur , max ))
4548
4649 @unittest .skipIf (sys .platform == "vxworks" ,
@@ -113,56 +116,53 @@ def test_fsize_not_too_big(self):
113116 self .addCleanup (resource .setrlimit , resource .RLIMIT_FSIZE , (cur , max ))
114117
115118 def expected (cur ):
116- if resource .RLIM_INFINITY < 0 :
117- return [(cur , max ), (resource .RLIM_INFINITY , max )]
118- elif resource .RLIM_INFINITY < cur :
119- return [(resource .RLIM_INFINITY , max )]
120- else :
121- return [(cur , max )]
119+ return (min (cur , resource .RLIM_INFINITY ), max )
122120
123121 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 - 5 , max ))
124122 self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 31 - 5 , max ))
123+ resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 , max ))
124+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 31 ))
125+ resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 - 5 , max ))
126+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 32 - 5 ))
125127
126128 try :
127129 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 , max ))
128130 except OverflowError :
129- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 , max ))
130- self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 31 ))
131- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 - 5 , max ))
132- self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 32 - 5 ))
131+ pass
133132 else :
134- self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 32 ))
135- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 , max ))
136- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 31 , max ))
137- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 - 5 , max ))
138- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 32 - 5 , max ))
133+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 32 ))
139134
140135 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 - 5 , max ))
141- self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 - 5 ))
136+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 - 5 ))
142137 try :
143138 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 , max ))
144139 except ValueError :
145140 # There is a hard limit on macOS.
146141 pass
147142 else :
148- self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
143+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
149144 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 64 - 5 , max ))
150- self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 64 - 5 ))
145+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 64 - 5 ))
151146
152147 @unittest .skipIf (sys .platform == "vxworks" ,
153148 "setting RLIMIT_FSIZE is not supported on VxWorks" )
154149 @unittest .skipUnless (hasattr (resource , 'RLIMIT_FSIZE' ), 'requires resource.RLIMIT_FSIZE' )
155150 def test_fsize_negative (self ):
151+ self .assertGreater (resource .RLIM_INFINITY , 0 )
156152 (cur , max ) = resource .getrlimit (resource .RLIMIT_FSIZE )
157153 for value in - 5 , - 2 ** 31 , - 2 ** 32 - 5 , - 2 ** 63 , - 2 ** 64 - 5 , - 2 ** 1000 :
158154 with self .subTest (value = value ):
159- # This test assumes that the values don't map to RLIM_INFINITY,
160- # though Posix doesn't guarantee it.
161- self .assertNotEqual (value , resource .RLIM_INFINITY )
162-
163155 self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (value , max ))
164156 self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (cur , value ))
165157
158+ if resource .RLIM_INFINITY in (2 ** 32 - 3 , 2 ** 32 - 1 , 2 ** 64 - 3 , 2 ** 64 - 1 ):
159+ value = (resource .RLIM_INFINITY & 0xffff ) - 0x10000
160+ with self .assertWarnsRegex (DeprecationWarning , "RLIM_INFINITY" ):
161+ resource .setrlimit (resource .RLIMIT_FSIZE , (value , max ))
162+ with self .assertWarnsRegex (DeprecationWarning , "RLIM_INFINITY" ):
163+ resource .setrlimit (resource .RLIMIT_FSIZE , (cur , value ))
164+
165+
166166 @unittest .skipUnless (hasattr (resource , "getrusage" ), "needs getrusage" )
167167 def test_getrusage (self ):
168168 self .assertRaises (TypeError , resource .getrusage )
0 commit comments