@@ -112,37 +112,49 @@ def test_fsize_not_too_big(self):
112112 (cur , max ) = resource .getrlimit (resource .RLIMIT_FSIZE )
113113 self .addCleanup (resource .setrlimit , resource .RLIMIT_FSIZE , (cur , max ))
114114
115- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 - 1 , max ))
116- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 31 - 1 , max ))
117- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 , max ))
118- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 31 , max ))
119- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 - 2 , max ))
120- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 32 - 2 , max ))
115+ 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 )]
122+
123+ resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 - 5 , max ))
124+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 31 - 5 , max ))
121125
122126 try :
123127 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 , max ))
124128 except OverflowError :
125- 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 ))
126133 else :
127- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 32 , max ))
128- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 - 1 , max ))
129- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 63 - 1 , max ))
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 ))
139+
140+ resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 - 5 , max ))
141+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 63 - 5 , max ))
130142 try :
131143 resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 , max ))
132144 except ValueError :
133145 # There is a hard limit on macOS.
134146 pass
135147 else :
136- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 63 , max ))
137- resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 64 - 2 , max ))
138- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), (2 ** 64 - 2 , max ))
148+ self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
149+ resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 64 - 5 , max ))
150+ self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 64 - 5 ))
139151
140152 @unittest .skipIf (sys .platform == "vxworks" ,
141153 "setting RLIMIT_FSIZE is not supported on VxWorks" )
142154 @unittest .skipUnless (hasattr (resource , 'RLIMIT_FSIZE' ), 'requires resource.RLIMIT_FSIZE' )
143155 def test_fsize_negative (self ):
144156 (cur , max ) = resource .getrlimit (resource .RLIMIT_FSIZE )
145- for value in - 2 , - 2 ** 31 , - 2 ** 32 - 1 , - 2 ** 63 , - 2 ** 64 - 1 , - 2 ** 1000 :
157+ for value in - 5 , - 2 ** 31 , - 2 ** 32 - 5 , - 2 ** 63 , - 2 ** 64 - 5 , - 2 ** 1000 :
146158 with self .subTest (value = value ):
147159 self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (value , max ))
148160 self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (cur , value ))
0 commit comments