@@ -40,10 +40,7 @@ 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 )
4443 self .assertEqual (resource .RLIM_INFINITY , max )
45- self .assertLessEqual (cur , max )
46- resource .setrlimit (resource .RLIMIT_FSIZE , (max , max ))
4744 resource .setrlimit (resource .RLIMIT_FSIZE , (cur , max ))
4845
4946 @unittest .skipIf (sys .platform == "vxworks" ,
@@ -116,53 +113,56 @@ def test_fsize_not_too_big(self):
116113 self .addCleanup (resource .setrlimit , resource .RLIMIT_FSIZE , (cur , max ))
117114
118115 def expected (cur ):
119- return (min (cur , resource .RLIM_INFINITY ), max )
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 )]
120122
121123 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 - 5 , max ))
122124 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 ))
127125
128126 try :
129127 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 , max ))
130128 except OverflowError :
131- pass
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 ))
132133 else :
133- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 32 ))
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 ))
134139
135140 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 - 5 , max ))
136- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 - 5 ))
141+ self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 - 5 ))
137142 try :
138143 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 , max ))
139144 except ValueError :
140145 # There is a hard limit on macOS.
141146 pass
142147 else :
143- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
148+ self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
144149 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 64 - 5 , max ))
145- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 64 - 5 ))
150+ self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 64 - 5 ))
146151
147152 @unittest .skipIf (sys .platform == "vxworks" ,
148153 "setting RLIMIT_FSIZE is not supported on VxWorks" )
149154 @unittest .skipUnless (hasattr (resource , 'RLIMIT_FSIZE' ), 'requires resource.RLIMIT_FSIZE' )
150155 def test_fsize_negative (self ):
151- self .assertGreater (resource .RLIM_INFINITY , 0 )
152156 (cur , max ) = resource .getrlimit (resource .RLIMIT_FSIZE )
153157 for value in - 5 , - 2 ** 31 , - 2 ** 32 - 5 , - 2 ** 63 , - 2 ** 64 - 5 , - 2 ** 1000 :
154158 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+
155163 self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (value , max ))
156164 self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (cur , value ))
157165
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