@@ -40,7 +40,10 @@ 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 )
43
44
self .assertEqual (resource .RLIM_INFINITY , max )
45
+ self .assertLessEqual (cur , max )
46
+ resource .setrlimit (resource .RLIMIT_FSIZE , (max , max ))
44
47
resource .setrlimit (resource .RLIMIT_FSIZE , (cur , max ))
45
48
46
49
@unittest .skipIf (sys .platform == "vxworks" ,
@@ -113,56 +116,53 @@ def test_fsize_not_too_big(self):
113
116
self .addCleanup (resource .setrlimit , resource .RLIMIT_FSIZE , (cur , max ))
114
117
115
118
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 )
122
120
123
121
resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 31 - 5 , max ))
124
122
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 ))
125
127
126
128
try :
127
129
resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 32 , max ))
128
130
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
133
132
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 ))
139
134
140
135
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 ))
142
137
try :
143
138
resource .setrlimit (resource .RLIMIT_FSIZE , (2 ** 63 , max ))
144
139
except ValueError :
145
140
# There is a hard limit on macOS.
146
141
pass
147
142
else :
148
- self .assertIn (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
143
+ self .assertEqual (resource .getrlimit (resource .RLIMIT_FSIZE ), expected (2 ** 63 ))
149
144
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 ))
151
146
152
147
@unittest .skipIf (sys .platform == "vxworks" ,
153
148
"setting RLIMIT_FSIZE is not supported on VxWorks" )
154
149
@unittest .skipUnless (hasattr (resource , 'RLIMIT_FSIZE' ), 'requires resource.RLIMIT_FSIZE' )
155
150
def test_fsize_negative (self ):
151
+ self .assertGreater (resource .RLIM_INFINITY , 0 )
156
152
(cur , max ) = resource .getrlimit (resource .RLIMIT_FSIZE )
157
153
for value in - 5 , - 2 ** 31 , - 2 ** 32 - 5 , - 2 ** 63 , - 2 ** 64 - 5 , - 2 ** 1000 :
158
154
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
-
163
155
self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (value , max ))
164
156
self .assertRaises (ValueError , resource .setrlimit , resource .RLIMIT_FSIZE , (cur , value ))
165
157
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