@@ -40,10 +40,7 @@ def test_fsize_ismax(self):
40
40
# we need to test that the get/setrlimit functions properly convert
41
41
# the number to a C long long and that the conversion doesn't raise
42
42
# an error.
43
- self .assertGreater (resource .RLIM_INFINITY , 0 )
44
43
self .assertEqual (resource .RLIM_INFINITY , max )
45
- self .assertLessEqual (cur , max )
46
- resource .setrlimit (resource .RLIMIT_FSIZE , (max , max ))
47
44
resource .setrlimit (resource .RLIMIT_FSIZE , (cur , max ))
48
45
49
46
@unittest .skipIf (sys .platform == "vxworks" ,
@@ -116,53 +113,56 @@ def test_fsize_not_too_big(self):
116
113
self .addCleanup (resource .setrlimit , resource .RLIMIT_FSIZE , (cur , max ))
117
114
118
115
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 )]
120
122
121
123
resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 - 5 , max ))
122
124
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 ))
127
125
128
126
try :
129
127
resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 , max ))
130
128
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 ))
132
133
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 ))
134
139
135
140
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 ))
137
142
try :
138
143
resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 , max ))
139
144
except ValueError :
140
145
# There is a hard limit on macOS.
141
146
pass
142
147
else :
143
- self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
148
+ self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
144
149
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 ))
146
151
147
152
@unittest .skipIf (sys .platform == "vxworks" ,
148
153
"setting RLIMIT_FSIZE is not supported on VxWorks" )
149
154
@unittest .skipUnless (hasattr (resource , 'RLIMIT_FSIZE' ), 'requires resource.RLIMIT_FSIZE' )
150
155
def test_fsize_negative (self ):
151
- self .assertGreater (resource .RLIM_INFINITY , 0 )
152
156
(cur , max ) = resource .getrlimit (resource .RLIMIT_FSIZE )
153
157
for value in - 5 , - 2 ** 31 , - 2 ** 32 - 5 , - 2 ** 63 , - 2 ** 64 - 5 , - 2 ** 1000 :
154
158
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
+
155
163
self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (value , max ))
156
164
self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (cur , value ))
157
165
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
-
166
166
@unittest .skipUnless (hasattr (resource , "getrusage" ), "needs getrusage" )
167
167
def test_getrusage (self ):
168
168
self .assertRaises (TypeError , resource .getrusage )
0 commit comments